欢迎来到 机器人实验室

新手来到请看 新手必读 QQ群:197445211

ROS分布式多机通信部署方式

2021-04-28 00:19:41
/
0
/
0

😀 ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。在很多应用场景下,系统中的节点可以运行在不同的计算平台上,通过Topic、Service进行通信。但是“一山不容二虎”,ROS只允许存在一个Master,在多机系统中Master只能运行在一个机器上,其他机器需要通过 ssh 的方式和Master取得联系。所以在多级ROS系统中需要一些配置。

😀 ROS分布式多机通信部署一般是两台电脑(不是说只有能有两台,可以有更多,这里用两台举例):机器人+本地计算机。机器人自身需要有一个运行ROS系统的主机(可以是树莓派、TX2、miniPC等);本地计算机有一台可以运行ROS的系统。。两个设备之间使用网线连接,机器人端因为体积限制或功率限制等,使用的设备算力不够,在做图像运算或视觉SLAM定位时不能提供实时的计算,所以将计算复杂的节点放置在本地计算机,本地计算机计算之后将结果反馈给机器人,机器人根据结果执行相应的动作即可。

👉 准备工作

  1.  机器人端可以运行ROS系统;
  2.  本地电脑可以运行ROS系统;
  3.  机器人端和本地电脑端在一个局域网内(使用虚拟机的话需要把网络改为桥接模式)(如果是在学校,切记不要使用校园网,用一个路由器来连接本地电脑和机器人);
  4.  查看本地电脑的IP和机器人的IP,一般前三个是一样的,最后一个不一致,如果 192.168.1.103 192.168.1.105
  5.  在机器人端使用ping命令查看与本地电脑是否连接正常,在本地电脑端使用ping命令判断机器人与电脑连接正常,如果连接不正常,请仔细检查网络的连接与设置,并关闭防火墙重试。
  6.  若本地电脑使用的是虚拟机,需要用虚拟机的ubuntu系统的ping命令来判断。

👉 设置分布式

1. 确保本地电脑和机器人连接正常,并知道机器人的IP地址和本地电脑的IP地址;

这里为了方便描述,ROBOT_IP为机器人端的IP地址,PC_IP为本地计算机的IP地址(虚拟机的话为虚拟机中ubuntu的IP地址);

2. 获取机器人ubuntu系统的机器名称 和 本地电脑端的机器名称,如果名称是数字开头的,则需要按照下述方法修改;

在终端中执行 cat /etc/hostname 即可获取机器人名称;
如为数字开头,则需要修改/etc/hostname文件中的名称,修改完成后,重启即可;

3. 在本地计算机和机器人端的 /etc/hosts 文件中添加本地电脑的名称和IP地址,机器人端也要添加:

4. 设置环境变量:打开机器人端和本地电脑端的~/.bashrc文件,在文件的最后输入一行代码:export ROS_MASTER_URI=http://ROBOT_IP:11311 ,这里的ROBOT_IP是机器人的IP地址;

5. 在机器人重新打开一个终端,输入roscore启动ros,然后在本地电脑上打开新的终端,输入 rosrun turtlesim turtlesim_node , 若可以看到小海龟则表示分布式通信成功。

6. 因为正常的是在一台电脑上打开roscore和小海龟。部署成功后是在机器人端启动roscore,而在本地电脑启动小海龟。

7. 注意,按以上的部署,roscore只能在机器人端启动,本地电脑端无法启动,若想改为本地电脑启动,需要将第三步的ROBOT_IP改为PC_IP即可。

👉 ROBOT_IP和PC_IP是代指IP地址哈,记得操作时把这两个替换为机器人的IP和电脑的IP。


UID000016文章作者

Cras sit amet nibh libero.

讨论数量: 0

自我清欢

萨菲罗斯变身超级帅!

听闻余生

超级文本标记语言(html)是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。

(= ̄ω ̄=)··· 暂无内容!
关注本文