当前位置: 首页 > news >正文

使用ROS实现多机通讯

ROS的通信机制不仅可以在进程间之间通讯,而且可以在不同设备间进行通讯,只需要简单几句语句,即可实现多电脑之间的Topic共享,远程控制等功能。本文指导如何通过绑定IP和主机名实现主从通讯,包括下载包、网络检测、ROS环境配置和小乌龟历程测试。实现双向通讯

一、绑定IP和主机名

要实现多机通信,首先要求主从电脑连接同一个局域网(WIFI),然后分别打开终端查看对应的IP地址和主机名

1.1 获取IP和主机名

终端输入ifconfig即可查看IP地址;hostname查看主机名字。
我使用的主机为ubuntu的虚拟机,从机为nuc13。

img

img

img

1.2 修改hosts文件进行绑定

修改hosts文件的目的是将电脑的IP和主机名绑定,这样两台电脑之间就可以通过hostname找到对方了。如果没有绑定,直接去ping对方主机名是无法解析对方主机名的。分别对两个电脑的/etc/hosts文件,从第三行开始插入对方电脑的ip地址和主机名hostname.

在电脑A中插入以下加粗的指令

127.0.0.1 localhost
127.0.0.1 [hostname_A]
[IP_A] [hostname_A]
[IP_B] [hostname_B]

在电脑B中插入以下加粗的指令

127.0.0.1 localhost
127.0.0.1 [hostname_B]
[IP_B] [hostname_B]
[IP_A] [hostname_A]

1.3 重启网络

sudo /etc/init.d/networking restart

二、开始通讯并检测

2.1检测通讯

<span style="color:#000000"><code class="language-dos">设置完之后,可以简单的通过<span style="color:#0000ff">ping</span>命令测试网络是否联通。<span style="color:#0000ff">ping</span>是用来检测本机与网络中的另一主机之间网络是否联通。
```
主机侧: <span style="color:#0000ff">ping</span> <span style="color:#880000">192</span>.<span style="color:#880000">168</span>.<span style="color:#880000">31</span>.<span style="color:#880000">171</span>  //或者<span style="color:#0000ff">ping</span> isvl-NUC13ANKi7
从机侧: <span style="color:#0000ff">ping</span> <span style="color:#880000">192</span>.<span style="color:#880000">168</span>.<span style="color:#880000">31</span>.<span style="color:#880000">189</span>  //或者<span style="color:#0000ff">ping</span> ubuntu
```
</code></span>

ping成功后会出现以下数据传输结果。双向网络能正常联通,则底层网络通信实现

img

2.2设置ROS_MASTER_URI

在两台电脑中选择其中一台作为主机器人(master),并设置对应的ROS master,在从机上设置ROS_MASTER_URI。

直接在./bashrc配置文件中添加环境变量。
sudo gedit ~/.bashrc

在主机上设置

<span style="color:#000000"><code class="language-bash"><span style="color:#0000ff">export</span> ROS_HOSTNAME=192.169.31.189  <span style="color:#008000"># 主机IP或名称</span>
<span style="color:#0000ff">export</span> ROS_MASTER_URI=http://192.168.31.189:11311 <span style="color:#008000">#主机ip或名称</span>
</code></span>

在从机上设置

<span style="color:#000000"><code class="language-bash"><span style="color:#0000ff">export</span> ROS_HOSTNAME=192.169.31.191  <span style="color:#008000"># 从机IP或名称</span>
<span style="color:#0000ff">export</span> ROS_MASTER_URI=http://192.168.31.189:11311 <span style="color:#008000">#主机ip或名称</span>
</code></span>

source ~/.bashrc

2.3 多机器人通信测试,使用turtlesim小乌龟测试

在主机上运行小乌龟仿真

<span style="color:#000000"><code class="language-undefined">roscorerosrun turtlesim turtlesim_node
</code></span>

在从机上运行键盘控制器,控制主机的小乌龟运动

<span style="color:#000000"><code class="language-undefined">rosrun turtlesim  turtle_teleop_key
</code></span>

三、结论

ROS中所谓的主从机,并不是只有主机能控制从机,从机不能控制主机。实际上是一个双向通信的过程,只不过是roscore的位置是在主机上运行的。

注意: 如果网络ping通过了,但是数据没有传输,可能原因是电脑防火墙问题。

http://www.xdnf.cn/news/184609.html

相关文章:

  • 线上查询车辆出险记录:快速掌握事故情况!
  • 大模型API密钥的环境变量配置(大模型API KEY管理)(将密钥存储在环境变量)(python-dotenv)(密钥管理)
  • 数据结构(七)---链式栈
  • AI看论文自动生成代码库:Paper2Code如何革新科研复现?
  • 函数式链表:Python编程的非常规 “链” 接
  • QT6 源(53)篇三:存储 c 语言字符串的类 QByteArray 的使用举例,
  • 移除生产环境所有console.log
  • 给视频自动打字幕:从Humanoid-X、UH-1到首个人形VLA Humanoid-VLA:迈向整合第一人称视角的通用人形控制
  • 基于STM32、HAL库的AD7616BSTZ模数转换器ADC驱动程序设计
  • Linux操作系统学习---进程地址空间
  • 【LaTex】8.1 文档类与层级
  • 前端权限管理
  • 小刚说C语言刷题——1320时钟旋转
  • 生成式人工智能认证(GAI认证)要学哪些知识?
  • google chrome 中 fcitx5 候选框不跟随光标
  • 【SpringCloudAlibaba】Dubbo 和 Spring Cloud OpenFeign 在服务治理能力上的差异
  • 生成式人工智能认证(GAI认证)考试难吗?
  • SpringBoot的自动扫描特性-笔记
  • Vue初步总结-摘自 黑马程序员
  • 浅谈 MySQL 日志的原理
  • 新增 29 个专业,科技成为关键赛道!
  • 互联网的下一代脉搏:深入理解 QUIC 协议
  • Day23-Web开发——Linux
  • 基于深度学习的图像压缩技术(二)
  • AI时代下如何实现财务自由?
  • 江达、安托、凯思软件这几家达索代理商,哪家好?
  • 算法备案批量咨询问题解答第二期
  • NdrpPointerUnmarshallInternal函数分析之pFormatPointee指针的确定
  • deepspeed 滴 ZERO 介绍
  • Python中的win32包介绍