我在 Agx Xavier 上启动了一个容器,在容器里面部署了 ros 程序。因为容器里面显示rviz 暂时还有点问题,所以只好放到 Xavier 宿主机上来显示。这就涉及到容器和宿主机之间的ros多机通信。
这里的配置也是极其的简单的,我暂且在这里记录一下。
我是以--net host 的方式启动的容器,容器的网络会附属在主机上,两者是互通的。下面我先列出宿主机和容器和主机名和 ip 信息。
1、基本信息
【宿主机】
主机名:nvidia-desktop
IP: 172.17.0.1
【容器】
主机名:ff2ae4aa882a
IP: 172.17.0.2
2. 配置
先配置 ROS Master,也就是容器,因为我是要在宿主机上订阅ROS Master 的消息。总共就2步:
step1: 在/etc/hosts 中加入宿主机(ROS Slave)主机名和 ip 的对应关系。
step2: 在.bashrc 中设置ROS_MASTER_URI。
然后 source 一下让。
再配置 ROS Slave,也就是宿主机,同样也是2步:
step1:在/etc/hosts 中加入容器主机名和 ip 的对应关系。
step2:在.bashrc 中设置 ROS_MASTER_URI。
同样,source一下,生其生效。
3. 测试
好了,现在在容器上启动 ros core,启动节点发布消息,在宿主机上就可以订阅消息了。