低带宽条件下机器人探索地图的传输方法*
2018-03-29张红阳肖宇峰
张红阳,肖宇峰,刘 冉
(1.西南科技大学 信息工程学院,四川 绵阳 621010; 2.西南科技大学 特殊环境机器人技术四川省重点实验室,四川 绵阳 621010)
0 引言
网络技术的飞速发展给人们生活和工作带来了极大的便利性[1]。近十年来,远程机器人同时定位与地图创建(Simultaneous Localization and Mapping,SLAM)技术得到很快的发展。传统的方法利用本地计算机远程登录到远端主机,然后将远端主机的桌面窗口通过网络传递到本地进程,从而将创建的地图在本地主机呈现。这种方式虽然可以使用户直观地看到建图的整个过程,但其对网络带宽要求高,虽然现有技术在带宽为56 Kb/s时可进行远程登录连接,但这种情况下远程桌面的显示效果、响应速度将会受到很大影响,想要更加流畅的体验度则需要占用较多的带宽资源[1]。文献[2]提出通过语音与机器人交互进行地图构建,然后将机器人的位置返回到客户端并记录下来。这种方式传输数据少,满足低带宽条件下传输数据的要求,但其不能直观地反映机器人在整个环境中的位置。
针对无线低带宽条件下大面积探索地图高效传输问题,本文将创建好的地图数据进行压缩,采用C/S的设计模式并且自主设计地图交互协议,使得远端主机上创建好的地图数据准确、高效地进行传输。
1 探索地图的传输方案
该系统分为机器人端和APP端。机器人端通过局域网接收APP端下发的控制指令控制机器人移动,在移动时通过SLAM模块进行栅格地图的构建。无线局域网带宽较低,并且探索地图的生成是一个动态过程:随着探索范围扩大,生成的地图不断扩大。如果进行远程传输,直接传输的带宽要求会越来越大。所以通过地图压缩模块对地图数据进行压缩,减少传输数据量。然后通过地图发送模块将地图数据发送到APP端。APP端通过地图接收模块接收到地图数据后,通过地图显示模块将接收到的地图数据进行整合并显示出来。探索地图的传输方案框图如图1所示。
图1 移动机器人探索地图的传输方案
2 探索地图生成方法
2.1 SLAM
在概率意义上网格占据Fast-SLAM算法估计关于机器人位姿x1:t和地图m的联合后验概率p(x1:t,m|z1:t,u1:t-1)。利用条件独立性,该估计可被分解为:
p(x1:t,m|z1:t,u1:t-1)=p(m|x1:t,z1:t)p(x1:t|z1:t,u1:t-1)
(1)
(2)
2.2 栅格地图及其PGM文件格式
栅格地图由代表机器人工作空间的许多网格单元组成,每个网格单元都具有被占据的概率值,如图2所示。
图2 栅格地图创建
通过下式更新每个栅格的状态:
(3)
(4)
接下来要将这些数据以PGM文件格式(portable graymap file format)进行保存。PGM格式图像由文件头部分和数据部分组成。PGM文件的数据部分通过如下公式进行保存:
(5)
3 探索地图远程传输实现
3.1 机器人端发送程序
机器人端的主要任务是根据APP端的速度指令控制机器人进行地图构建,并将地图数据发送到APP端进行显示。机器人端设计流程如图3所示。
图3 机器人端设计流程图
首先创建Socket套接字,然后机器人端一直处于监听APP端模式。当APP端请求连接时,机器人端接受连接并处理该APP端的请求。子线程1接收到请求地图的指令后,通知子线程2对地图数据进行压缩。首先循环读取第2节生成的PGM格式的栅格地图数据,然后将地图数据通过PGM文件压缩算法[5-6]经过分块预处理、量化、编码转换成数据量较小的JPEG格式的数据,再将转换后的地图数据发送到APP端,确保探索地图的实时显示。考虑到在地图传输过程中存在网络不稳定的情况,传输可能中断,则关闭子线程2并通知子线程1继续等待接收APP端指令,当建立连接后重新传输地图数据。
3.2 APP端接收程序
APP端基于Android平台进行开发,使用Java语言进行程序设计。其主要功能是发送机器人速度指令和接收地图数据并显示。APP端设计流程如图4所示。
图4 APP端设计流程图
APP端启动后创建一个Socket类对象,绑定机器人端的IP地址和端口号,并请求连接机器人端。建立连接成功后,分别创建发送数据线程和接收数据线程,根据双方约定好的协议进行收发数据。发送数据线程用来向机器人端发送地图请求指令和速度指令。接收数据线程用来循环接收地图数据,当一张地图数据没有接收完,则循环接收地图数据,直到接收整张地图数据。当完整一张地图数据接收完毕后将读入的网络字符流数据转化为Bitmap格式数据,然后将地图绘制在移动设备上显示,接着再等待接收机器人端发送的下张地图数据。当断开连接后关闭线程,关闭套接字,释放资源。
3.3 探索地图数据包
考虑到系统的规范性和可扩展性,必须设计一套规范的交互协议来进行APP端和机器人端之间的通信。由于TCP协议具有较高的可靠性,因此本文的传输协议选择TCP,用于机器人端与APP端交互的应用层协议则利用TCP套接字实现。
上面提到的应用层协议也就是用于地图数据交互的协议,如表1所示。当APP端接收到数据后,如果校验和无误则判断包头。包头无误则提取包实体部分。提取出包实体后查看当前包数Cur_P,若此值与等待的包序号i相同,则提取总包数Tol_P,根据此值来计算接收数据包的个数,总包数收完,则进行数据包的重组并显示。若Cur_P值大于等待包序号,则认为当前等待的数据包可能丢失,则放弃该包数据,重新初始化接收参数,开始接收新的数据包。若Cur_P值小于等待包序号,则为无效的数据包,不做任何处理,继续等待下一包的数据。
表1 地图交互协议
4 系统测试
4.1 实验平台
实验平台是自主研制的搭载北阳Hokuyo UTM-30LX激光扫描仪的三轮全向移动机器人,工控机装有Ubuntu 12.04的Linux系统,Linux系统中装载了Hydro版本的ROS(Robot Operating System)次级操作系统。三轮全向移动机器人如图5所示。
图5 三轮全向移动机器人
4.2 实验环境及结果分析
实验环境为西南科技大学东七楼走廊,其面积约为460 m2,走廊宽度为3.31 m。分别进行有效性和高效性测试。
(1)有效性测试
①APP端地图显示效果。经过图6和图7对比,APP端和机器人端显示的地图完全吻合。
②机器人端与APP端关于机器人定位效果对比。
图6 机器人端SLAM过程图
图7 APP端探索地图显示效果图
图6中左上角三角形所在的位置为机器人端机器人的位置,图7中左上角的圆形为机器人在APP端显示的位置,两者相对比可以看出在APP端正确显示了机器人的位置。地图的分辨率为0.05 m/pixel,通过比较机器人端和APP端6个机器人位置的定位坐标,如表2所示,可得坐标误差在±10 cm的误差范围内,相对误差在1%以内,满足定位精度的要求。
表2 机器人端与APP端关于机器人定位坐标对比
(2)高效性测试
地图压缩前后及传输时间对比。整个实验在JCG JHR-N835R路由器搭建的无线局域网内测试,其无线传输速率理论值为300 Mb/s。在APP端距离路由器50 m时带宽已衰减为25 Kb/s,此时设为机器人已进入低带宽环境下。分别做了低带宽环境和不是低带宽环境的8次实验。地图传输时间及文件大小比较如表3所示。
由表3可以看出,经PGM文件压缩算法,探索地图数据得到大幅度压缩。不同带宽条件下,传输时间随着带宽的增加而减少。在同样低带宽条件下,压缩后的传输时间约为压缩前的1/27.5,满足低带宽条件下大面积地图传输的要求。
表3 传输时间及文件大小比较
5 结论
本文设计并实现了大范围探索地图远程传输系统。实验结果表明该系统可以解决无线低带宽条件下大面积机器人探索地图高效传输问题,并且为移动机器人的远程数据访问和控制提供了技术支持。
[1] 高岩,黄晓涛,肖来元.面向低带宽网络的远程图形终端设计[J].软件导刊,2015,14(9):83-86.
[2] 佘元博. 基于ROS的交互型自主导航机器人平台的设计与实现[D]. 南京:南京大学, 2015.
[3] 张建伟.开源机器人操作系统[M].北京:科学出版社,2012.
[4] BERNTORP K, NORDH J. Rao-blackwellized particle smoothing for occupancy-grid based SLAM using low-cost sensors[J]. IFAC Proceedings Volumes, 2014, 47(3): 101-103.
[5] 丛爽, 蒲亚坤, 王军南. DCT图像压缩方法的改进及其应用[J]. 计算工程与应用, 2010,46(18):160-163.
[6] ERNAWAN F, ABU N A, SURYANA N. An adaptive JPEG image compression using psychovisual model[J]. Advanced Science Letters, 2014, 20(1): 26-31.