周海冰, 陶重犇, 孙云飞, 班建民, 高涵文
(苏州科技大学 江苏省建筑智慧节能重点实验室, 苏州 215009)
近几年来, 导航机器人研发势头良好, 许多国内外的研究机构已经开发出了各种类型的导航机器人平台.但依旧存在机器人研发成本高、智能化水平低等问题[1].一些导航机器人平台是基于承载能力有限的小型移动底盘开发而来. 由于缺少相应计算与感知能力的支持,因此对于机器人的导航精度或信息处理能力产生影响,比如iRobot Create扫地机器人; 另一些导航机器人平台是按照定制要求设计的. 其硬件通用性与扩展性较差. 比如Willow Garage公司的PR2机器人、波士顿动力公司的RTCs导航机器人和斯坦福大学的STAIR1导航机器人平台等; 还有针对教学与科研而开发的全套尺寸导航机器人, 比如Pioneer系列的导航机器人. 但是该类机器人不仅硬件兼容性较差, 而且价格昂贵[2].
目前, 导航机器人主要基于地图来实现运动路径的规划、运动控制与自主导航. 然而, 由于许多现有的导航机器人实验平台不仅硬件通用性、兼容性较差,而且存在传感器感知能力与计算能力不足等问题, 从而导致在室内环境地图构建时普遍存在累积误差的问题. 宋宇等人提出利用一种平方根容积Rao-Blackwillised粒子滤波SLAM算法, 来减少非线性模型的累积误差,并提高环境地图的构建精度[3]. 杨鸿等人基于Kinect深度摄像头, 首先利用SURF算子提取图像的特征点并匹配, 并结合RANSAC算法剔除可能存在的误匹配点, 完成初始配准, 再运用ICP算法对采集到的深度图像进行精确配准, 最后得到三维环境地图[4]. 该方法生成的地图虽然精度较高, 但是计算量巨大, 且较为耗时.Yu等人提出利用双目视觉获得深度信息, 并基于场景分割理论构建信息不确定数学模型, 并根据概率的方法构建三维栅格地图[5]. 该算法需要对双目获取的图像进行融合, 在解决地图精度的同时, 也存在计算量较大的问题.
针对上述建图研究中普遍存在的累计误差问题,本文首先按照模块化设计思想开发一台导航机器人实验平台, 并提出一种融合了先验估计的最大期望算法,用于修正建图时由于导航机器人车轮打滑产生的累积误差. 从而实现准确的室内环境地图构建.
本文选用ARM Cortex-M3微处理器作为导航机器人的主控系统, 并包含通信、感知、电机、显示和电源五个终端模块. 主控系统以集中式控制的方式实现数据存储与运算, 终端只负责与主控系统间的数据传输. 本文设计的主控系统按照模块化理念设计系统的各个部分, 从而保证系统可扩展性[6]. 本文设计的导航机器人硬件总体结构如图1所示.
本文设计的导航机器人底盘如图2所示. 主控系统是整个机器人的控制中心, 主要负责整个系统的控制决策, 以及机器人导航的实时计算. 电源模块由一个24 V的蓄电池构成, 经过电压转换处理后为机器人系统供电. 显示模块由深度摄像头组成, 主要通过把摄像头摄取图像信息传送到主控系统进行处理. 通信模块利用无线网络向上位机传输数据, 并由上位机负责对数据的进一步处理. 电机驱动模块负责执行主控系统对步进电机的控制指令.
图1 导航机器人硬件总体结构图
图2 本文设计的机器人底盘
步进电机工作原理是实现电脉冲信号与角位移或线位移之间的转换. 电机在额定功率范围内的转速只与信号的频率和脉冲数有关, 与负载无关. 因此在驱动模块的软件设计中只需考虑信号的频率和脉冲数[7]. 在本系统中由微处理器的定时器产生一定频率的脉冲信号, 再通过步进电机驱动器转变, 使其达到不同的速度.
本文设计的驱动模块程序流程图如图3所示, 在对驱动模块进行初始化与复位后, 确定目标距离, 并计算出电机需要走的步数和脉冲当量. 电机根据接受的信号以一定方向转动固定角度. 同时分别利用脉冲个数精确控制电机的角位移量, 利用脉冲频率控制电机转动速度与加速度, 从而实现调速.
图3 驱动模块流程图
控制软件用于步进电机的速度的升降, 其结果对电机工作稳定性、速度升降快慢、以及定位精度等均会产生影响. 本文采用变速控制方法. 在启动时以低于响应频率的速度运行, 再逐渐提高速度直至恒定速度.当即将抵达终点时逐渐减速, 直至低于响应频率速度,最终速度降低至停机. 距离较长时的速度特性曲线如图4所示.
图4 机器人运行速度特性曲线
感知模块的作用是使机器人具备感知外界环境的能力, 并对感知到的环境做出相应反应[8]. 在感知模块软件设计中, 主要是对激光测距进行编程和实现. 激光测距的实现就是时差数据的采集过程. 本文设计的激光测距控制程序流程图如图5所示. 该程序主要完成激光数据的循环采集, 并将随时间的变化量传回主控系统.
程序开始时的初始化包括定时器和外部中断的初始化. 反射光中断由外部中断触发, 中断程序由定时器实现. 比如在实验中按照 0.5 ms实现一次中断. 可通过计算前后两次的中断次数得到时间变化量. 从而计算出障碍物与机器人之间的距离.
图5 激光测距控制程序流程图
常见的地图构建方法首先利用里程计和激光测距仪分别采集距离数据和位置数据. 在对机器人在地图中的坐标进行定位后, 再将其坐标信息添加至地图中.然而, 由于机器人从动轮经常出现车轮打滑等原因容易产生累积误差. 传统建图方法无法有效地解决地图的闭合问题. 因此, 本文针对该问题提出了一种融合了先验估计的最大期望概率建图方法. 该算法实现过程如文.
将t时刻机器人最可能的位置表示为
首先对公式(1)采用梯度下降方法求解, 再将求解出的位置对应的激光测距仪探测数据ot, 分别添加至地图mt. 从而得到新地图mt+1:
在t=0 时位于坐标系原点. 已知t–1 时刻机器人位置st–1概率分布为那么结合测距数据ot和机器人的运动at–1可得:
其中,η表示归一化量,mt–1是已知的地图.
利用Markov定位算法更新公式(4):
最后, 利用最大期望概率算法更新后的地图如公式(7)所示:
在环境地图构建过程中, 给定机器人位置的返向修正量可以表示为:
在安装有运动捕捉系统的实验室, 利用本文提出的基于最大期望值的增量式建图算法, 开展二维环境建图和导航机器人自主导航实验. 运动捕捉系统在实验中用于准确地提供机器人实时坐标. 本文设计的导航机器人在Linux操作系统中完成编程, 并用于实际实验, 以便验证本文提出算法在修正累积误差方面的效果. 该型导航机器人实物图如图6所示.
图6 本文设计的导航机器人实验平台
实验过程是利用本文设计的导航机器人在对室内环境建图的同时, 对机器人自身进行定位, 并且地图和机器人位置信息将不断更新. 利用本文提出的最大期望算法将电机里程计修正数据与传感器获取的环境信息进行融合, 并在构建好的地图中进行路径规划和自主导航. 导航机器人路径规划和自主导航过程如图7所示.
图7 本文设计的机器人构建地图后进行自主导航
本文在地图中任意选择6个坐标点, 用于本文提出的算法对累计误差进行修正, 并对坐标修正的性能进行评估. 对应的6组实验结果如表1所示, 其中的坐标单位是米. 由表1中的数据可知, 利用本文提出地图构建算法修正后的坐标值接近实际值. 此外, 修正后的横坐标与纵坐标数据与实际坐标之间的平均误差分别为5.3 cm和3.7 cm. 由于机器人的位置误差已达厘米级, 从而满足了室内环境地图构建的要求. 因此, 本文提出的增量式最大期望概率建图算法能有效地、准确地对室内环境进行地图构建.
本文针对目前导航机器人设计中存在的通用性差、计算能力和感知能力弱、硬件无法兼容等问题,基于模块化设计思想设计了一台导航机器人. 并针对导航机器人在建图时普遍存在的累积误差问题, 提出了一种融合了先验估计的增量式最大期望概率建图算法. 由于导航机器人的工作环境通常较为复杂, 在完成环境地图的初步构建之后, 如何通过导航机器人具备不断维护随环境动态更新的地图, 将是下一步的研究内容.
表1 本文算法修正前后坐标之间的比较 (单位: m)