自动驾驶中基于地图的视觉定位方法
Posted Being_young
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动驾驶中基于地图的视觉定位方法相关的知识,希望对你有一定的参考价值。
点云PCL免费知识星球,点云论文速读。
文章:Visual Map-based Localization applied to Autonomous Vehicles
作者:JEAN-ALIX DAVID
编辑:点云PCL
欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。未经博主同意请勿擅自转载。
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。
摘要
本论文是在高级驾驶员辅助系统,特别是自动驾驶车辆的背景下进行的。其目的是提出一种增强道路车辆定位的方法。提出的方法是使用摄像头检测车道线,并将其与地图匹配,以定位车辆的正确位置。本文分为三个部分:地图、直线检测器和定位,该地图基于OpenStreetMap数据,线检测器是基于边缘检测的,将结果与迭代最近点算法进行了比较,使用了诸如ROS(用于数据同步)和CUDA(用于并行化)等技术。
介绍
本文的目的是实现一种使用视觉信息和地图来改进车辆定位的方法。我们还希望验证以下限制:
•实时处理
•适合车辆使用的廉价设备
•嵌入在车辆上。方法如图1.1所示。
它分为三个部分:
•OpenStreetMap地图的处理
•车道线检测
•定位,包括与ICP算法的比较
图1.1:该方法的三个部分:地图生成、边缘检测和与ICP算法配准
OpenStreetMap数据
为了改进定位方法,我们需要精确的地图,此外,由于我们的成本限制,我们希望它是免费和开源的。因此,OpenStreetMap看起来是一个很好的解决方案,因为它是免费的、开源的和用户自制的,这意味着它易于使用并适应我们的需求。
OpenStreetMap数据由三个基本原语组成:
•节点
•路线
•关系
节点用其纬度和经度定义地理点,这可以是真实的物理对象,例如公共汽车站,也可以是定义道路形状的假想点。路线定义更复杂的特征,如道路和边界,它们包含在节点的有序列表中,节点列表定义特征的形状。如果道路的第一个节点和最后一个节点相同,则这是一条可以定义区域的封闭道路,关系描述节点、路线和/或路线关系之间的其他约束。如图3.1所示
图3.1:在自顶向下视图上表示OpenStreetMap数据
车道线生成
OpenStreetMap的一个问题是它缺少车道线数据,因此,必须在地图上添加车道标记,这是使用道路和车道数据半自动完成的,我们创建了一个新的OpenStreetMap地图标签来识别车道标记,标记的键是“标记”,其值是“中间”或“边框”,具体取决于线的位置。
然后,对于每条道路,我们创建了道路上车道数加上一条的线,边界线的“标记”标记值为“border”,其他线的值为“middle”。如图3.2所示,这一部分由我们所称的线生成器自动完成。线生成器对每条道路进行迭代,然后对道路的每个节点进行迭代,以将节点复制所需的次数,从而创建表示车道标记的新道路。由于车道相对于节点坐标的位置没有约定,我们决定将坐标设置为道路的中心,并在道路两侧分割车道。
图3.2:车道线生成器从数据库中获取原始数据以生成线并将其放回数据库,在手动校正之前,它是离线完成的。
图3.3:车道标记生成的表示
最终手动纠正了一些地方,主要是十字路口,这是使用专用软件完成的,用户可以使用卫星视图作为参考,独立地移动每个节点和路径,这部分是离线完成的,然后数据库可以被其他算法使用。这是一个漫长而挑剔的过程,这显示了OpenStreetMap对于全面实现的另一个好处,因为如果我们发布新标签,所有贡献者都可以做到这一点。图3.3显示了数据转换的结果,图3.4显示了带有卫星图像的十字路口的详细视图。
图3.4:对十字路口等复杂区域的数据进行了校正,这里是带有卫星视图的校正十字路口的详细视图。
主要内容
边缘检测器
这部分描述了用于检测车道标记的方法。它基于López提出的方法,并使用边缘作为特征来检测线条。
该方法使用图像的拉普拉斯值来检测边缘,如Tran和Lux提出的,对于每个图像,算法遵循以下步骤:
1.使用摄像机相对于车辆的位置、车辆相对于地面的横滚角和俯仰角将图像投影到水平面中。
2.拉普拉斯算子的计算。
3.消除拉普拉斯算子低于阈值的像素。
4.梯度的计算以及拉普拉斯算子与梯度之间的比率。
5.消除比率低于其他阈值的像素。
6.海森矩阵、其特征值及其特征向量的计算。
7.消除特征值几乎相等的像素。
第一步允许我们在与地图相同的平面上工作,并使用相机校准信息以及车辆的横摇角和俯仰角进行投影,使用横摇角和俯仰角可以校正投影,它们由惯性测量单元(IMU)给出。然后,通过保持像素具有较高的拉普拉斯值,我们只保持亮的对象被对应于边缘的较暗区域包围。拉普拉斯算子的定义如下:
在图3.5中,我们可以看到图像的拉普拉斯算子,需要进一步的步骤来提取车道标记。
图3.5:拉普拉斯计算结果
拉普拉斯算子和梯度范数之间的比率允许移除这些对象的边缘,从而只允许保留每个边缘的中心部分。事实上,在明亮物体的中间,梯度几乎为零,而在边缘,梯度将非常高。因此,通过除以梯度的范数,我们去除了与明亮对象边界相对应的像素。
在图3.6中,我们可以看到算法的结果。图像3.6a是来自照相机的图像,图像3.6b是该图像在俯视图上的投影,图像3.6c示出了检测到的线。
图3.6 车道线边缘线检测
ICP算法
在这部分我们描述了ICP算法,该算法用于配准地图和检测到的车道线,然后校正车辆的定位,该算法包括将检测到的线与地图中存储的线进行匹配,找到校正地图中车辆位置的变换,并在应用变换后进行迭代。
车道线匹配
匹配的输入是被视为车道标记的像素点云,以及从GPS给出的位置周围的地图中提取的局部路段列表,对于点云中的每个点,我们搜索与预定义范围内的点最近的线,该方向与赫森矩阵的主分量一致,这允许在不同方向上存在线时进行更好的匹配,定义范围是为了避免将点与距离太远的线匹配,一开始不超过一条车道,如果没有像素匹配,则范围会增加,然后使用该匹配来找到校正的位置,通过最小化以下误差的变换给出校正位置:
平台和测试环境
平台测试已使用雷克萨斯LS600h完成,如图4.1所示,配备了以下传感器:
•GPS
•IMU
•单目RGB摄像头
•立体视觉摄像头
•激光雷达
•CAN总线
在我们的实验中,我们只使用GPS、IMU和单目摄像头。
环境测试
环境由不同类型的道路组成,包括十字路口和环岛,但主要是公路。预定义路线见图4.2,长11.3公里。它由公路、带有十字路口和环形交叉口的居民道路组成,测试主要在天气条件良好的白天进行。
图4.2 测试路线
图8,E形序列算法的结果,(a) 轨迹结果,其他算法由于假回环而不准确,(b) 我们算法的拒绝回环的结果,具有低权重(红线)的约束对优化轨迹没有贡献
车道线检测
实现该检测在C++中完成,使用OpenCV库进行图像处理,并使用ROS管理所有传感器和平台部件之间的交互,尤其是图像和惯性数据之间的同步。因此,输入是来自摄像机的图像以及车辆的横摇角和俯仰角,输出是被视为车道标记的像素点云。为了提高性能,使用CUDA和GPU并行化拉普拉斯、梯度和海森矩阵计算。这允许使用实时算法,因为图像处理速度更快。
结果在图3.6和4.3中,我们可以看到公路线路检测的结果,结果很好,因为所有的线都被检测到了,而在没有线的地方没有检测到,然而,太细的线并不总是被检测到或仅部分被检测到,但这并不是一个真正的问题,因为一条线具有更多的像素不会显著增加ICP的结果,我们也可以在长线上看到一些混叠,事实上它们并不总是对齐的,这是因为我们只保留一个像素宽的线,在住宅道路上,检测也适用于线路,但也有很多检测不是车道标记,例如,人行道、电杆或树木通常被检测为直线,因为它们的细长形状和颜色比背景更亮。我们可以在图4.4中看到,检测到了线条,但也检测到了背景中的物体,如安全栏杆或树木。环岛的结果甚至是最糟糕的,因为摄像机看不到太多道路,事实上,当进入环岛时,道路会超出摄像机的视野。
图4.3:公路上的车道线检测
图4.4:环岛道路上的车道线检测
讨论
车道线检测器在高速公路场景中有很好的结果,但在其他类型的道路上则有更多的混合结果。这些结果主要是由于这样一个事实,即在高速公路上,图像的大部分被道路覆盖,但在居民区,摄像机看到更多的背景,因此图像包含更多无用信息。改进这些结果的一种方法可以是使检测器适于检测不同尺寸的线,而不是在这里针对平均尺寸的线校准检测器。此外,更好的相机方向也可以改善结果,因为对于这种应用,我们只需要看到道路,并且在投影图像时会导致更少的误差。
ICP
实现这一部分也在C++中实现,并使用ROS处理不同帧之间的点云和转换。
ICP改善定位的结果高度依赖于车道线检测器的结果,事实上,当车道线检测器返回良好的结果时,我们可以期望ICP获得良好的结果,但如果检测不好,ICP最有可能出现偏差。因此,结果对于高速公路场景来说是好的,这意味着定位得到了很好的修正,因为汽车被检测到在右侧车道上,而对于有很多十字路口和环形交叉口的道路来说则不太好。在图4.5中,我们可以看到公路情景下的ICP结果。
图4.5:公路上的ICP修正
它发生在一条两车道的道路上,然后与另一条双车道的道路汇合,在右下角,我们可以看到摄像机的视图,因此我们位于最右边的车道上,绿色线条与地图的线条相对应,红点对应于检测到的线,红色箭头与GPS给出的位置相对应,GPS将汽车置于最左侧车道的左侧,白色矩形表示汽车处于正确的位置,它位于最右侧车道的中间,即正确的位置。在车道数较多的道路上,如高速公路,几条车道的匹配可能会出错,实际上,车道的相对位置几乎总是正确的,但车道数的偏移有时可能会出错,它取决于初始位置,初始位置在开始时设置为GPS位置,当初始位置距离实际位置不太远时,或者当车道不太多时,如在高速公路入口道路上,校正效果很好。在住宅道路上,如果车道线探测器工作良好,则结果相当。但是,当到达十字路口或环形交叉路口时,结果的质量会下降,因为在那里,由于线路检测不良,ICP最有可能偏离,只有当匹配次数较低时,算法才会收敛到GPS位置,这相当于重置位置。
讨论
ICP运行良好,但仍有一些改进,由于未滤波,有时位置会出现一些跳跃,因此,可以添加滤波以平滑校正位置的变化,从而避免一些不连续性,改进该算法的另一种方法是根据车道线检测器的结果对每个点的误差进行加权。另一个需要修正的问题是纵向修正,即道路方向的修正。事实上,在直线道路上,横向位置得到了很好的校正,但改变车辆的纵向位置不会影响匹配,因为我们将点与线匹配,因此也不会影响结果。纠正这种情况的一种方法是考虑汽车的速度,并使用它来纠正纵向位置。我们还简要测试了与ICP不同的方法,以改进居住道路上的算法结果,我们实现了一个粒子滤波器,其中使用车道线检测器的结果和匹配来评估每个粒子。它改善了住宅道路上的结果,因为由于线路检测不良导致的结果被过滤,但也恶化了公路上的结果。总体结果稍好一点,但缺乏准确性,因此,它不是一个可行的解决方案,但这两种解决方案可以结合起来,以改进全局方法。
总结
我们提出了一种使用视觉信息和开源地图在道路上定位车辆的方法,该方法根据开发的软件的不同模块分为三个部分,第一部分对地图进行了处理,分析了OpenStreetMap中的现有数据,并用车道标记数据对其进行了扩展,第二部分对应于使用摄像机和车道检测方法的车道标记检测,第三部分也是最后一部分实现了ICP算法,将检测到的线路与地图中存储的线路进行比较,然后返回车辆的更新定位,我们的结果表明,该方法是可行的,事实上,我们在高速公路上取得了不错的成绩,而在其他类型的道路上取得了更多喜忧参半的成绩,这主要是由于道路的质量以及摄像机看到的有用数据的数量。
更多详细内容请加入知识星球查看原文。
资源
自动驾驶及定位相关分享
【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法
自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)
更多文章可查看:点云学习历史文章大汇总
SLAM及AR相关分享
结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案
如果你对本文感兴趣,请后台发送“知识星球”获取二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享及合作方式:微信“920177957”(需要按要求备注) 联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。
点一下“在看”你会更好看耶
以上是关于自动驾驶中基于地图的视觉定位方法的主要内容,如果未能解决你的问题,请参考以下文章