我正在一个 docker 容器中运行 ROS,并尝试通过 rosnode list 检查来自另一个容器的信息,这两个容器都位于同一自定义 docker 网络(非主机)下。
从 Docker 端来看,我非常确定两个容器可以相互通信,因为我已尝试从容器 2 中ping 容器 1
而不会丢失任何数据包。
容器 1 IP 为 172.22.0.2
,容器 2 IP 为 172.22.0.3
我已将两个容器的配置设置如下:
container1 导出ROS_IP=172.22.0.2 导出ROS_MASTER_URL=http://172.22.0.2:11311/
container2 导出ROS_IP=172.22.0.3 导出ROS_MASTER_URL=http://172.22.0.2:11311/
之后,我开始在container1上运行roscore
并在container2上输入命令rosnode list
,但是container2显示错误消息:无法与master通信!
似乎即使我为两个容器设置了 ros master url,我仍然无法在容器之间共享相同的 roscore。
是否有任何内容可能丢失或我所做的事情不正确?
最佳答案
您需要的环境变量是ROS_MASTER_URI
而不是ROS_MASTER_URL
。将前者设置为主IP。
关于docker - 在 docker 容器中运行 ROS,并从同一 docker 网络(非主机网络)内的另一个 docker 容器运行 echo/pub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70466371/