【ROS】ROS局域网下多机通讯方法

news2024/10/21 22:54:42

最近工作中需要用到多机通讯,这里稍微总结一下使用方法。

目录

一、网络配置

二、修改两个设备的hosts文件

三、修改两个ros设备的.bashrc

四、launch文件中给节点设定运行的设备


一、网络配置

首先确保两个ros设备连接到同一局域网下,然后查询两个设备的在这个局域网内的IP地址,运行:

ifconfig

这里举个例子,主机的IP地址为192.168.1.127,从机的IP地址为192.168.1.126;之后可测试一下能否互相ping通,成功后进行下一步。

二、修改两个设备的hosts文件

这里需要在主机和从机的hosts文件中分别添加对方的IP和用户名。

  • 主机端
192.168.1.126 ros_cv
  • 从机端
192.168.1.127 camar

三、修改两个ros设备的.bashrc

在ros的使用中.bashrc是一个比较常见的配置文件,主要是修改终端的配置。这里我们需要对两设备的.bashrc进行修改。

  • 主机端
export ROS_MASTER_URI=http://192.168.1.127:11311
export ROS_HOSTNAME="192.168.1.127"
  • 从机端
export ROS_MASTER_URI=http://192.168.1.127:11311
export ROS_HOSTNAME="192.168.1.126"

 这个设置使得两个设备的 ROS_MASTER_URI统一为主机上的地址,从而让从机可以和主机的roscore通讯。

但是需要注意这样从机的roscore就不能运行了,如需运行,把这两行注释掉即可。

完成上述设置后,双端的topic和节点就可以互相交流了,可以用小海龟简单试一下。

一遍成功的ROS主从机详细配置_一遍成功ros-CSDN博客

四、launch文件启动两个设备上的节点

首先需要配置ssh密钥使主机能够用ssh远程访问从机,因为ros是通过ssh访问其他设备启动节点的。这个方法可以参考以下链接

如何在 Ubuntu 20.04 上设置 SSH 密钥_ubuntu ssh key-CSDN博客

过去几天了我记不清了,应该是只要在主机上运行

ssh-keygen

生成密钥,然后同样在主机上运行

ssh-copy-id username@remote_host

username@remote_host是从机的用户名和ip地址,这样似乎就完成了(似乎)。

然后即可用launch一次启动包含在两个设备上的节点,可以参考以下launch语法。

<!-- 远程ros_cv机器上的 node -->
<machine name="cv_server" address="192.168.1.126" user="ros_cv" env-loader="/home/ros_cv/ros_remote_env.sh" />
<!-- rgb-yolo节点 -->
<node machine="cv_server" pkg="visual_tools" type="drone_check_yolo_d435i.py" name="drone_check_yolo" output="screen" required="true" />

如上所示,首先在launch中添加一个词条<machine>,address设定为从机的IP地址,user设定为从机的用户名,也有一些大佬通过添加password词条使得ssh不需要进行密钥的配置但是我没测试成功)。

在roslaunch中启动远程节点的方法_ros脚本启动远程节点-CSDN博客

对于env-loader这个词条,则需要在从机上添加一个.sh文件:

#!/bin/bash
export ROSLAUNCH_SSH_UNKNOWN=1
export ROS_MASTER_URI=http://192.268.1.127:11311
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_HOSTNAME=192.168.1.126
exec "$@"

其中ROS_MASTER_URI和ROS_HOSTNAME分别包括主机和从机的IP地址,和第三部分一致。

然后再node的词条中添加一个machine=“machine name”的词条就大功告成了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot项目多个数据源配置 dblink

当项目中涉及到多个数据库连接的时候该如何处理&#xff1f; 在对应的配置文件&#xff0c;配置对应的数据库情况&#xff0c;不过我确实没咋测试对于事务的处理我可以后续在多做测试 配置文件中配置对应的数据源 然后再使用的时候使用这个 DS(“pd_ob”)注解。 然后又长知识…

day4:用户-用户组

一&#xff0c;用户和用户组的概述 用户与用户组的概述与作用 用户&#xff08;User&#xff09;&#xff1a; 用户是操作系统中的基本单位&#xff0c;每个用户都有自己的唯一标识&#xff08;UID&#xff09;。用户可以登录系统并执行各种操作&#xff0c;但受到权限的限制。…

mysql主从复制及故障修复

一、主MySQL数据库的配置 分别在三台主机&#xff08;chen2/10.110、chen3/10.120、chen4/10.130)中安装mysql数据&#xff0c;其中chen2/10.110作为主MySQL服务器&#xff0c;其余两台作为从MySQL服务器。 1、在主机上部署mysql数据库 详细的请看上一篇&#xff1a;mysql数据…

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结 code review! 文章目录 Linux笔记之文件查找和搜索命令which,find,locate,whereis总结1.对比2.whereis 和 which 命令区别3.locate 和 find 命令区别 1.对比 命令功能说明备注which常用于查找可直接执行的命令。…

大模型涌现判定

什么是大模型&#xff1f; 大模型&#xff1a;是“规模足够大&#xff0c;训练足够充分&#xff0c;出现了涌现”的深度学习系统&#xff1b; 大模型技术的革命性&#xff1a;延申了人的器官的功能&#xff0c;带来了生产效率量级提升&#xff0c;展现了AGI的可行路径&#x…

C语言 | 第十七章 | 家庭收支软件-2 读写文件

P 161 项目-CRM(3)-主菜单 2023/3/23 一、显示主菜单 功能说明&#xff1a;用户打开软件&#xff0c;可以看到主菜单&#xff0c;输入5退出软件 思路分析&#xff1a;在customerManage.c中&#xff0c;编写一个函数mainMenu,显示菜单&#xff0c; 在main函数中调&#xff0c…

计算机组成原理(笔记7高速缓冲存储器Cache,计算机组成原理的重难点全、直接、组相连)

为什么要设立高速缓冲存储器 &#xff08;Cache&#xff09;&#xff1f; Cache是介于CPU和主存之间的小容量存储器&#xff0c;存取速度比主存快。它能高速地向CPU提供指令和数据&#xff0c;加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。…

unity静态批处理

unity静态批处理 静态批处理要求和兼容性渲染管线兼容性 使用静态批处理在构建时进行静态批处理在构建时执行静态批处理的步骤&#xff1a; 在运行时进行静态批处理性能影响 静态批处理 静态批处理是一种绘制调用批处理方法&#xff0c;它将不移动的网格组合在一起&#xff0c…

【HarmonyOS NEXT】权限申请及应用设置页跳转

关键词&#xff1a;鸿蒙、程序访问控制、定位、应用详情页、startability、want 在app开发过程中&#xff0c;常进行系统权限的申请以提供设备访问或个性化功能&#xff08;如扫一扫、城市定位、剪贴板等&#xff09;&#xff0c;从而保障应用功能的完整性&#xff0c;那么本期…

mov 转 mp4

1. 下载 ffmpeg 下载链接 Tags GyanD/codexffmpeg GitHub 下载 windos 精简版 解压 &#xff08;里面的mov文件和mp4文件是我后面自己加的&#xff09; 2. 转换 转换命令 ffmpeg -i 5.mov -c:v libx264 -c:a aac 5.mp4 其中 5.mov 是源文件路径 5.mp4是目标路径 使用lib…

计算机毕业设计 零食批发商仓库管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

智发展 智飞跃 亚信安全与新华三深化战略合作

10月16日&#xff0c;亚信安全与新华三集团共同宣布&#xff0c;双方正式签署战略合作协议&#xff0c;双方将基于各自在硬件及软件安全领域的能力和优势&#xff0c;在产品、解决方案、市场拓展等多个领域深入合作&#xff0c;赋能千行百业数字化转型与变革。 亚信安全CEO马红…

跨域问题及常用的5种解决方案

1.什么是跨域问题&#xff1f; 跨域问题通常指的是在浏览器中由于同源策略的限制而产生的问题。同源策略&#xff08;Same-origin policy&#xff09;是浏览器的一种安全措施&#xff0c;它要求请求的域名、协议和端口必须与提供资源的网站相同。当一个网页尝试访问另一个来源…

【算法】C++中的二分查找

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

wifi、热点密码破解 - python

乐子脚本&#xff0c;有点小慢&#xff0c;试过多线程&#xff0c;系统 wifi 连接太慢了&#xff0c;需要时间确认&#xff0c;多线程的话系统根本反应不过来。 也就可以试试破解别人的热点&#xff0c;一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

初识git · 基本操作

目录 前言&#xff1a; 基本操作 检查是否存在git 初始化仓库 认识三个区域 添加文件 查看.git文件 修改文件 版本回退 撤销操作 删除文件 我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;https://cloud.tencent.com/developer/suppor…

Qt-多线程

1. Qt 多线程概述 Qt 默认只有一个主线程&#xff0c;该线程既要处理窗口移动&#xff0c;又要处理各种运算。 当要处理的运算比较复杂时&#xff0c;窗口就无法移动&#xff0c;所以在处理程序时在很多情况下都需要使用多线程来完成。 示例&#xff1a;移动窗口和复杂循环 …

八股面试2(自用)

mysql存储引擎 存储引擎&#xff1a;定义数据的存储方式&#xff0c;以及数据读取的实现逻辑 在以前数据库5.5默认MyISAM引擎&#xff0c;之后默认InnoDB引擎 MyISAM引擎的数据和索引是分开存储的&#xff0c;InnoDb将索引和文件存储在同一个文件。 MyISAM不支持事务&#…

SPOOLing技术详解,结合实际场景让你了解什么是假脱机技术。

SPOOLing技术 ​ 在手工操作阶段&#xff0c;主机直接从I/O设备获取数据&#xff0c;但是由于设备速度很慢&#xff0c;主机速度很快。人机速度矛盾明显&#xff0c;主机需要浪费很多时间来等待设备。 什么是脱机技术&#xff0c;脱机技术可以解决什么问题&#xff1f; 所谓脱…

大数据测试:Charles修改响应数据

上一篇大数据测试&#xff1a;Fiddler修改响应数据-CSDN博客 &#xff0c;有同学反馈有没有Charles的方式修改响应数据&#xff0c;本篇就是Charles修改数据操作步骤&#xff0c;相比较fiddler&#xff0c;Charles相对简单&#xff0c;便捷&#xff0c;我很喜欢 1、背景&…