[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

相关文章

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

Python中的输入输出与注释教程

《Python中的输入输出与注释教程》:本文主要介绍Python中的输入输出与注释教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、print 输出功能1. 基础用法2. 多参数输出3. 格式化输出4. 换行控制二、input 输入功能1. 基础用法2. 类

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己