拓冰建站拓冰建站
首页 / 资讯中心 / 正文

193、多机通信与分布式部署:ROS2 DDS与gRPC在多机器人协同

193、多机通信与分布式部署:ROS2 DDS与gRPC在多机器人协同昨晚在实验室调三台机器人的协同搬运,折腾到凌晨两点。问题出在ROS2的DDS发现机制上——三台机器人在同一个Wi-Fi下,节点互相看不到。我一度以为是防火墙问题,后来发现是DDS的发现协议默认走多播,而实验室的AP禁用了多播。这种问题在仿真里永远遇不到,一上真机就现原形。今天就把多机通信这块的坑和解决方案捋一遍。先说结论:ROS2的DDS适合机器人内部的实时通信,但跨机器人、跨网段的场景,gRPC往往更省心。不是二选一,而是各司其职。DDS的发现机制:为什么三台机器人互相看不见ROS2默认用Fast DDS,节点启动时会通过UDP多播发送发现报文。同一台机器上没问题,因为回环接口支持多播。但跨机器时,如果交换机或AP禁用了多播,节点就永远发现不了对方。我当时排查的步骤是这样的:先ros2 node list看本机节点是否正常,再ros2 topic list看话题是否发布。本机一切正常,但另一台机器上的节点就是看不到。用tcpdump抓包,发现多播报文根本没发出去。解决办法有几个:方案一:指定单播发现。在fastdds.xml配置文件里,把发现协议改成SIMPLE,并手动指定对端IP。这个方案适合固定拓扑,比如三台机器人IP固定,直接写死。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门