[ROS 系列学习教程] 工作空间覆盖与多机通讯

本文详细介绍了ROS开发中的工作空间覆盖问题及其解决方案,以及如何配置ROS环境以实现分布式多机通信,包括网络连接、host文件设置和ROS环境变量的配置。
摘要由CSDN通过智能技术生成

ROS 系列学习教程(总目录)

一、工作空间覆盖

ROS开发过程中,可能同时开发多个项目,或开发项目的工作空间和已有的工作空间重名。比如有两个工作空间ws1ws2,他们中都有名为pkg的包,系统在搜索 pkg 时,要搜索哪个包呢?

ROS 会解析 ~/.bashrc 文件,并生成 ROS_PACKAGE_PATH ROS包路径环境变量,该变量中存储了工作空间的搜索优先级。优先级和 .bashrc 的配置顺序刚好相反,即后配置的优先级更高。

Note:

  1. 配置工作空间时,要注意覆盖问题
  2. 当在 .bashrc 文件中配置多个工作空间后,可能出现不在 ROS_PACKAGE_PATH 中生效的情况,此时,可以删除自定义工作空间的 build 与 devel 目录,重新 catkin_make,然后重新 source .bashrc 文件,问题解决。

二、ROS分布式多机通信

ROS是一个分布式系统,同一 ROS Master 可以同时管理分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。

因此,ROS对网络配置有某些要求:

  • 所有端口上的所有机器之间必须有完整的双向连接。
  • 每台计算机必须通过所有其他计算机都可以解析的名称来广播自己。

配置方法如下:

2.1 保证计算机之间网络可连接

首先要保证多台计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,需要将网络适配器改为桥接模式。

2.2 配置host文件

与ROS2相比,其实ROS1是伪分布式的,它需要有一个 ROS Master 作为中心节点,所以对于多台计算机,需要指定一台作为主机来运行 ROS Master,其余计算机作为从机运行其他节点。

为了让多台计算机互相能够认识对方,需要告诉主机有哪些从机,告诉从机主机是谁。通过配置 /etc/hosts 文件实现,如下:

主机端:

从机1的IP    从机1的计算机名
从机2的IP    从机2的计算机名
从机3的IP    从机3的计算机名
...

从机端:

主机的IP    主机计算机名

2.3 配置ROS环境变量

需要把主机和从机的IP与名字告诉ROS,以便 ROS Master 进行管理。编辑 ~/.bashrc 添加如下内容:

主机端:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IP

从机端:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IP

注意配置完 ~/.bashrc后, 需要 source 或重启终端使配置生效。

如果,主从机之间可以互相订阅topic或调用service,那么多机通信就配置成功了。

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万俟淋曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值