彻底搞懂ros多机通信机制

ros可以在两台机器上共享运行,我们该如何配置呢?
以我的电脑PC和嵌入式板卡RV1126进行操作:
1.首先,两台机器肯定要相互通信(有线,无线都可以),我的是无线。运行ifconfig,搞清楚两台机器的ip。
PC
在这里插入图片描述
RV1126
在这里插入图片描述
注意我的是通过usb实现的无线通信,所以rv1126的ip在usb0那里。
通过上面两张图,你已经知道
我的pc机 :
hostname = aipan-Z370-HD3
ip = 172.168.5.1
RV1126:
hostname = RV1126_RV1109
ip = 172.169.5.125
为了防止通信问题,最好各自ping一下,在pc端ping 172.168.5.125,在rv1126端ping 172.168.5.1
知道这两个信息,就可以愉快的配置了。
2. 我们要选择一台机器作为主机,也就是在哪台机器运行roscore啦。我选择RV1126作为主机,那PC就是从机。所以我们需要在两台机器上面都设置:

export ROS_MASTER_URI=http://172.168.5.125:11311

ROS_MASTER_URI就是告诉大家,master的ip地址是多少,大家才知道去哪里连接ros嘛。如果你只需要从机订阅主机消息,即单向通信,到这里就可以愉快的工作了。
3. 如果你想主机也可以订阅到从机的消息。以上设置就不够啦,在主机上面订阅从机发布的话题,话题内容会为空。那是因为我们没有设置从机的ROS_HOSTNAME,很好理解,你都不知道从机的地址,怎么能订阅到数据呢?一般我们会设置好两台机器各自的ROS_HOSTNAME(主机不设置也行,最好都设置)
PC端的配置:

export ROS_HOSTNAME=172.168.5.1
export ROS_MASTER_URI=http://172.168.5.125:11311

rv1126端的配置:

export ROS_HOSTNAME=172.168.5.125
export ROS_MASTER_URI=http://172.168.5.125:11311

这样就可以相互通信了,就这么简单!!!

  1. 如果你觉得这样写ip太麻烦了,想直接用机器的hostname代替,那么你可以在/etc/hosts 里面写入配置
    在这里插入图片描述
    这个配置纯粹是让机器知道名字对应的ip, 比如RV1126_RV1109对应的ip是172.168.5.125
    那么你在ros的配置就可写成:
    PC端的配置:
export ROS_HOSTNAME=aipan-Z370-HD3
export ROS_MASTER_URI=http://RV1126_RV1109:11311

rv1126端的配置:

export ROS_HOSTNAME=RV1126_RV1109
export ROS_MASTER_URI=http://RV1126_RV1109:11311
  1. 如果哪天你不想多机交互了,想单机运行了,切记把配置改回来呀,不然roscore就会报错。
    在这里插入图片描述
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

这样你就又可以愉快的单机运行了。

设置写在哪个文件里?pc上面一般是在home目录下面的.bashrc里面,嵌入式的可能因人而异。这就是环境变量的配置,写在可以配置环境变量的文件里都可以。

  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值