[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,那么多机通信就配置成功了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/442635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

运动想象 (MI) 迁移学习系列 (2) :TDLNet

运动想象迁移学习系列:TDLNet 0. 引言1. 主要贡献2. 网络介绍2.1 TDM模块2.2 Inception模块2.3 RAMM模块 3. 特征可视化算法4. 结果4.1 消融实验4.2 与基于CNN的参考和迁移学习方法的比较4.3 基于遮挡信号频率的特征可视化 5. 总结欢迎来稿 论文地址:https://ieeex…

委员建议进一步扩大香港与内地金融市场互联互通发展

在我们共同追寻金融发展的星辰大海之际,我怀着无比激动的心情,向诸位委员提议进一步扩大香港与内地金融市场互联互通发展。这个议题犹如一颗璀璨的明珠,闪耀着诱人的光芒,吸引着我们为之奋斗。让我们共同探讨这一话题,…

新版电脑QQ使用体验怎么样?最软库帮你体验!

你已经有多久没在电脑上用QQ了? 最近腾讯发布了由NT架构打造的最新版电脑QQ,彻底抛弃了以往陪伴了我们十几年的用户界面 采用了全新的用户界面,说是全新界面,其实就是风格往微信靠拢而已。 最软库本期就给大家试试新QQ&#xff0c…

基于MPPT的太阳能光伏电池simulink性能仿真,对比扰动观察法,增量电导法,恒定电压法

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 扰动观察法 (Perturb and Observe Method) 4.2 增量电导法 (Incremental Conductance Method) 4.3 恒定电压法 (Constant Voltage Method) 5.完整工程文件 1.课题概述 在simulink中,实…

2024年阿里云服务器新版计算器上线了,报价不求人

阿里云服务器价格计算器,鼠标选择云服务器ECS实例规格、地域、系统盘、带宽及购买时长即可一键计算出精准报价,报价不求人使用计算器自己查,报价清单支持下载。阿里云服务器网aliyunfuwuqi.com分享阿里云服务器价格计算器链接地址&#xff1a…

前端面试练习24.3.8

防抖和节流 防抖(Debouncing): 防抖是指在短时间内连续触发同一事件时,只执行最后一次触发的事件处理函数。 在实际应用中,常常用于处理用户输入的搜索框或者滚动事件。例如,当用户连续输入搜索关键词时&am…

【Redis】redis的基本使用

📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的概述 为什么要有redis? redis是数据库,mysql也是数据库,redis做缓存的意义就是为了减轻数据库压力 数据库为什么…

Android Studio轮播图使用失败怎么办【已解决】

Android Studio轮播图使用失败怎么办 1.在gethub上面搜索轮播图 2.选择要使用的轮播图 3.查看该轮播图的配置方法 4.复制该依赖放入build.gradle中 5.重新构建 6.使用banner 发现没有报错了 7.参考网址 https://github.com/youth5201314/banner

element---tree树形结构(返回的数据与官方的不一样)

项目中要用到属性结构数据&#xff0c;后端返回的数据不是官方默认的数据结构&#xff1a; <el-tree:data"treeData":filter-node-method"filterNode":props"defaultProps"node-click"handleNodeClick"></el-tree>这是文档…

零、自然语言处理开篇

目录 0、NLP任务的基础——符号向量化 0.0 词袋模型 0.1 查表/One-hot编码 0.2 词嵌入模型/预训练模型 0.2.0 Word2Vec &#xff08;0&#xff09;CBOW &#xff08;1&#xff09;Skip-gram 0.2.1 GloVe 0.2.2 WordPiece 0.2.3 BERT 0.2.4 ERNIE NLP自然语言处理&am…

投放项目到github仓库(代码集合)

1 假设你的项目文件夹为Project1 &#xff0c;那么代开Project1后 右键选择打开Git Bash 2输入初始化本地仓库 git init 3输入git add . (.表示全部&#xff0c;当然也可以部分选取&#xff0c;请自行百度) 4输入 git remote add origin https://github.com/********.git(网…

GitHub和Gitee的基本使用和在IDEA中的集成

文章目录 【1】GitHub1.创建仓库2.增加和修改文件3.创建分支4.删除仓库5.远程仓库下载到本地 【2】Gitee1.创建仓库2.远程仓库下载到本地. 【3】IDEA集成GitHub【4】IDEA集成Gitee1.在Gitee中修改&#xff0c;同步到本地2.从Gitee中下载项目 【1】GitHub 1.创建仓库 先登陆这…

LeetCode每日一题之 寻找数组中心下标

题目介绍&#xff1a; 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 算法原理: 这道题仍然可以使用前缀和的思想来求解&#xff0c;不理解基础前缀和模板的可以看我前面的博客&#xff0c;上图中0-2号位元素的和可以很好地用前缀和数组求出&#xff0c;而后…

系统安全保证措施-word

【系统安全保证措施-各支撑材料直接套用】 一、 身份鉴别 二、 访问控制 三、 通信完整性、保密性 四、 抗抵赖 五、 数据完整性 六、 数据保密性 七、 应用安全支撑系统设计 软件全套资料下载进主页。

智慧公厕系统的运作过程

智慧公厕是一种新型的未来城市公共厕所&#xff0c;通过物联网、互联网、大数据、云计算、自动化控制等技术&#xff0c;实现公共厕所使用、运营、管理、养护的全过程全方位信息化。 那么&#xff0c;智慧公厕是如何运作的&#xff1f;智慧公厕的运作过程包括什么技术&#xf…

广度优先搜索和深度优先搜索

广度优先搜索 广度优先搜索&#xff08;Breadth-First-Search&#xff0c;BFS&#xff09;类似于二叉树的层序遍历算法&#xff08;借助队列&#xff09;&#xff0c;其基本思想是&#xff1a;首先访问起始顶点&#xff0c;接着由v出发&#xff0c;依次访问v的各个未访问过的邻…

【LeetCode: 212. 单词搜索 II - dfs】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

基于SSM框架的商场导视系统设计与实现

目 录 摘 要 1 Abstract 2 引 言 3 1 系统开发相关技术 5 1.1 框架技术 5 1.1.1Spring框架 5 1.1.2Mybatis框架 5 1.1.3SpringMVC框架 6 1.2 MySQL数据库 7 1.3前端技术 7 1.3.1ECharts图表技术 7 1.3.2bookstorp框架技术 8 1.4 本章小结 8 2 系统需求分析 9 2.1 系统需求实现…

ThreadLocal源码分析

简介 ThreadLocal是JDK提供的&#xff0c;支持线程本地变量。也就是说&#xff0c;如果我们创建了一个ThreadLocal变量&#xff0c;则访问这个变量的每个线程都会有这个变量的一个本地副本。如果多个线程同时对这个变量进行读写操作时&#xff0c;实际上操作的是线程自己本地内…

内存映射实现父子进程通信

创建内存映射区&#xff1a; void *mmap(void *addr ,size_t length,int prot,int flags,int fd,off_t offset); 参数&#xff1a; addr 指定映射区的首地址。通常NULL&#xff0c;表示让系统自动分配length 共享内存映射区的长度prot 共享内存的读写属性 PROT_READ PR…