docker 容器中的 运行 ROS 和同一 docker 网络(非主机网络)中另一个 docker 容器中的 echo/pub

Running ROS in docker container and echo/pub from another docker container within same docker network (non-host network)

我正在 运行 在一个 docker 容器中使用 ROS,并尝试使用 rosnode 列表检查来自另一个容器的信息,它们都在同一个自定义 docker 网络下(非主持人)。

从 docker 方面来看,我很确定其中两个容器可以相互通信,因为我已经尝试从 container2 ping container1 不丢失任何数据包。

container1 IP为172.22.0.2,container2 IP为172.22.0.3

我已经将两个容器的配置设置如下:

容器 1 export ROS_IP=172.22.0.2 export ROS_MASTER_URL=http://172.22.0.2:11311/

容器 2 export ROS_IP=172.22.0.3 export ROS_MASTER_URL=http://172.22.0.2:11311/

之后,我开始在container1上运行 roscore,在container2上输入命令rosnode list,但是container2显示错误信息:Unable to communicate with master!

似乎即使我为两个容器都设置了 ros master url,我仍然无法在容器之间共享相同的 roscore。

是否有任何遗漏或我做的不正确?

您需要的环境变量是 ROS_MASTER_URI 而不是 ROS_MASTER_URL。前者设置为主IP。