基于激光雷达和SLAM定位的麦克纳姆轮小车研究
2018-11-11杨海程邓达强黄菁菁陈海燕何梓乐
杨海程, 邓达强, 黄菁菁, 陈海燕, 何梓乐
(华南理工大学广州学院,广州510800)
0 引言
在随着室内移动机器人应用的兴起,移动机器人产生多种定位方式,其常用的定位方式有:正交码盘加陀螺仪、摄像头定位、激光雷达定位等,每种定位方式各有优劣。基于SLAM(simultaneous localization and mapping),即时定位与地图构建,机器人在自身位置不确定的条件下,在未知环境中创建地图,利用地图进行自主定位和导航,而利用激光雷达作SLAM传感器,精度很高,速度快,计算量也不大,且容易做成实时SLAM。SLAM定位通过在位置不断移动的情况下,不断获取传感器对环境感知信息,从而实现定位和导航。基于麦克纳姆轮技术的小车可以实现前行、横移、斜行、旋转及其组合等运动方式,灵活方便。两者的高度结合,不仅增强了多方位多领域的应用性,且更提高了生活日常的自动化水平。对于企业而言,从生产到服务层面,灵活运用其小型自动化的特色与其产品相融合,会提高工作效率与效绩。
小车的定位问题是整个研究的重中之重,在众多的车载传感器中,激光雷达以其灵敏度高、准确性强被广大科研工作者所青睐。激光雷达是以发射激光束探测目标的位置、速度等特征量的一种雷达系统,加上SLAM技术的辅助,实现机器人的自主定位和导航。本课题研究的小车是一种基于麦克纳姆轮式的四轮独立全方位驱动,能够实现小车在平面内任意方向的移动。首先对小车的整体构造进行详细的说明,对小车控制系统和运动系统进行设计,为小车实现精准定位与全方位移动奠定了基础;其次对小车进行运动力学的分析,对研究分析的结果进行试验总结;最后对小车的定位与导航系统进行研究,寻找最合适的定位系统,从而实现小车的精准定位。
1 小车整体构造
基于激光雷达SLAM定位的麦克纳姆轮小车能够在激光雷达和SLAM定位的作用下按照程序设定的路径进行作业。我们可以在小车的机身增加一些作业执行辅助工具,如机械臂、滚轮等扩充它自身的功能,由于具备无人驾驶、自动化程度高、定位准确、可以连续长时间作业等特点,它可以被应用于仓储物流领域和医疗康复领域。
基于激光雷达SLAM定位的麦克纳姆轮小车系统结构图如图1所示。小车的整体构造分为动力系统、控制系统、电路系统、定位系统。
1.1 动力系统
小车的动力系统由24 V航模电池供电,4个带编码器的直流减速电动机,4个麦克纳姆轮组成。带编码器的直流减速电动机能够读取轮子转一圈反馈回来的脉冲数,然后通过处理脉冲数据能够知道轮子转一圈的长度,进而推算出轮子转一圈小车行走的路程。
图1 小车系统结构图
1.2 电路系统
小车的电路系统包含1个急停开关、24 V转12 V稳压模块、4个电动机驱动器、1个主控板、1个USB转TTL串口模块和1个can通讯模块。各个模块之间合理布置又相互关联,实现对整车的供电。
1.3 底盘设计
小车的底盘整体设计如图2所示。考虑到需要放置激光雷达、4块直流电动机驱动、1块STM32主控板、电脑等等,使用4个麦克纳姆轮的设计。该小车底盘设计具有如下特点:1)拥有足够的空间放置各种控制设备以及外设;2)该底盘设计是全方位移动平台,具有灵活移动的特点;3)能够使用4个麦克纳姆轮来解算出小车的里程计信息,即小车当前的位置。
图2 小车底盘
1.4 小车上层和激光雷达安装位置
小车上层为手提电脑,电脑放在小车后面。里面运行ROS机器人操作系统,激光雷达安装在小车的正前方位置,需要给小车激光雷达一个偏移量,这里以小车的中心点为中点,往前偏移0.175 m,往上偏移0.125 m。
2 小车系统整体设计
2.1 小车控制系统设计
1)控制芯片。控制芯片采用STM32F103VET6,这款单片机拥有足够强大的内存和功能来对小车进行控制。STM32上有很多开源的代码,里面很多代码写的很优秀,可以在前人的基础上学习控制经验,再进行小车的开发。
2)操作系统。小车控制器操作系统采用ROS。ROS是开源的,提供了很多实用的工具包和软件包,合理利用好这些软件工具可以使得研究开发更加快速。
3)操作系统 ROS与STM32之间的通讯。ROS是依赖于Linux系统的,Linux系统上面使用boost库(为C++语言标准库提供扩展的一些C++程序库的总称)来与STM32(嵌入式单片机)进行通讯,通讯方式采用串口通讯,通讯校验方式采用crc校验(即循环冗余校验码)。连接电脑与单片机之间需要使用一个USB转TTL模块来进行通讯。
上位机部分串口通讯配置代码:
serial_port sp(iosev,"/dev/ttyUSB001");//设置串口名称
sp.set_option(serial_port::baud_rate(115200));//设置波特率
sp.set_option (serial_port::flow_control(serial_port::flow_control::none));//设置控制方式
sp.set_option(serial_port::parity(serial_port::parity::none));//设置奇偶校验
sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one));//设置停止位
sp.set_option(serial_port::character_size(8));//设置字母位数为8位
ROS与STM32通讯实测效果如图3所示,上位机为ROS,使用串口与STM32之间进行通讯。
图3 ROS与STM32通讯实测
2.2 小车运动系统设计
1)麦克纳姆轮运动模型。麦克纳姆轮的这种移动方式是基于一个有许多位于机轮周边的轮轴的中心轮的原理,这些成角度的周边轮轴把一部分的机轮转向力转化到一个机轮法向力上面,依靠各自机轮的方向和速度,从而实现机器人的全方位移动。运动分析见图4。
从右上角开始定义为轮子1,逆时针方向开始,依次定义为轮子2、轮子3、轮子4、假设这4个轮子的速度分别为 wheel1、wheel2、wheel3、wheel4。以笛卡尔坐标系为标准,小车轮子向右方向的速度为Vx,小车轮子向前方向的速度为Vy,小车轮子逆时针方向的速度为Vspin(轮子的角速度)。根据麦克纳姆轮的运动模型分析,可以推断出小车的运动模型公式为:
图4 麦克纳姆轮运动分析
2)小车里程计的获取。通过安装在每个轮子的电动机上面的编码器,来读取编码器的值,先计算出每个轮子的线速度,进一步计算出小车整车的x方向的速度,y方向的速度和角速度。
轮子的线速度=单位时间内采集编码器的值×4倍频×编码器线速×减速比×轮子转一圈的周长(即轮子的直径×π)。
假设小车整车的x方向的速度为Car_Vx,y方向的速度为Car_Vy,角速度为Car_Vth,小车左右轮子之间的距离为distance_of_wheel,小车前后轮子之间的距离为axle_of_wheel,可以推断出计算公式为:
通过STM32上面的串口通讯,将计算出来的Car_Vx,Car_Vy和Cat_Vth传输给上位机ROS,在上位机作进一步的处理,可以得出小车当前的位置信息(即里程计信息)。假设单位时间内采集时间间隔为dt,小车整车的x方向速度,y方向速度,角速度分别为vx,vy,vth。
X方向增加的距离为delta_x=(vx*cos(th)-vy*sin(th))*dt;
Y方向增加的距离为delta_y=(vx*sin(th)+vy*cos(th))*dt;
增加的角度为delta_th=vth*dt;
X方向移动的距离为x=x+delta_x;
Y方向移动的距离为y=y+delta_y;
小车转过的角度为th=th+delta_th。
所以利用上面的公式可以计算出小车当前的里程计信息。
2.3 小车通讯系统设计(见图5)
2.4 试验结果与分析
试验结果表明,麦克纳姆轮移动的方向、速度和里程的精确获取等高度统一,能实现机器人的全方位移动。
3 小车定位与导航
3.1 小车激光雷达与SLAM结构
小车激光雷达SLAM结构由VO、后端、建图、回环检测组成(如图6)。
图5 小车通讯系统
3.2 激光雷达建图
采用日本北阳的激光雷达,型号为UBG-04LX-F01,该雷达的扫描距离是4 m,扫描范围240°,扫描精度±30 mm (0.06~1.00 m距离内),可以满足在室内进行建图导航的要求,实物如图7所示。
图6 小车激光雷达与SLAM结构示意图
图7 激光雷达
图8 gmapping建图效果
激光雷达的建图在ROS上面有开源的建图包gmapping,使用gmapping即可进行地图构建,建图效果如图8。
使用遥控的方式来遥控小车在室内环境完成地图的构建。在此期间,有两个因素会影响地图的质量:一个是小车里程计的准确性;一个是激光雷达的精度。这里假设小车不打滑的情况,使用4个麦克纳姆轮来解算出小车的里程计还是比较准确的。激光雷达的精度可以满足要求,所以构建出来的地图质量较好,小车在室内的建图如图9所示。
图9 小车的室内建图
图10 小车的里程计数据
小车往x轴方向前进0.5 m,上位机实时监测到的数据如图10所示。控制小车往x轴方向前进0.5 m,实时监测到的数据为0.506 m,在误差范围内,里程计数据准确性高。
3.3 小车定位
小车的定位算法使用ROS上面开源的AMCL(自适应蒙特卡洛定位算法),这个算法采用粒子滤波的方式来进行机器人的定位。粒子滤波比较粗浅的来说,就是在一个地方均匀地撒一把粒子,然后通过获取机器人的动作来移动粒子,如果机器人向前移动了1 m,所有的粒子也就向前移动1 m。然后使用每个粒子的位置信息跟观察到的传感器信息(激光)作对比,从而赋予每个粒子一个概率。根据生成的概率来重新生成粒子,概率越高生成的粒子越多。重复迭代之后,所有的粒子会慢慢地收敛到一起,机器人的位置也就能推算出来了。小车的AMCL定位算法测试效果如图11所示。
图11 AMCL定位算法
图12 小车的室内定位
小车的定位主要用到AMCL算法输出的定位坐标,主要为x,y的坐标和角度。然后通过串口通讯将坐标信息发送 给 STM32,STM32上面作运动控制处理,先将小车的角度扭转过来,再将小车移动到ROS上位机发送过来的x和y的坐标,从而实现小车的室内定位。小车的室内定位测试效果如图12所示。
图13 ROS上位机监控效果
图14 ROS上位机输出坐标信息
如图13所示的是ROS上位机进行实时监控的小车定位效果图,深色部分为障碍物的膨胀区域,箭头为小车的定位目标点,线表示小车的定位移动线路。
小车定位时候上位机实时监测到的输出定位坐标如图14所示,position为输出的x,y坐标,direction为旋转角度。小车的定位坐标信息是实时更新的,定位坐标信息在误差范围内。
3.4 试验结果与分析
试验结果表明,通过AMCL算法得出的定位坐标达到拟合的统一性和准确性,使室内小车的位置和移动都得以科学化地控制。但在试验中,由于激光雷达的建图和AMCL算法的精确度不够,导致几次试验结果超出误差范围,这表明,试验结果的精准离不开试验过程控制的准确无误。
4 结语
本文系统地介绍了基于激光雷达和SLAM定位的麦克纳姆轮小车研究的整体框架以及实现方式。在多次试验测试中,麦克纳姆轮小车展示了其小车里程计的准确性和地图质量构建的完整和准确,使得其定位达到准确、快速、标准,能灵活地完成指定目标的整体运行。基于SLAM算法和激光雷达的联合,是麦克纳姆轮小车运行的准确性和灵活性的新阶段,同样也是自主移动机器人发展在形式上的创新。该项目的研究成果将对物流搬运、搭载上机械臂等领域的应用有着科学的意义。
本文以麦克纳姆轮小车的定位和导航的精确度研究为核心,灵活运用SLAM算法的理论依据和准确地构建激光雷达图,两者的结合为小车定位的精确度提供了强有力的基础。该研究的成果将对仓储物流领域和医疗康复等领域的自主化水平有一定标准化、科学化的提升。同样,该研究在试验测试中存在一定的不确定性,此不确定性也表明对SLAM算法的掌握不够深入,但经过多次的试验测试,该不足之处已在慢慢改正,可为未来试验提供经验参考。