本笔记出处:
Apollo:https://github.com/ApolloAuto/apollo
高精度地图 HD map
1、高精度地图相比较于普通地图需要更精准知道,车辆的具体位置,精度达到厘米级。高精度地图需要具备更多的信息,包括红绿灯、交通标示、车道线、城市建筑的三维模型等。三维模型可以通过图像、Lidar扫描融合完成,技术步骤包括图像和信号预处理、转换至同一坐标系、最后融合。
2、如何精确定位?车辆实时感知信息和高精度地图的信息进行对比,就能判断精确位置。
3、一项技术介绍:a region of interest/ROI。在特定位置寻找特定物体,例如停车标示,以提高定位精确度和速度。
Apollo高精地图的道路元素定义
Apollo HD map构建过程
定位 Locailzation
技术方案一:GNSS RTK(Global Navagation Satellite System & Real Time Kinematic)
GPS的更新频率为约100ms。
RTK的技术原理
技术方案二:IMU-惯性测量单元(Inertial Measurement Unit 惯性导航)
必要部件:三轴加速度传感器和陀螺仪(gyroscope)
特征:高频更新,频率约1000Hz
缺点:误差会随时间不断累积
技术方案三:LiDAR
利用LIDAR的实时点云和HD map点云进行matching,实现点位。
涉及算法Algorithms:ICP(Iterative closest point)迭代最近点、Filter algorithms、Kalman filter卡尔曼滤波
Apollo使用的是Histogram Filter(也称为Sum of Squared Difference误差平方和算法)
Kalman filter根据过去车辆状态预测未来车辆状态
总结:先预测未来位置,然后再用传感器精确测量,是最佳组合。该技术方案的优点是配合HD map后精确定位的鲁棒性高,缺点是map总是在不断更新,且曾经测量的地图中存在很多瞬态元素。
技术方案四:视觉定位
Particle filter粒子滤波:通过多次图像和地图的对比,计算各可能位置的概率,最终定位
Apollo定位技术方案:
包含GPS-全球定位系统、IMU-惯性测量单元、LiDAR(激光雷达)-光探测与测距传感器。
Diffusion Framework如下:
感知Perception
1. 计算机视觉
四个核心任务:Detection检测(确认图像的哪个位置有XX物体)、Classification分类(识别是什么物体)、Tracking跟踪、Segmentation语义分割(将图像的每个像素与语义类别进行匹配,如道路、汽车或天空)
Classifier的一般工作流程
2. 摄像头图像Camera Image
RGB(Red Green Blue)类型图像是由三层二维图像组成的图像。
3. LiDAR图像
三维点云
4. 机器学习
Supervised Learning:以人类提供真值标记为前提
Unsupervised Learning:以人类不提供真值标记为前提
Semi-supervised Learning:一部分标记、一部分不标记
Reinforcement Learning:允许模型尝试多种解决办法,然后衡量哪种方案最成功,最后修正其方法已达目标(从经验中总结和改进)
5. 神经网络Neural Network
应用于机器学习。在图像中提取多特征,对于特征的权重进行分配,以完成图像中物体的识别。
6. 反向传播算法(神经网络的训练算法)
步骤:Feed Forward前馈、error measurement误差测量和backpropagation反向传播
1⃣人为输入前馈
2⃣误差测量
3⃣反向传播
最终:神经元反复微调修正,使output达到真值
7.卷积神经网络CNN(convolutional neural network)
(特别适用于处理Perception,无需将图像转化为一维进行一般的神经网络计算,可以保留二维和三维的特征)
8.检测和分类
方案一:先用CNN检测红绿灯在图像中的位置,再用另一个CNN检测是红灯还是绿灯
方案二:直接用一个CNN完成检测和分类
9.跟踪Tracking
跟踪的意义:对不同时刻的某物体检测和分类建立关系,即增加了时间维度。好处在于:1⃣某一step对物体的检测失败,可以参考其他时刻;2⃣对某物体的多step的检测,对物体建立更准确的信息,包括形状、速度等;3⃣当某物体被其他物体遮挡,可以通过跟踪确认其位置;4⃣为下一step的图像预测提供信息,提高感知精度
10.语义分割Segmentation
全卷机网络FCN(Fully Convolutional Network)
11.Apollo感知
12.传感器比较
雷达与激光雷达
雷达已经在汽车上使用很多年,在各种系统中都需要雷达,如自适应巡航控制、盲点警告、碰撞浸膏和碰撞预防系统等。尽管雷达技术已经成熟,它仍在不断进步,作用不断提升。其他传感器测量速度的方法是计算两次读数之间的差距,而雷达则通过多普勒效应来直接测量速度。多普勒效应根据对象在远离还是接近你,测量出雷达的频率变化。就像消防车警报器一样,当车辆正在远离你和驶向你时,听起来声是不一样的。多普勒效应对传感器融合至关重要。因为它可以把速度作为独立的测量参数,从而提升了融合算法的收敛速度。雷达还可以生成环境的雷达地图,进而实现定位。因为雷达波在坚硬表面会回弹。因此,它可以直接测量对象距离,无需在视线范围内也可以。雷达可以看到其他车辆底部。并发现可能会被阻挡的建筑物和对象。在车上的所有传感器中,雷达是至不容易受雨雾影响的。而且视野宽阔,可达 150 度,距离可达200 多米。与激光雷达和摄像头相比,雷达分辨率较低,尤其是在垂直方向,分辨率非常有限。分辨率低意味着来自静态物体的反射可能产生问题。例如,街道上检修孔盖或汽水罐,可能产生很高的雷达反射率,但他们并不大。我们将其称为雷达杂波。因此,当前的车载雷达通常会忽视静态物体。
激光雷达是激光探测与测量的简称,而雷达则谁无线电探测与测量的简称。雷达使用无线电波,而激光雷达则使用红激光束来确定传感器和附近对象的距离。目前的激光雷达大多使用 900 纳米光波长度的光源。但部分激光雷达使用的光波长度更长,在雨雾中性能更好。当前的激光雷达使用旋转座架发射激光,扫描周边环境。激光室脉冲式的,脉冲被对象反射,然后返回一个点云,来代表这些物体。激光雷达的空间分辨率远远高于雷达。因为激光束越聚焦,垂直方向的扫描层数量就越多,因此每层的激光雷达的密度也越高。目前,激光雷达还不能直接测量对象的速度,必须使用两次或多次扫描之间的位置差来确定。激光雷达受天气和传感器清洁程度影响也很大,因此需要保持清洁。它们块头也比其他传感器更大,因此也很难安装,除非你只想在车顶安装一个大的激光扫描器。
预测Prediction
1. 预测方式
1⃣基于模型的预测Model-based prediction
基于物理知识、交通法规、人类行为等进行预测
2⃣基于数据驱动的预测 Data driven prediction
机器学习
2. 基于车道序列的预测Lane Sequence-Based Prediction(Apollo)
将车道分割成序列,用车辆在不同序列间切换,描述车辆行为,例如下午预测车辆行为为直行,表征为在Lane0、1、3、7间按顺序切换
3.障碍物状态
例如其他车辆,需要确定其位置(所处车道)、车速、加速度,甚至其与车道线的距离等。同时也要考虑其历史状态,更精准地预测
4.预测目标车道
车辆行为预测转换为车道选择,而车道选择的Model用机器学习等方式训练,提供各车道的选择概率
5.递归神经网络RNN(Recurrent Neural Network)
其为一种利用时间序列数据特征的一种预测方法。
递归神经网络的第n个MLP不仅受Element的影响,也受到第n-1个MLP影响。类似时间序列,前后的Unit就可以相互联系并作用,组成一个整体。应用例如:识别一串字符。
备注:单个MLP Unit描述如下,即一个普通的神经网络单元
6.RNN在目标车道预测中的应用
7.轨迹生成
分段轨迹,确定每段的起点和终点,利用车速、加速度等计算出轨迹(该轨迹不一定完全正确,但已经足够用了)。
规划Planning
第一层:地图上的路线规划
1.路由
The routing module的三个输入,包括起点、终点和地图信息(包括实时交通)。
2.世界到图
将地图上的路径表述为直线和节点的关系
3.A*算法(A Star)
第二层:路径/轨迹细节规划
3.轨迹
三维轨迹3D Trajetory(2维地图的点+各点1维时间)
轨迹约束:非碰撞、乘坐舒适性、物理极限、法规限制
4.成本/损失函数Cost function
通过该函数评估各条轨迹,选择Cost最低的轨迹
5.Frenet坐标系
纵坐标表示车辆行驶的距离,横坐标表示车辆偏离车道中心线的距离
如果道路弯曲,纵坐标也弯曲,但横坐标和纵坐标始终的垂直的
技术方案一:路径-速度规划 Path-Velocity Decoupled Planning
首先将路径和车速解藕,分别单独评估选择。
路径规划:在道路轨迹上画点连轨迹线,再用Cost函数评估各轨迹线
速度规划:
引入概念:ST图
S:距离;T:时间。曲线斜率越大,车速越高
将外部障碍物占据的路径段和时段在ST图上表示出来,再根据Cost函数计算最佳路径
二次规划Quadratic Programming:将平滑的非线性曲线和分段式线性段拟合,优化ST曲线
技术方案二:Lattice规划
ST图
LS图:L表示车辆偏离车道的距离
Lattice利用Frenet坐标把路径规划解耦成ST和LS,根据车辆的初始状态和终止状态确定n个ST和LS的组合,对各条路径的ST和LS进行Cost函数评估,选出最佳路径
车辆的ST终止状态,常为巡航、跟随其它车辆或停止。
车辆的LS终止状态,始终为处于车道中心线
以ST距离,用数据表达状态,初始状态将表示为 : (s0,s0˙,s0¨),结束状态将表示为: (s1,s1˙,s1¨),再利用拟合的多项式求解( s(t)=at5+bt4+ct3+dt2+et+f)
技术方案三:状态机
状态机包括转向、加速、减速等
控制Control
技术方案一:PID(Proportional -Integral-Derivative)
PID的缺点:1⃣在自动驾驶场景,需要两个PID来控制Steering和Acceleration,但是两者很难结合起来;2⃣Planning和Result的实时测量误差存在延迟,实时性较差,会降低PID的控制效果。
Apollo控制模块中的纵向控制器用的是PID算法。
(VCU控制中应用PID案例:巡航控制。根据Delta Speed确定控制目标加速度a,控制:前馈项+P项+I项;前馈项为车辆不同车速下的阻力)
技术方案二:线性二次调节器LQR(Linear Quadratic Regulator)
Apollo控制模块中的横向控制器用的是LQR。
技术方案三:模型预测控制MPC(Model Predictive Control)
步骤:1⃣建车辆模型;2⃣使用优化引擎计算有限时间范围内的控制输入;3⃣执行第一组控制输入。再每个计算step执行这些步骤
预测的越远(黄色线条),其轨迹越接近Planning轨迹,但是耗时间和资源约多,不利于实时控制的需要
成本函数