ROS多机通讯踩坑,(主机和从机之间可以订阅话题,但是看不到话题消息)

本文详细介绍了在ROS环境中配置多机通讯的过程,包括如何在主机和从机上正确设置hosts文件,以及如何在从机上设置环境变量,如ROS_HOSTNAME、ROS_IP和ROS_MASTER_URI,以确保两台机器可以互相接收话题信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行ROS分布式通讯的时候,已经设置好HOST 而且指定master地址
在树莓派上能够使用rostopic list 查看话题列表,
但是,监听话题时rostopic echo /chatter没有内容

一,配置前准备

配置多机通讯时,需要明确自己哪个为master
我这里为树莓派作为从机,笔记本作为主机即master

这里需要查看本机与从机的hostname与ip

  • 查看hostname终端输入:
hostname
  • 输入ifconfig查看局域网ip:
ifconfig

我这里查到:
树莓派(从机)hostname:raspi ip:10.12.50.8
笔记本(master)hostname:chengyangkj-master ip:10.12.50.1

二,配置多机通讯

查阅相关资料,我发现我出现如下错误:
1,在主机设置从机的host信息(非常重要 名字不能乱改)

  • host文件作用:
    系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。

  • 更改host文件
    在主机上

    sudo nano /etc/hosts
    
  • 添加本机ip与hostname
    注意这里,10.12.50.1是刚查询到的我的主机本地ip地址,并且chengyangkj-master是刚查询到的主机hostname
    在这里插入图片描述

  • 添加从机hostname与ip
    刚查询到的我的从机(树莓派)地址为
    10.12.50.8 名字叫raspi 同理也填入

2,在从机上设置主机的host信息

sudo nano /etc/hosts

从机(树莓派)中同理也填入这两个hostname与ip:
在这里插入图片描述
可以看到这里我的树莓派主机名叫raspi,所以在主机中应该名字填写raspi,主机叫chengyangkj-master,这里也应该这样填,host名字在网络中作为一种标识,所以不能乱填,我最开始乱填,导致监听不到话题信息,同时注意如果网络环境改变的话需要及时去更新hosts文件中的IP

3,在从机中环境变量设置ROS master地址及本机ip

 sudo nano ~/.bashrc

最后加上:

  • ROS_HOSTNAME
    填本机的host名称,就是刚刚查询到的从机的hostname
    export ROS_HOSTNAME=raspi
    
  • ROS_IP
    填本机IP,这里也就是刚查询到的从机IP(我这里是10.12.50.8),如果配置了ROS_HOSTNAME就不需要配置ROS_IP了,因为ROS_HOSTNAME会自动映射为IP,两个比较起来使用ROS_HOSTNAME比较灵活,因为如果网络环境改变了话只更新hosts文件即可,不用去更新环境变量文件了
      export ROS_IP=10.12.50.8
    
  • ROS_MASTER_URI
    填mast的地址,这里我笔记本当作master,所以写http://chengyangkj-master:11311
    export ROS_MASTER_URI=http://chengyangkj-master:11311
    

最终配置:
在这里插入图片描述

这样就能成功的互相接受到话题信息了

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值