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

2024-03-09 20:44

本文主要是介绍[ROS 系列学习教程] 工作空间覆盖与多机通讯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

本文目录

  • 一、工作空间覆盖
  • 二、ROS分布式多机通信
    • 2.1 保证计算机之间网络可连接
    • 2.2 配置host文件
    • 2.3 配置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,那么多机通信就配置成功了。

这篇关于[ROS 系列学习教程] 工作空间覆盖与多机通讯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791896

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解