Date:2026.03.23Author:aimage一、简介基础介绍电脑A中发布了多个topic电脑B与电脑A相连电脑B中部署的是autoware的docker电脑B中有其他安装好ROS2的docker镜像。问题描述电脑B的host主机ros2 topic list可正常输出ros2 topic echo /livox/lidar可正常输出。电脑B中的autoware创建的容器aros2 topic list可正常输出ros2 topic echo /livox/lidar没有输出。电脑B中的其他镜像创建的容器bros2 topic list可正常输出ros2 topic echo /livox/lidar可正常输出。二、原因1需要保证电脑A、电脑B host、电脑B 容器a 、电脑B 容器b数据互通需要保证一些参数一致。ROS_LOCALHOST_ONLY0允许节点通过物理网络接口与其他机器上的节点进行通信。ROS_DOMAIN_ID53域只有在一个域中的node才可以通信。2查看DDS容器中执行 env | grep RMW发现容器a中的输出为RMW_IMPLEMENTATIONrmw_cyclonedds_cpp容器b中没有输出默认值为rmw_fastrtps_cpp。这两个DDS理论上兼容但共享内存、网络通讯、Qos默认值等方面略有差异会导致可以发现topic但是不能接收数据。可以发现topic接收不到数据问题点在此具体autoware为什么采用rmw_cyclonedds_cpp是由于性能的原因还是别的原因暂不清楚。三、解决方法容器中更改环境变量即可将容器a的DDS更改为rmw_fastrtps_cppunset RMW_IMPLEMENTATION export RMW_IMPLEMENTATIONrmw_fastrtps_cpp可将此变量添加到.bashrc中每次启动shell的时候自动更改为此种方式。四、唐诗鸟铭涧 王维人闲桂花落夜静春山空。月出惊山鸟时鸣春涧中。学习记录系列文章难免有纰漏欢迎您的宝贵意见五、参考[1] https://github.com/autowarefoundation/autoware