ROS下多机器人实现通信
来源:互联网 发布:双截棍 知乎 编辑:程序博客网 时间:2024/06/08 08:13
在运行所有的ROS节点之前,一定要先使用指令roscore,实际上roscore指令是运行了一个ros master,ros master相当于一个服务器,所有节点都可以通过ros master发布和订阅消息、服务和参数,只有连接在相同ros master下的节点才能互相通信。如何才能知道节点是运行在哪个master下的呢?实际上:ROS中默认一个机器上只运行一个ros master,其运行的端口默认为:http://localhost:11311。该端口默认值存于ROS环境变量ROS_MASTER_URI中。
下面来梳理一下实现ROS多机通讯的实现方法。
1. 保证多机之间网络连接无误:
在/etc/hosts中添加想要连接的那台机器的ip地址和主机名称,使用ping指令检查本机的网络连接和其他机器的网络连接。这里需要注意,如果不止两台机器连接,需要把所有需要和本机通讯的机器的ip和主机名添加到hosts文件里。
注意:这里建议主机从机都要将对方的IP hostname添加到自己的 /etc/hosts 中,如果不填加,将无法反向控制如:主机的hosts文件中没有添加从机的信息,从机只能接收到从主机发来的信息,而无法向主机发送信息。
2、修改ROS环境变量
与网络通讯相关的ROS环境变量主要有3个,分别是:
ROS_MASTER_URI、ROS_IP、ROS_HOSTNAME
因为这种通讯方式只能运行一个ros master,因此,选定一台机器作为master,将所有机器的ROS_MASTER_URI设置为master机器的ROS_MASTER_URI值,举个例子,我的主机名为administer,则我的ROS_MASTER_URI应该设置为http://administer:11311,则所有连接到我这个ros master的机器上的ROS_MASTER_URI都应该设置为http://administer:11311,设置环境变量值用export指令,ROS_IP和ROS_HOSTNAME则分别是本机的IP地址和主机名。
3. 简单测试
为了测试通讯是否成功,只要用rostopic pub指令在一台机器上发布一条消息,如果通讯成功,其他所有和该机器连接的机器上,就能使用rostopic echo接收到消息了。
- ROS下多机器人实现通信
- ROS多机器人通信
- 机器人ros通信
- ROS下实现机器人序列任务的执行控制
- ROS多终端通信
- ROS多机通信
- ROS多机通信
- ros中机器人与台式电脑的通信
- 【ROS】计算机、机器人之间的网络通信配置
- ROS在多机器人上的运行
- 基于ROS平台的移动机器人-3-小车底盘与ROS的通信
- ros下机器人自主定位服务的调用
- ROS环境下机器人建模(XACRO)及常见问题解决
- ROS下通过MoveIt控制UR5机器人的运动
- ros 多个电脑通信
- ros多机之间通信
- ROS::用摇杆控制你的机器人(实现篇)
- 利用ROS系统实现工业机器人的控制
- 关于活动onCreate()方法的Bundle参数
- 打开小米5开发者选项
- 数据库连接池
- iOS 监听和设置系统音量
- css左右上下居中的几种
- ROS下多机器人实现通信
- oracle恢复delete的数据
- linux硬件时钟的设置
- jQuery.siblings() 函数详解
- 【排序】1.2冒泡排序
- reids的复制和主从复制
- 合并bn层到conv或FC层原理介绍及代码实现
- CMake
- Spring Boot 静态资源处理