ROS多机通信/在多台机器上使用ROS系统/多台电脑使用同一个主节点ROS master/ROS多机ssh通信

来源:互联网 发布:java连接池 编辑:程序博客网 时间:2024/06/12 11:32

实现目标:当机器人运行后,在另外一台电脑(除了机器人自身电脑外)控制,监控机器人。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

最近经常有实验室同学问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可以订阅,也可以直接往话题发消息