自动驾驶系统进阶与项目实战(六)基于NDT的自动驾驶高精度定位和ROS项目实战

自动驾驶系统进阶与项目实战(六)基于NDT的自动驾驶高精度定位和ROS项目实战

对于高级自动驾驶系统而言,定位模块通常会融合IMU、轮速计(车辆底盘)以及激光雷达odometry多种测量,使用滤波算法(EKF、UKF等)以获得平滑、厘米级别的绝对定位,其中基于高精度点云地图和激光雷达的配准定位(Lidar Odometry)因其精度高、可靠性好,在整个融合定位中通常占很大的权重,是自动驾驶定位系统中相对可靠的“绝对定位”数据来源,本文我们学习如何使用NDT配准实现自动驾驶汽车的高精度定位,并且结合前面文章中使用SC-LEGO-LOAM生产的点云地图,实践单纯NDT算法的自动驾驶高精度定位ROS项目,完成本文,你将能实现如下图所示的点云配准定位:

在这里插入图片描述

前言

在前面的文章中(无人驾驶汽车系统入门系列第13篇、自动驾驶系统进阶与项目实战第2篇)有详细介绍NDT算法和点云配准的相关知识,但是一直没有完整地介绍如何使用点云地图和NDT配准完成自动驾驶汽车定位,本文将给出完整介绍和一个干净的NDT定位实现。

NDT定位是Autoware自动驾驶开源项目的核心定位算法,但是Autoware 1.x各个模块耦合性很强,如果单纯是为了学习激光雷达配准定位,你可能需要编译整个Autoware项目才能测试实验NDT定位,另外,Autoware 1.x中实现的NDT算法采用面向过程编程,代码相当难读,因此,本文中,我们将基于Autoware 1.x中的NDT配准定位思路,实现一个相对干净、清晰的NDT ROS项目,整个项目仅依赖ROS,面向对象编程,如果项目对你有帮助,就来个小心心吧!

点云地图准备

自动驾驶汽车的激光雷达定位通常依赖于提前离线构建好的高精度点云地图,之所以这么做原因有以下几个方面:

  1. L4级别以上自动驾驶系统

猜你喜欢

转载自blog.csdn.net/AdamShan/article/details/106739856