实现目标:当机器人运行后,在另外一台电脑(除了机器人自身电脑外)控制,监控机器人。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
最近经常有实验室同学问ROS多机通信,让帮忙配置,特别是需要在移动机器上做实验的时候。写在这里方便新手查阅。
因为移动机器人上面电脑往往没有显示屏,或者我们需要远程监控,因此需要在另外一台电脑上面监控机器人运行状态。
其实这里叫多机通信并不是很确切,通信是指另外的概念。这里更多是指多台电脑共用同一个ROS节点。
网上教程很多,但是实现目的不同,对于新手而言有点难搞,这里的实现步骤针对于文首提到的实现目标。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
(0)为两台电脑安装同步通信包及ssh服务
$ sudo apt-get install chrony
$ sudo apt-get install openssh-server
(1)两台电脑准备好后,在各自终端命令行查找本机IP。
$ ifconfig
记录得到的两个IP地址这里假设为:
机器人:192.168.1.101
监控机:192.168.1.102
(2)在./bashrc文件中添加配置信息。
机器人电脑中$ sudo gedit ~/.bashrc
添加
ROS_MASTER_URI=http://192.168.1.101:11311
ROS_IP=http://192.168.1.101
监控电脑中$ sudo gedit ~/.bashrc
添加
ROS_MASTER_URI=http://192.168.1.101:11311
ROS_IP=http://192.168.1.102
(3)配置完后source更新文件
$ source ./bashrc(两台电脑都要执行)
(4)获取主机名
$ hostname
这里假设为 机器人为:robot 监控机为:home
记录两台电脑主机名,如果复杂可以修改,修改方法自行百度
(5)使用ssh服务从机登录主机并控制主机
$ ssh robot@192.168.1.101确定提示内容,输入密码即可登录,登录后该terminal即为有主机权限的terminal可直接进行命令行操作
$ roscore
打开主机master,即为两台电脑共用的master,在该terminal下可实现对主次节点的开启和关闭
(6)从机订阅主机话题
$ rostopic list
查看主机节点话题
重开terminal,即为从机自身terminal可以订阅监视,同时在rviz可以订阅,也可以直接往话题发消息