无人驾驶汽车三维同步定位与建图精度评估
2019-12-26
长安大学 汽车学院 西安 710064
1 研究背景
三维同步定位与建图(SLAM)由于定位精度高、累计误差小等优点,成为国内外研究的热点,并被广泛应用于无人驾驶汽车的地图构建与定位。开源机器人操作系统是一种基于消息传递通信的分布式多进程框架[1],聚合了由全世界开发者实现的大量开源功能包,可以极大减小工作量,在各个领域得到大量运用。基于开源机器人操作系统,目前通过激光雷达进行地图构建的主流方法为激光雷达测距与建图(LOAM)算法[2]。LOAM算法将SLAM分为高频运动估计和低频环境建图,提高了SLAM的准确性。
评估激光雷达系统输出的航迹位置精度,以全球定位系统(GPS)真值为标准,将差分GPS的坐标转换至激光雷达的定位坐标系下,剔除异常值,绘制出GPS与激光雷达的轨迹比较图,并进行误差分析。
目前,相关研究多偏于理论,缺少对激光雷达定位精度的评估,而激光雷达在很大程度上决定了地图构建和定位的效果。笔者通过采用16线激光雷达实现无人驾驶汽车SLAM,并基于差分GPS评估其精度。
2 硬件设备
2.1 激光雷达
笔者采用的16线激光雷达是Velodyne公司出品的最小型三维激光雷达[3],保留了电机转速可调节的功能,实时上传周围目标距离和反射率测量值,具有100 m远程测量距离,安装方便,质量仅830 g。这一激光雷达可以实现每秒30万个点数据的输出,具有±15°竖直视场、360°水平视场扫描功能,防尘、防湿气等级为IP67,支持两次回波接收,能够测量第一次回波和最后一次回波的距离与反射强度,水平方向角度分辨率为0.1°~0.4°,测量频率为5~20 Hz,具有很高的精度。
激光传感器数据在开源机器人操作系统分布式架构下封装为sensor_msgs与PointCloud数据格式[4],由/laser_odom_to_init完成激光数据的发布工作,通过节点即可获得激光数据。
2.2 差分GPS
高精度车载GPS是当前无人驾驶汽车进行全方位定位不可或缺的设备,但仅仅依靠车载GPS进行定位,难以达到无人驾驶汽车的定位要求。在无人驾驶汽车领域,差分GPS应运而生。当前,差分基站通过电台或者4G网络将定位信息传输至车载GPS定位端,用于提高车载GPS的定位精度[5]。应用已知精确三维坐标的差分GPS基准台,求得伪距修正量或位置修正量,再将这个修正量实时或事后发送至GPS导航仪,对用户的测量数据进行修正,进而提高GPS的定位精度。
3 LOAM算法
LOAM算法将激光雷达和惯性测量单元的信息作为输入[6],分为高频运动估计和低频环境建图两个部分。高频运动估计指在高频率保真度下执行雷达里程计,消除运动畸变。在此过程中,惯性测量单元提供优先运动,并有助减轻总的高频运动。低频环境建图时,以同一个数量级的低频率运行,匹配和注册点云信息。
图1 LOAM算法框架
雷达里程计计算激光雷达在两次连续扫描之间的运动,去除Pk中的运动畸变,以10 Hz频率运行,称为里程计算法。雷达建图时进一步处理输出,对未失真的点云进行匹配,并以1 Hz频率输出至地图,称为绘图算法。对以上两个输出进行姿势变换集成,以10 Hz频率输出。
激光雷达获取点云数据,提取特征点。特征点选取边缘点和平面点,通过曲率计算进行选取。曲率C计算式为:
(1)
图2 点云投影
激光雷达运动在扫描期间以恒定的角度和线速度建模,通过一帧数据终止点相对于起始点的转换矩阵,可以对这一帧数据中的任意点按照其获得时相对于起始点的时间进行插值。获得每一个点的位姿。插值表达式为:
(2)
为了获得这一帧数据中的点和上一帧数据中点的对应关系,使用一个旋转矩阵R和一个平移向量τ来表示[7]。
(3)
通过计算点到线和点到面的距离,可以计算出用于优化的误差函数:
(4)
式中:d为距离。
(5)
式中:J为雅可比矩阵;λ为由Levenberg-Marquardt算法确定的因数[8]。
特征点到对应边或对应面的距离越大,分配的权重就越小。如果距离大于阈值,那么将权重设置为0。
在算法中,将已经消除畸变的点云先转换至全局坐标系,再与局部地图进行匹配。局部地图指在已经匹配好并且转换至全局坐标系下的前10 m3点云。特征点的数量是里程计算法的10倍,在地图点云Qk中确定特征点的关联时,通过对特征点周围点云簇进行主成分分析[9],求点云簇的协方差矩阵特征值和特征向量,从而得到对应边和对应面。
图3 姿势变换集成
在LOAM算法的两种具体算法中,需要提取位于目标边缘和平面上的特征点,并分别将特征点匹配至目标边缘直线段和平面。在里程计算法中,通过保证快速计算得到特征点的对应关系。在绘图算法中,通过保证精度得到特征点的对应关系。
4 试验分析
4.1 试验平台及架构
试验平台为一辆黄色园区车,其实物如图4所示。激光雷达安装在车前方,差分GPS安装在车顶。Linux嵌入式平台是一套免费使用和自由传播的类Unix操作系统[10]。通过无线保真与计算机进行通信,计算机端运算能力强,可进行数据量较大的运算。Linux嵌入式平台由于运算能力有限,只能运行基本的功能包。笔者采用如图5所示GPS数据采集和绘图软件,绘制GPS路网文件和无人驾驶汽车实时路径。当前帧GPS 数据显示当前通过通用串行总线接口截取到的原始数据,当前GPS位置显示当前无人驾驶汽车定位的经纬度,在GPS设备和测试通信区域,可以通过按钮打开GPS设备。测试按钮用于测试当前GPS数据采集和绘图软件与主控制软件是否通信正常。
图4 试验平台实物
图5 GPS数据采集和绘图软件
4.2 试验环境
试验以图6所示环境地图为试验场景,其中黑色曲线为GPS轨迹,由车载GPS得到。将GPS定位数据与激光雷达获得的传感器点云数据记录在文件中,采用LOAM算法进行定位与建图,对定位的精度进行评估。
4.3 试验结果
在激光雷达的测量数据中,如果有非常明显的异常值,可以对该值进行处理。在试验中,为方便研究,将GPS数据值进行有效提取,使GPS数据与激光雷达数据长度保持一致,两组数据的一次差值如果大于60 cm,那么认为是异常值。通过MATLAB软件进行绘图,对差分GPS和激光雷达的曲线进行误差分析,如图7、图8所示。
图6 试验场景
图7 差分GPS与激光雷达轨迹对比
图8 激光雷达误差分布
由图7和图8可以看出,基于LOAM算法的激光雷达定位精度较高,虽存在一定误差,但能将误差控制在30 cm内,累积误差不随无人驾驶汽车行驶距离的增大而增大。
在不同车速和转向时,LOAM算法能很好地消除位姿估计误差。随着无人驾驶汽车的行驶,位姿估计累积误差可以得到有效控制。弯道误差波动较大,主要原因是无人驾驶汽车姿态瞬时改变量较大,从而造成障碍物匹配不佳。
5 结束语
笔者应用16线激光雷达和差分GPS进行SLAM试验,对比基于LOAM算法的激光雷达定位和基于差分GPS的定位,确认激光雷达定位曲线与差分GPS轨迹基本保持一致。通过图形直观展示了激光雷达定位误差分布的特点和变化规律,对影响定位误差的主要因素进行了分析,对LOAM算法中的应用和SLAM的精度评估具有参考价值。