一起自学SLAM算法:5.5 分布式架构主机

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

连载文章长期更新欢迎关注

在实际的机器人开发过程中往往涉及到多台机器人、工作台、手机终端等多种设备这些设备之间相互协作实现对机器人的监控和调度。这里就来讨论一下这种分别式架构下的机器人监控与调度如图5-9所示。 

图5-9  分布式架构主机

机器人中的主机安装Ubuntu和ROS主要运行传感器驱动程序、SLAM建图程序、导航避障程序等有时候会有好几台机器人一起协同工作工作台是我们的台式电脑或笔记本电脑一般通过在虚拟机上运行Ubuntu和ROS主要使用rviz图形化工具、ssh远程登录工具来对机器人上的程序算法进行调试手机端安装机器人配套的Android App后能显示机器人回传的地图、图像、位置等状态信息同时监控和调度机器人的导航及人机交互任务。

5.5.1 ROS网络通信

机器人、工作台、手机等设备之间通过ROS网络通信进行数据传递ROS网络通信是一种分布式的计算机通信方式为运行在不同主机中的ROS节点之间通信提供接口关于ROS网络通信的详细讲解请参考1.3节和1.5节。机器人和工作台上的ROS节点是运行在Ubuntu系统的一般基于roscpp和rospy库来编写手机上的ROS节点是运行在Android系统的一般基于rosjava库来编写。不管这些ROS节点是运行在什么设备中只要将各个设备连接到同一台路由器组成一个局域网并每台设备上都配置好ROS网络通信的环境变量ROS网络通信就设置完成了。

ROS网络通信是中心式结构也就是参与ROS网络通信的所有主机必须指定一台主机作为MASTER主节点负责整个ROS网络通信的管理工作而参与ROS网络通信的所有主机都要向外声明自己的HOST身份。也就是每台主机中都要设置MASTER和HOST两个环境变量MASTER和HOST的取值均为局域网内主机的真实IP地址。一般以机器人作为MASTER也就是所有主机中的ROS_MASTER_URI环境变量取值都设置成机器人IP地址值而参与ROS网络通信的所有主机各自都是一台HOST也就是每台主机中的ROS_HOSTNAME环境变量取值都设置成该主机自己的IP地址值。这样组建出来的ROS网络通信如图5-10所示。

图5-10  ROS网络通信环境变量设置

5.5.2 机器人程序的远程开发

ROS网络通信可以解决机器人与工作台和手机之间的数据传输利用工作台和手机监控和调度机器人。但是在机器人还没有正式走入工作岗位开发过程中机器人要在环境中移动这个时候不可能在机器人上装鼠标键盘和屏幕一直跟在机器人屁股后面编写和调试程序要怎么样更高效的开发机器人呢这就是这里要讨论的远程开发通过ssh工具从工作台远程登录到机器人主机然后就可以远程编辑和启动停止机器人上的程序了。远程登录命令如下

#ssh命令后面跟要登录主机的用户名和IP地址
ssh raspi@192.168.0.117 

通过ssh远程登录到机器人后在登录终端只能用vim编辑一些简单的程序代码。如果要修改的代码涉及的文件比较复杂可以将机器人文件远程挂载到工作台然后在工作台直接打开编辑就方便多了如图5-11所示。

图5-11  远程挂载

对于初学者一定要正确理解ssh登录的原理。当工作台中的命令终端成功登录到机器人后该终端下执行的所有命令其实最终都是在机器人本地运行只不过通过ssh进行命令的传递而已。初学者往往会不小心在ssh登录后的终端下运行rviz这类GUI程序显然会报错了解ssh远程登录原理的话就很容易理解错误产生的原因了。因为rviz要在机器人本地启动而ssh只能传递文本信息到工作台端而rviz是GUI程序程序输出是GUI信息显然ssh传递不了。

参考文献

【1】 张虎机器人SLAM导航核心技术与实战[M]. 机械工业出版社2022.

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“一起自学SLAM算法:5.5 分布式架构主机” 的相关文章