第 1章 激光雷达与自动驾驶概述 1
1.1 激光雷达与自动驾驶的概念 1
1.1.1 什么是激光雷达 1
1.1.2 什么是自动驾驶系统 3
1.2 激光雷达与自动驾驶的发展 4
1.2.1 早期的激光雷达 4
1.2.2 激光雷达与DARPA自动驾驶挑战赛 6
1.3 激光雷达在自动驾驶系统和高精度地图生产过程中的应用 7
1.3.1 自动驾驶系统的基本架构 7
1.3.2 激光雷达在自动驾驶系统中的应用 12
1.3.3 激光雷达在高精度地图生产过程中的应用 13
1.4 激光雷达开发环境配置 14
参考文献 15
第 2章 激光雷达的基础知识 16
2.1 激光雷达的基本工作原理 16
2.1.1 激光雷达的基本结构 16
2.1.2 激光雷达的数据 18
2.1.3 激光雷达的回波模式 21
2.1.4 激光雷达与人眼安全 22
2.2 车载激光雷达的分类 23
2.2.1 根据扫描方式分类 24
2.2.2 根据激光波长分类 26
2.3 激光雷达的关键性能指标和性能评估方法 27
2.3.1 激光雷达的关键性能指标 28
2.3.2 激光雷达的性能评估方法 30
参考文献 34
第3章 PCL和ROS编程基础 35
3.1 PCL编程基础 35
3.1.1 PCL的基本概念和数据结构 35
3.1.2 PCD文件 36
3.1.3 构建第 一个PCL程序 37
3.2 ROS编程基础 46
3.2.1 ROS简介 46
3.2.2 ROS中的基本概念 47
3.2.3 ROS命令行的常用指令 51
3.2.4 ROS项目的文件系统结构 52
3.2.5 Catkin构建工具 53
3.3 第 一个PCL和ROS节点: 基于体素网格滤波的降采样 55
3.3.1 点云滤波 55
3.3.2 ROS C++编程实践 56
3.3.3 构建并运行项目 65
参考文献 69
第4章 点云平面分割、聚类和配准 70
4.1 点云平面分割:RANSAC算法原理和C++实践 70
4.1.1 点云分割概述 70
4.1.2 RANSAC算法介绍 71
4.1.3 基于RANSAC平面拟合的地面点滤除ROS实战 76
4.2 欧几里得点云聚类算法和C++实践 84
4.2.1 k-d树:一种用于最近邻搜索的数据结构 84
4.2.2 欧几里得聚类方法 89
4.2.3 点云欧几里得聚类PCL与ROS实践 92
4.3 基于正态分布变换的点云配准 97
4.3.1 点云配准 97
4.3.2 NDT算法 100
4.3.3 使用NDT算法配准两个点云 103
参考文献 108
第5章 激光雷达标定原理与实践 109
5.1 坐标系变换基础与编程实践 109
5.1.1 建图、定位和感知中的坐标系 109
5.1.2 三维刚体变换的表征形式 110
5.1.3 齐次变换矩阵 113
5.1.4 Eigen编程基础 115
5.1.5 ROS TF2编程基础 116
5.1.6 坐标系变换编程实践 120
5.2 多激光雷达自动标定方法与ROS实践 126
5.2.1 多激光雷达标定和点云配准 127
5.2.2 用于多激光雷达自动标定的样例数据包 128
5.2.3 多激光雷达标定代码实例 129
5.2.4 使用测试数据实践6颗激光雷达的标定 135
5.3 激光雷达-相机联合标定ROS实践 138
5.3.1 相机参数标定 138
5.3.2 相机-激光雷达联合标定算法介绍 142
5.3.3 相机-激光雷达联合标定工具构建和使用 151
参考文献 154
第6章 激光雷达SLAM 155
6.1 激光雷达SLAM简介 155
6.1.1 SLAM简介 155
6.1.2 自动驾驶中的激光雷达SLAM 156
6.2 LeGO-LOAM算法详解和ROS实践 158
6.2.1 LeGO-LOAM算法简介 158
6.2.2 LeGO-LOAM算法流程 159
6.2.3 使用LeGO-LOAM算法构建点云地图 165
6.3 基于Scan Context的激光雷达闭环检测方法实践 168
6.3.1 Scan Context闭环检测方法介绍 169
6.3.2 Scan Context闭环检测C++实例 173
6.4 基于NDT算法的自动驾驶定位和ROS实践 180
6.4.1 地图数据准备 180
6.4.2 对激光雷达实时点云的降采样 181
6.4.3 使用NDT实现高精度定位 183
6.4.4 构建和运行NDT激光雷达定位 189
参考文献 191
第7章 基于深度学习的激光雷达三维目标检测 192
7.1 点云三维目标检测概述 192
7.1.1 三维目标检测的背景和定义 192
7.1.2 点云三维目标检测的常用数据集和性能指标 195
7.1.3 点云三维目标检测方法的分类 197
7.2 基于VoxelNet的点云三维目标检测 199
7.2.1 VoxelNet的结构 199
7.2.2 VoxelNet的损失函数 203
7.3 基于PointPillars的三维目标检测和实战 204
7.3.1 PointPillars的特点 204
7.3.2 PointPillars结构 205
7.3.3 训练一个PointPillars 208
参考文献 212
第8章 基于深度学习的激光雷达点云语义分割方法 214
8.1 自动驾驶中的点云语义分割 214
8.1.1 点云分割:传统方法vs基于深度学习的方法 215
8.1.2 基于深度学习的点云语义分割方法的分类 215
8.1.3 点云语义分割的常用公开数据集 217
8.1.4 点云语义分割的性能评价指标 219
8.2 基于全卷积神经网络的点云三维语义分割 220
8.2.1 全卷积神经网络介绍 220
8.2.2 基于全卷积神经网络的激光雷达三维分割 222
8.2.3 使用ROS和TensorRT实践CNN Seg推理 223
8.3 PolarNet点云语义分割和PyTorch实战 226
8.3.1 PolarNet神经网络简介 226
8.3.2 在SemanticKITTI数据集上训练一个PolarNet 228
参考文献 233
第9章 激光雷达的发展趋势及其在汽车工业中的应用前景 235
9.1 激光雷达带来的辅助驾驶能力变革 235
9.1.1 激光雷达在城市和高速领航辅助驾驶中的应用 237
9.1.2 激光雷达在记忆泊车中的应用 239
9.2 激光雷达在4级自动驾驶中的应用 240
9.2.1 激光雷达在自动驾驶出租车上的应用 240
9.2.2 激光雷达在自动驾驶卡车上的应用 242
9.3 激光雷达在低速机器人中的应用 243
9.4 激光雷达未来可能的发展方向 244