文章目录
- ROS分布式多机通信
- 设置ROS_MASTER_URI
- 主机yangqing中断输入:
- 从机rex终端输入:
- 测试
- 运行ORBSLAM2
- 收尾
- 后续
目标:在pc-
rex
下运行ORBSLAM2代码,尝试使用另外一台机器pc-
yangqing
显示出来。
ROS分布式多机通信
首先,使两台pc机位于同一网络中,这里我用的是手机热点。
注意:如果使用虚拟机,需要把虚拟机网络设置为桥接模式,方法是:虚拟机 ->设置 ->网路适配器 ->桥接模式(自动):
在两台pc上分别输入命令查看IP:
ifconfig
查看pc的局域网IP地址:
将两台pc的/etc/hosts
文件中加入对方的IP和计算机名,分别在两台pc终端输入命令:
sudo gedit /etc/hosts
rex
机输入yangqing
的IP和计算机名:
另一台计算机同理。
测试网络是否连通,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。
实现步骤是:
- CCM跑数据集
- CCM跑摄像头
- ROS多机通信跑CCM摄像头
奥利给~
后续
ROS多机通信运行CCMSLAM: