提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在ROS中,主从通信是一种基于发布/订阅模式和服务调用的通信方式。通常,一个节点充当主节点,负责发布话题或提供服务,而其他节点则作为从节点,订阅话题或请求服务。主节点可以向特定话题发布消息,从节点可以订阅该话题以接收消息。同时,主节点也可以提供服务,而从节点可以请求该服务。这种通信方式使得不同节点之间可以进行灵活的数据交换和功能调用,从而实现机器人系统中的协同工作和信息传递。
1. 主从配置前的准备工作
(1) 查看主从机的hostname
分别在各自主机和从机中,打开终端输入:
hostname
如下图所示,hostname为chen:
(2) 查看各自主机和从机的IP
分别在各自主机和从机中,打开终端输入:
ifconfig
(3) 本教程的hostname和ip如下
主机的hostname和ip: chen 192.168.1.200
从机的hostname和ip: desktop 192.168.1.106
注意:这连接的ip和网线连接设置里的一样,主机和从机都要设置连接配置,才能主从
2. 在主机中的修改
(1) 修改主机的/.bashr文件
打开 /.bashr文件
sudo gedit ~/.bashrc
添加如下内容:
export ROS_HOSTNAME=chen ####注意这里是填主机的hostname
export ROS_MASTER_URI=http://192.168.1.200:11311
export ROS_IP=192.168.1.200
生效环境
终端输入:
source ~/.bashrc
(2) 修改主机的hosts文件
注意:这步不配置的话,主从机之间只能进行话题共享,不能相互控制
打开主机的hosts文件
sudo gedit /etc/hosts
添加如下内容:
192.168.1.106 desktop //从机ip hostname
生效hosts内容
终端输入:
sudo /etc/init.d/networking restart
或者
sudo netplan apply
3. 在从机中的修改
(1) 修改从机的/.bashr文件
打开 /.bashr文件
sudo gedit ~/.bashrc
添加如下内容:
export ROS_HOSTNAME=desktop
export ROS_MASTER_URI=http://192.168.1.200:11311 //主机的ip
生效环境
终端输入:
source ~/.bashrc
(2) 修改从机的hosts文件
注意:这步不配置的话,主从机之间只能进行话题共享,不能相互控制
打开从机的hosts文件
sudo gedit /etc/hosts
添加如下内容:
192.168.1.200 chen //主机ip hostname
生效hosts内容
终端输入:
sudo /etc/init.d/networking restart
或者
sudo netplan apply
4. 运行ROS小乌龟测试
(1) 在主机中启动ROS的master:
终端输入:
roscore
注意:只有主机才能成功运行roscore
(2) 在主机中运行乌龟节点:
终端输入:
rosrun turtlesim turtlesim_node
(3) 在从机中运行键盘控制节点:
rosrun turtlesim turtle_teleop_key
通过从机的操作键盘的上下左右键,即可看到主机的小乌龟移动,画面如下:
(4) 验证是否相互可以控制
- 在从机中运行乌龟节点
- 在主机中运行键盘控制节点
- 通过操作主机键盘的上下左右键,观察从机的小乌龟是否移动
总结
以上就是配置ROS主从的全部流程,上述的ros主从配置流程也适用利用局域网进行两台及其的ros主从通讯,有什么问题可以评论区留言讨论。