文章目录

  • ROS分布式多机通信
  • 设置ROS_MASTER_URI
  • 主机yangqing中断输入:
  • 从机rex终端输入:
  • 测试
  • 运行ORBSLAM2
  • 收尾
  • 后续



目标:在pc-

rex下运行ORBSLAM2代码,尝试使用另外一台机器pc-

yangqing显示出来。

ROS分布式多机通信

首先,使两台pc机位于同一网络中,这里我用的是手机热点。

注意:如果使用虚拟机,需要把虚拟机网络设置为桥接模式,方法是:虚拟机 ->设置 ->网路适配器 ->桥接模式(自动):

ROS基于交换机VLAN的拨号_bash

在两台pc上分别输入命令查看IP:

ifconfig

查看pc的局域网IP地址:

ROS基于交换机VLAN的拨号_IP_02


将两台pc的/etc/hosts文件中加入对方的IP和计算机名,分别在两台pc终端输入命令:

sudo gedit /etc/hosts

rex机输入yangqing的IP和计算机名:

ROS基于交换机VLAN的拨号_bash_03


另一台计算机同理。

测试网络是否连通,rex终端输入

ping yangqing

yangqing终端输入

ping rex

如果能接受数据,表示两台pc连通,则进行下一步。

设置ROS_MASTER_URI

整个分布式系统只能有一个Master,需要在每个设备(这里是两个pc)都设置。这里设置yangqing为主机,rex为从机。

主机yangqing中断输入:

sudo gedit ~/.bashrc

在末尾加入:

export ROS_HOSTNAME=yangqing
export ROS_MASTER_URI=http://yangqing:11311

然后更新一下:

source ~/.bashrc

从机rex终端输入:

sudo gedit ~/.bashrc

在末尾加入:

export ROS_HOSTNAME=rex
export ROS_MASTER_URI=http://yangqing:11311

然后更新一下:

source ~/.bashrc

测试

主机yangqing终端输入:

roscore
rosrun turtlesim turtlesim_node

从机rex不用启动ROS,终端输入:

rostopic list

可以查看话题,终端输入:

rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

这时主机yangqing乌龟转圈则说明测试成功。

运行ORBSLAM2

从机rex连接USB摄像头,运行ORBSLAM2。
在主机yangqing端,在rviz可以找到图像话题并显示,但是并不能找到其他话题比如位姿、点云。
想了一会知道了:ORBSLAM2有自己的输出窗口,信息传送到Viewer.cc中,而不是通过节点发布出来,因此没有这些话题。

淦~

收尾

后面的方向可以是编几个节点发布这些话题,然后用rviz显示。
或者使用CCM-SLAM,因为已知它是发布话题的SLAM。

考虑一会后选择CCM-SLAM。
实现步骤是:

  1. CCM跑数据集
  2. CCM跑摄像头
  3. ROS多机通信跑CCM摄像头

奥利给~

后续

ROS多机通信运行CCMSLAM: