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

相关推荐
明志数科11 小时前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
微小冷12 小时前
Python凸优化cvxpy初步
python·机器人·凸优化·数学规划·cvxpy
XMAIPC_Robot16 小时前
CODESYS 实时控制 + RK182X 大模型算力扩展|RK3576 工业边缘控制器设计
人工智能·fpga开发·机器人·rk3588+fpga
福建清洁设备厂家16 小时前
福建洗地机哪个牌子好?工厂物业商用清洁设备选型指南
机器人·洗地机·清洁设备·驾驶式洗地机·手推式洗地机·智能清洁机器人·全自动清洁机器人
初学大模型17 小时前
先剔后识:OpenCV三维预处理与YOLO语义检测协同的机器人视觉系统可行性分析
人工智能·opencv·yolo·计算机视觉·机器人
PascalXie18 小时前
水下机器人除了声纳,还能用什么感知方案?
计算机视觉·机器人
xwz小王子18 小时前
中科院自动化所、智源等 | DIDO:世界动作模型告别多步去噪,交互动态蒸馏进单步,性能不降反增,推理提速32%!
机器人
硅谷秋水18 小时前
RoboEdit:将人类操作视频转化为可扩展的机器人经验
人工智能·机器学习·计算机视觉·机器人
阿尔法工场研究院19 小时前
宇树们不想重蹈新造车的覆辙
大数据·人工智能·科技·机器人
老张老张19 小时前
具身智能三大核心赛道
机器人·具身智能