ROS2-第十七章:网络通信,win11系统 通过镜像配置 打通 WSL 下的ros2与 同局域网(同IP段)的里其它设备上的ros2通信

win11系统 通过镜像配置 打通 WSL 下的ros2与 同IP端的里一台设备ros2通信;

一、win11 设备 先关闭wsl 关闭指令 wsl --shutdown;

二、win11 设备端 修改 .wslconfig 文件路径:C:\Users\LHAYR\.wslconfig

wsl2

processors=12

swapFile=D:\\AvM\\swap.vhdx

debugConsole=true

networkingMode=mirrored

dnsTunneling=true

firewall=true

autoProxy=true

三、win11电脑重新启动 WSL ,启动完成后 再wsl Ubuntu里验证是否修改成功,输入 ip a | grep eth

正常修改成功后,wsl 会出现192.168.1.X的 IPv4的地址(和你电脑win11 端地址同网段);

复制代码
robot@LHAYR:~$ ip a | grep eth
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether c2:bf:be:8f:31:7e brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 60:cf:84:c2:54:1a brd ff:ff:ff:ff:ff:ff
    link/ether 00:15:5d:a4:b8:f8 brd ff:ff:ff:ff:ff:ff
5: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc mq state UP group default qlen 1000
    link/ether bc:9d:ec:34:1f:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.6/24 brd 192.168.1.255 scope global noprefixroute eth2
6: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether c2:bf:be:8f:21:6e brd ff:ff:ff:ff:ff:ff

四、win11电脑 设置ros2 的域ID,只有 DOMain ID 相同的节点,才能互相发现,收发话题;

复制代码
robot@LHAYR:~$ source /opt/ros/jazzy/setup.bash
robot@LHAYR:~$ export ROS_DOMAIN_ID=0

五、运行demo接收

robot@LHAYR:~$ ros2 run demo_nodes_py listener

六、 其它设备:再同一个路由器或者IP网段下,另一台设备运行 ros2(版本相同,这里使用的是jazzy版本); 先设置export ROS_DOMAIN_ID=0;

robot@armbian:~$ source /opt/ros/jazzy/setup.bash

robot@armbian:~$ export ROS_DOMAIN_ID=0

robot@armbian:~$ export ROS_IP=192.168.1.84

七、其它设备:运行发送demo。

robot@armbian:~$ ros2 run demo_nodes_cpp talker

INFO 1786962160.159081428 talker: Publishing: 'Hello World: 1'

INFO 1786962161.159048127 talker: Publishing: 'Hello World: 2'

INFO 1786962162.159064909 talker: Publishing: 'Hello World: 3'

INFO 1786962163.159050941 talker: Publishing: 'Hello World: 4'

INFO 1786962164.159407807 talker: Publishing: 'Hello World: 5'

INFO 1786962165.159384131 talker: Publishing: 'Hello World: 6'

八、 win11设备,会接收到 发送的数据

robot@LHAYR:~$ ros2 run demo_nodes_py listener

INFO\] \[1786962199.409450095\] \[listener\]: I heard: \[Hello World: 40

INFO\] \[1786962200.404100320\] \[listener\]: I heard: \[Hello World: 41

INFO\] \[1786962201.403400571\] \[listener\]: I heard: \[Hello World: 42

INFO\] \[1786962202.404231047\] \[listener\]: I heard: \[Hello World: 43

INFO\] \[1786962203.403598134\] \[listener\]: I heard: \[Hello World: 44

INFO\] \[1786962204.406740564\] \[listener\]: I heard: \[Hello World: 45

INFO\] \[1786962205.403906505\] \[listener\]: I heard: \[Hello World: 46

十、备注 如果 win11 设备 没有显示接收到的 Hello World 信息;

如果还是收不到消息怎么办? 在镜像模式下,如果 talker 和 listener 依然无法通信,99% 是 Windows 防火墙拦截了 UDP 广播包。

10.1快速验证方法:1在 Windows 上暂时关闭"专用网络"的防火墙。

重新测试 talker 和 listener。

如果关闭防火墙后能收到消息,说明就是防火墙的问题。你可以重新开启防火墙,并手动添加入站规则放行 UDP 端口。

十一、设置win11系统的防火窗放行:

第一步:永久放行 ROS2 通信(恢复防火墙)

你现在可以重新打开 Windows 防火墙了。为了防止被拦截,我们需要在防火墙中为 ROS2 添加专门的放行规则。

请在 Windows PowerShell(以管理员身份运行) 中执行以下命令:

1. 放行 ROS2 发现机制(UDP 多播)

New-NetFirewallRule -DisplayName "ROS2 DDS Discovery (UDP)" -Direction Inbound -Protocol UDP -LocalPort 7400-7500 -Action Allow

2. 放行 ROS2 数据传输(TCP)

New-NetFirewallRule -DisplayName "ROS2 DDS Data (TCP)" -Direction Inbound -Protocol TCP -LocalPort 7400-7500 -Action Allow

3. 允许 WSL2 虚拟交换机通过防火墙(关键!)

New-NetFirewallRule -DisplayName "WSL2 vEthernet" -Direction Inbound -InterfaceAlias "vEthernet (WSL*)" -Action Allow

第二步:持久化 ROS2 环境变量

为了避免每次打开终端都要手动输入 export,我们把配置写入 ~/.bashrc。

  1. 在 WSL2 终端中执行:

echo 'export ROS_DOMAIN_ID=0' >> ~/.bashrc

source ~/.bashrc

  1. 在里一个终端设备上执行(上述6、7步骤中发送设备):

echo 'export ROS_DOMAIN_ID=0' >> ~/.bashrc

echo 'export ROS_IP=192.168.1.84' >> ~/.bashrc

source ~/.bashrc

相关推荐
蓝天居士12 小时前
EtherCAT从入门到精通(7)
机器人·嵌入式·ethercat
蓝天居士15 小时前
EtherCAT从入门到精通(10)
机器人·嵌入式·ethercat
敢敢のwings16 小时前
Long-WAM 深度解析:机器人怎样记住过去、预测未来,并及时完成下一段动作
机器人
敢敢のwings21 小时前
从 VPP 到 VPP2:让机器人看懂未来,再把未来变成动作
机器人
小lo想吃棒棒糖1 天前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
天树星智源1 天前
机器人 VLA 一个模型同时动手和动脑:动作参数只占 0.21%,万级扰动任务 85.9%
论文阅读·机器人·vla·全身控制
lisw051 天前
基于神经网络的机器人导航系统的设计与执行!
神经网络·机器人·自动化
敢敢のwings1 天前
机器人如何通过触觉认识物体:从材质分类到接触状态判断
分类·机器人·材质
米糕闯编程2 天前
鱼香ros2(二十五)导航
机器人·slam·ros2·launch·navigation2
猫先生Mr.Mao2 天前
RoboRSI详解:机器人自进化为什么需要任务结构和技能边界
机器人·多智能体·论文解读·具身智能·自进化·roborsi