Docker与ROS分布式通信

主机:docker镜像文件

从机:本电脑

一、设置IP地址

1.确定ROS多机系统均处于同一网络

docker run -it -p 11311:11311 容器名 /bin/bash     #进入容器

主机:输入ifconfig

注:若显示ifconfig: command not found,输入apt-get install net-tools

  从机:输入ifconfig

2.分别在主从机的/etc/hosts文件中加入对方的IP地址和对应的计算机名

主机:输入vim /etc/hosts

注:若显示vim: command not found,输入apt-get install vim

在文件末尾添加从机IP地址和对应的计算机名

192.168.109.160 从机的hostname

从机:输入 sudo gedit /etc/hosts

在文件末尾添加主机IP地址和对应的容器ID

172.31.0.2 容器ID

还有从机IP和对应的计算机名

192.168.109.160 hostname

设置完毕后,分别在容器和主机下使用ping命令测试网络是否联通。如果双向网络都畅通,就说明底层网络的通信已经没问题。

注:若显示ping: command not found,输入apt-get install inetutils-ping -y

二、设置ROS_MASTER_URI

1.主机设置

在主机终端上输入:

vim ~/.bashrc

在文件末尾添加:

export ROS_MASTER_URI=http://容器ID:11311

export ROS_HOSTNAME=容器ID

保存后,输入:

source ~/.bashrc

2.从机设置

在主机终端上输入:

sudo gedit ~/.bashrc

在结尾处添加:

export ROS_MASTER_URI=http://容器ID:11311

export ROS_HOSTNAME=从机hostname

export ROS_IP=从机IP

然后保存文件,在终端输入

source ~/.bashrc

source /etc/init.d/networking

三、最终测试

首先在容器内启动ros节点,在从机(本机)输入rostopic list可查看到相关话题。

然后在从机(本机)启动launch文件,查看到对应的的节点关系图。

测试成功。

四、注意

docker运行后,VTD可能无法运行,这需要进一步的网络配置,后续会继续更新。

五、参考链接

1. ROS多机通讯(unable to communicate with master 解决)_kuai-的博客-CSDN博客https://blog.csdn.net/qq_43481884/article/details/108895044

2.(21条消息) ROS_MASTER_URI和ROS_IP的作用_Jili_nekosensei的博客-CSDN博客_ros_master_urihttps://blog.csdn.net/weixin_45664449/article/details/103578210?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

3.(21条消息) ROS多机通讯踩坑,(主机和从机之间可以订阅话题,但是看不到话题消息)_蒋程扬的博客-CSDN博客_ros多机通信订阅不到消息https://blog.csdn.net/qq_38441692/article/details/98205852

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值