摘要
在停车场、隧道中GPS、Wi-Fi信号受限的情况下,提出一种基于激光雷达的车辆自主定位方法。采用激光雷达SLAM(simultaneous localization and mapping)算法,通过三维激光雷达点云匹配获取车辆的估计位姿;根据图优化方法和非线性优化方法,对所有位姿进行后端调整,进而得到分辨率可控的环境信息平面栅格地图;基于蒙特卡洛方法,采用粒子滤波器进行实时车辆定位,并提出了粒子采样的一种改善方式,实现了较高精度的激光雷达自主定位。结果表明:粒子滤波器能够有效地实现车辆在停车场等无GPS环境下的定位,定位精度在10 cm之内。
汽车定位是汽车自动驾驶的核心技术之一,也是实现环境感知、路径规划与控制等后续功能的基础。目前汽车定位采用的传感器主要有激光雷达、毫米波雷达、惯性测量单元(IMU)和摄像头。在室外空旷无遮蔽的道路环境下,基于GPS+IMU的定位导航方法已经可以保证较高的精
激光雷达的自主定位可分为建图和定位2个步骤。较早的研发中建图主要通过卡尔曼滤波器等方法实现,较近的研发中已经逐步采用基于非线性优化的SLAM算法,即同时定位与建图的方法。目前较为流行的激光雷达SLAM算法开源框架主要有ROS(robot operating system)中集成的Gmapping、Karto-SLAM、德国达姆施塔特工业大学提出的Hector-SLAM和谷歌开发的Cartographer-SLAM等。为了在较大尺度的室内环境中研究激光雷达SLAM,以某一100 m 50 m的测试停车场为例,基于Cartographer框架开展相关的优化工作。
根据SLAM算法得到环境地图后,在车辆运行过程中就可以实现实时车辆定位。车辆定位算法的实质是一个状态估计问题,一般分为状态预测与修正2个步骤。首先根据状态转移方程预测状态的当前估计值,然后根据当前的观测模型修正状态的估计值,状态估计就是不断地重复状态预测与修正的过程。卡尔曼滤波器和粒子滤波器是状态估计常用的2种算法。本研究中采用粒子滤波器进行车辆位姿的估计,得到车辆位姿的最大似然估
选择概率占栅格地图模
(1) |
概率占栅格地图的取值被限制在之间,表示栅格被占据的概率。每个栅格在作为图片显示时,也是一个像素。当每一帧激光雷达扫描数据被插入到概率栅格中时,都有一组表示命中与一组表示未命中的点集被计算。如果命中,就将最接近激光雷达扫描点的栅格加入到命中点集中。如果未命中,就将激光雷达扫描的原点与命中点连线,将连线上所经过的栅格都加入到未命中点集中。如

图1 概率占栅格地图模
Fig.1 Probability grid map mode
网格中每个栅格被占据的概率不是由一次扫描决定的,而是由经过该点的多次扫描共同决定的。对于之前已经观察过的栅格,如果处于命中或者未命中的点集中,将会被分配到一个占据概率。对一个之前已经观察过的栅格,可通过下式更新它的命中率与被占据概
(2) |
(3) |
(4) |
式中:表示命中率函数,表示命中率函数的反函数;表示栅格被占据的概率;、分别表示更新前、更新后的地图;h表示命中率;表示极值限定函数,可以将函数结果限定在给定的最小值与最大值的区间中。
SLAM通常分为前端和后端,前端主要充当里程计的角色,通过2帧激光雷达数据之间的相对变换确定车辆的位姿。通过旋转和平移将2帧激光雷达数据进行最大限度的重叠,就可以得到车辆在2帧数据之间的相对位姿变化。
现在的激光雷达SLAM一般不直接进行2帧数据之间的点云匹配,这是因为直接点云匹配计算量太大、耗时太长,而且匹配结果的误差较大、漂移严重,不利于后端的位姿优化。因此,一般使用激光雷达数据与当前构建的子地图Submap进行匹
(5) |
式中:为坐标系的变换矩阵;为旋转矩阵;为平移矩阵;为当前扫描数据中各个点云的坐标;为激光雷达坐标系与子图坐标系之间的相对位姿。激光雷达数据与子图之间的匹配可以通过构造一个非线性最小二乘问题得到解决,相应的目标函数如下所示:
(6) |
式中:为一次扫描数据的点集总数,为点集中的第个扫描点;为第个扫描点的空间坐标;为经过插值处理的概率占栅格地图。概率占栅格地图本来是离散的,为了保证
某次激光雷达数据与子图间的匹配如

图2 激光雷达数据与子图匹配示意图
Fig.2 Schematic diagram of lidar data matching with submap

图3 停车场局部点云配准地图
Fig.3 Local point cloud registration map of parking lot
基于图优化理论的位姿调整(在很多文献中也被称为闭环检测)是激光雷达SLAM的核心内容。后端优化用于修正SLAM过程产生的累积误差,提高车辆定位和地图构建的准确度。和前端匹配类似,后端优化也需要构造非线性最小二乘问题,如下所示:
(7) |
中:表示所有子图Submap在世界坐标系下的位姿集合,下标表示子图;表示世界坐标系下的激光雷达位姿集合,下标表示激光雷达;表示两者的相对位姿;表示两者的协方差矩阵,可通过Ceres求解器提供的内置函数进行估计;为损失函数;为残差。损失函数的使用主要是为了过滤掉一些误差过大的离群值。可以通过下式进行计算:
(8) |
(9) |
式中:为误差函数。计算中要用到

图4 未经过后端优化的停车场占栅格地图
Fig.4 Grid map of parking lot without back-end optimization

图5 经过后端优化的停车场占栅格地图
Fig.5 Grid map of parking lot with back-end optimization
通过前端的点云匹配以及后端的位姿优化就可以绘制出环境地图,但绘制出的环境地图并不能直接用于车辆定位,因为地图还存在少许特征缺失、尺度偏移等现象。同时,静态地图不应该含有环境的动态信息,如停车场中的车辆信息。因此,需要通过多次数据采集来绘制出大量信息完整的地图,再将地图拼接融合,并且剔除环境的动态信息。

图6 一次SLAM后的停车场占栅格地图
Fig.6 Grid map of parking lot after one SLAM
通过多次数据采集并进行信息融合,剔除停车场的车辆信息,补全每次局部采集缺失的信息后,最终得到的停车场占栅格地图如

图7 停车场概率占栅格地图
Fig.7 Probability grid map of parking lot

图8 停车场的建筑设计地图
Fig.8 Architectural design map of parking lot
车辆的在线定位通过蒙特卡洛定位方法予以实现。首先,通过运动模型确定车辆当前时刻的先验位姿分布;然后,在先验位姿周围投下大量的带权重随机粒子,粒子的权重代表着该位置与地图的匹配程度,匹配程度越高的粒子就越有可能在重采样过程中被选入后验概率分布的粒子集;最后,通过重采样过程得到车辆位姿的后验概率分布。
粒子滤波器是通过迭代方式不断更新车辆位姿的后验概率分布,以逐渐消除误差,最终达到精确定位车辆的目的。主要步骤为:①初始化粒子群,生成个带权重的粒子,每一个粒子代表一种可能的车辆位姿状态;②模拟粒子运动,通过里程计或者激光雷达里程计给出车辆位姿的先验估计;③计算粒子权重,通过粒子与概率占栅格地图的匹配程度给予每一个粒子一个权重,权重越大,表明该粒子越有可能代表真实的车辆位姿状态;④根据粒子权重重采样,权重越大的粒子就越有机会被重采样选中,之后便可以得到当前时刻车辆位姿的后验概率分布。不断地重复②~④就可以对车辆进行在线定位。粒子滤波器流程如

图9 粒子滤波器流程
Fig.9 Flow chart of particle filter
粒子滤波器定位的核心就是通过大量带权重的粒子模拟车辆运动,每个粒子都表示一个可能的车辆位姿。

图10 粒子滤波过程中粒子状态变化
Fig.10 Changes of particle state during particle filtering
粒子的权重可以通过计算各个激光雷达扫描点与概率占栅格地图中处于占据状态的栅格之间的距离和来确定。距离和越小,说明该粒子越能反映真实的车辆位姿,因此权重就越大;反之,距离和越大,粒子的权重也就越
(10) |
(11) |
式中:表示原始的概率占栅格地图;表示由距被占据状态栅格最近距离组成的二维地图矩阵;表示激光点云的坐标变换矩阵;表示地图矩阵中的距离上限;表示第q个粒子扫描得到的所有激光雷达扫描点的集合;表示第个粒子中的第个扫描点;表示中扫描点的总个数;表示第q个粒子的最终权重。

图11 不同位置粒子的权重分布
Fig.11 Weight distribution of particles at different positions
KLD采样是蒙特卡洛定位的一个变种,能够动态地随时间改变采样样本的粒子
(12) |
式中:表示抽样样本;l表示样本编号;、表示误差的界;表示上分位数为的标准正态分布。与传统的粒子滤波器不同的是,KLD采样将一个加权后的采样集合作为输入,因此上一时刻的样本没有被重采样。另外,将统计误差的界限限定在与之间。
测试中取值为0.05,取值为0.2。

图12 有无KLD采样粒子数变化
Fig.12 Particle number change with and without KLD sampling
在ROS中,数据的基本计算单元叫做节点。节点可以订阅消息,消息就是基本的数据流,经过计算之后再将消息发布出

图13 ROS节点数据流
Fig.13 Data flow of ROS node
定位精度包括位置精度和角度精度。由于真实的车辆位姿难以获取,因此无法进行比较。粒子滤波器在提供定位的估计位姿之外,还提供了一组位姿的协方差矩阵。协方差矩阵表征了数据信息的不确定度,因此以位置信息和角度信息的不确定度作为参考信息来表征粒子滤波器的定位精度。此外,还可以通过激光雷达点云与地图的重合情况对定位精度有一个大致的判断。

图14 粒子滤波器定位匹配图
Fig.14 Matching map of positioning for particle filter
对于定位精度的定量分析,采用协方差分析方法分析定位位置与角度的标准差,如

图15 定位位置标准差和迭代次数的关系
Fig.15 Relationship between position standard deviation and the number of iterations

图16 定位角度标准差和迭代次数的关系
Fig.16 Relationship between angle standard deviation and the number of iterations
算法的实时性直接代表着算法的效率。为保证算法的效率,首先需要设定粒子滤波器的更新策略。粒子滤波器状态的更新,并不是以时间为结算单位。如果设定时间更新,当车辆移动较慢或者车辆停止时,就会造成严重的计算资源浪费。因此,通过设置车辆的位置变化最小值,来判断是否进行粒子滤波器的迭代更新。当车辆的先验位置变化超过程序设定的最小值min_d时,便进行一次粒子滤波的重采样过程,更新车辆的位姿。
实验过程中,车辆在停车场中的平均行驶速度为1 m·
由
以自动驾驶中基于激光雷达的高精度定位为目标,在GPS信号缺失的室内环境下,通过激光雷达进行车辆高精度定位。从激光雷达SLAM入手对环境进行建图,将激光雷达的点云匹配与后端图优化转化为非线性优化问题,通过高斯‒牛顿迭代法进行求解。在得到精确的概率占栅格地图后,通过粒子滤波器对车辆进行定位,同时结合KLD采样等方法优化粒子滤波器中的粒子采样数量,实现了粒子采样数量的动态管理,进而缩减了计算时间。从实车测试结果可以看到,车辆定位的位置误差以及角度误差能够得到很好的控制,算法的计算复杂度较低,在一台普通配置的笔记本上也能够实现低延迟的实时定位。在保证定位精度的同时,实现了在线定位的实时性要求。该定位方法具有较强的鲁棒性,在行车过程中出现打滑等现象而导致误差的增加,粒子滤波器也能够很好地在后续的迭代过程中消除误差。
作者贡献声明
周 苏:拟定研究方向和内容,提供指导与规划项目进度,论文修改及定稿。
李伟嘉:进行算法研究、实验测试、数据采集、论文撰写。
郭军华:提供咨询,帮助知识框架梳理,指导论文撰写,修改论文。
参考文献
WENDEL J, MEISTER O, SCHLAILE C, et al. An integrated GPS/MEMS-IMU navigation system for an autonomous helicopter[J]. Aerospace Science and Technology, 2006, 10(6): 527. [百度学术]
LEVINSON J, THRUN S. Robust vehicle localization in urban environments using probabilistic maps[C]//2010 IEEE International Conference on Robotics and Automation. Piscataway: IEEE Press, 2010: 4372-4378. [百度学术]
王光国. 毫米波雷达防撞装置[J]. 公路交通科技, 1995, 12(2): 54. [百度学术]
WANG Guangguo. Millimeter-wave radar anti-collision device[J]. Highway and Transportation Science and Technology, 1995, 12(2): 54. [百度学术]
THRUN S. Probabilistic robotics[J]. Communications of the ACM, 2002, 45(3): 52. [百度学术]
ZAMAN S, SLANY W, STEINBAUER G. ROS-based mapping, localization and autonomous navigation using a Pioneer 3-DX robot and their relevant issues[C]//2011 Saudi International Electronics, Communications and Photonics Conference (SIECPC). Piscataway: IEEE Press, 2011: 1-5. [百度学术]
THRUN S. Learning occupancy grid maps with forward sensor models[J]. Autonomous Robots, 2003, 15(2): 111. [百度学术]
HESS W, KOHLER D, RAPP H, et al. Real-time loop closure in 2D LIDAR SLAM[C]//2016 IEEE International Conference on Robotics and Automation (ICRA). Piscataway: IEEE Press, 2016: 1271-1278. [百度学术]
HARTLEY H O. The modified Gauss-Newton method for the fitting of non-linear regression functions by least squares[J]. Technometrics, 1961, 3(2): 269. [百度学术]
AGARWAL S, MIERLE K. Ceres solver: tutorial & reference[M]. [S.l.]: Google Inc., 2012. [百度学术]
周帆, 江维, 李树全,等. 基于粒子滤波的移动物体定位和追踪算法[J]. 软件学报, 2013(9):220. [百度学术]
ZHOU Fan, JIANG Wei, LI Shuquan, et al. Moving object location and tracking algorithm based on particle filter[J]. Journal of Software, 2013(9):220. [百度学术]
LI T, SUN S, SATTAR T P. Adapting sample size in particle filters through KLD-resampling[J]. Electronics Letters, 2013, 49(12):740. [百度学术]
QUIGLEY M, CONLEY K, GERKEY B, et al. ROS: an open-source robot operating system[C]//ICRA Workshop on Open Source Software. Piscataway: IEEE Press, 2009:1-6. [百度学术]