概述
高清地图
高清地图属于机器人地图
- 道路网的精确三维表征,如十字路口布局、路标位置及各种其他语义信息
- 厘米级(普通地图只能达到米级,一般1-2米)
- VSLAM定位:预处理、坐标变换、数据融合
- 帮助感知:提前在远距离的位置提供ROI区域,供视觉或其他传感器缩小搜索范围
- 增强视觉的TSR功能:提前知道各种限速信息、车道信息(车道线中心、左转车道、右转车道等)
- Apollo地图:道路定义、交叉路口、交通信号、车道规则,例如红绿灯的位置和高度
- 制图流程:数据采集、数据处理、目标检测、人工验证、地图发布
%%%%%%%%%%%%%%%%%%%%%%%%%%%
定位
- 对比来自HD Map道路网周围的路标坐标,以及根据车辆坐标系算出来的路标坐标,并对比;
- GNSS系统的卫星星座的三角测量,测量车辆位置+车速
- RTK:车辆接收来自卫星星座的定位坐标;地面基站与卫星星座通信,获取卫星星座的定位误差;地面基站将误差传送给车辆,车辆利用定位坐标+误差信息,一起考量,获得精度为10厘米级别的定位精度。缺点:更新速率低
- IMU=三轴加速度计+陀螺仪,缺点:实时精度高,累计误差大。
- Lidar:测量车辆位置+heading
- INS惯性导航=RTK+IMU:预测下一周期位置并更新;
- 卡尔曼滤波整合GNSS定位+激光雷达定位+INS惯性导航(GNSS+IMU),其中INS惯性导航用于卡尔曼滤波的预测步骤中;GNSS定位+激光雷达定位用于卡尔曼滤波的测量结果更新步骤中。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
感知
- 计算机视觉:
- 检测(Detection)
- 分类(Classification):图像分类器,各种分类器
- 输入图像
- 预处理
- 提取特征
- 放入分类模型
- 跟踪(Tracking)
- 语义分割( Segmentation )
- 计算机视觉处理摄像头图像:
- 图像对于计算机来说,只是像素矩阵
- 图像高度、宽度和图像深度(RGB有三个深度,红、绿、蓝三个颜色深度)
- 图像的灰度化,就是减少图像空间的深度
- 计算机视觉处理激光雷达图像:
- 将激光雷达点云图像化
- 机器学习:模型和训练模型
- 人工神经网络工作步骤:前馈(按照原有模型算一遍,得到一个output)、误差测量、反向传播(将对比出来的误差,反向传播,修正各个feature的权值)
- 卷积神经网络(CNN):
- 检测与分类
- 跟踪
- 分割
- Apollo感知系统:
- YOLO 检测模块
- 感知系统架构
- 传感器数据比较:
- 感知融合策略:卡尔曼滤波实现Radar和Lidar的目标级别的融合
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
预测
预测其他目标的行驶路径,预测模块要回自学习
- 基于模型(Model-Based)的预测:找到已知可能的轨迹模型,跟踪车辆的轨迹,看后续事件最有可能往哪个轨迹模型中接近;
- 数据驱动(Data-Based)的预测:使用机器学习来训练模型;
- Apollo使用基于车道序列的模型预测方法,计算可能性:
- Lane Sequence 车道段序列
- Obstacle Status 一系列的跟踪目标状态
- 追踪目标,会使用航向角、位置、速度、加速度等目标信息追踪预测目标的行驶路径;
- 利用递归神经网络来识别目标类型来分别预测车道段+障碍物目标,并结合起来进行进一步RNN训练,获得最终的预测模型
- 训练的方法:用RNN的output输出对比真值标记(Ground Truth),利用反向传播来训练网络
- 训练出最有可能的B点后,根据A当前点到B目标点的轨迹可以根据当前车的运动状态(速度、加速度)拟合出一条最可能的运行轨迹,来最终获得追踪目标车辆的预测行驶轨迹。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
路径规划
- 全局路径规划:点对点的路线规划,单纯的空间曲线;Apollo算法使用A*算法来实现全局路径规划。
- 局部路径规划:运动轨迹水平的轨迹规划,不仅是空间曲线,也是时间曲线
三个路径规划输入:
- 地图:公路网及实时交通信息
- 当前位置:在地图中的当前位置
- 目的地:在地图中的目标地坐标
轨迹点包含的信息:
- 轨迹点的坐标;
- 矢量速度;
- 预计达到下一坐标的时间
轨迹规划:
- 三维轨迹生成=二维点坐标+时间戳;
- 矢量速度保证车辆按照时间戳的要求到达下一个轨迹点;
- 成本函数:设置惩罚因子,如偏离车道中心的程度、发生碰撞的几率、车速限制、舒适性(例如实现某个轨迹规划需要很大的加速度才能完成,那么这个过大的加速度就影响舒适性)
- 成本函数在不同场景中的区别:例如在停车场,与在高速公路上,成本函数的各个因子的设置,一定是不一样的。
- 坐标变换:百度的Apollo平台使用Frenet Coordinate(弗莱纳坐标系);德尔福公司常说的Curvillinear Coordinate System(曲线坐标系)属于简化了的弗莱纳坐标系。
轨迹-速度解耦规划:
- 轨迹规划:利用成本函数计算单纯的路径轨迹;
- 路径生成与选择:
- 将路面分段,并在各段(区域)中,选择随机采样点,连成多条路径;
- 根据成本函数(包含距离车道中心线、距离障碍物距离、车速和车道线曲率变化及车辆压力等约束因素),删选最小成本路径。
- 路径生成与选择:
- 速度规划:利用轨迹点的一系列“速度曲线”来控制车速;
- 选择速度曲线:利用ST图,选择车速;S,纵向位移,T,时间
- 将速度曲线ST图网格化,道路离散化;将障碍物绘制在ST图中不同的时间域中(在t0到t1时间域内,会占据s0到s1的前方距离范围),速度曲线不应穿越ST图中的该矩形区域;利用各种约束(法规约束、车辆运动极限约束、障碍物距离限制)组成的优化算法,来选择最佳速度曲线
- 二次规划:将离散曲线平滑化
三维轨迹生成(轨迹曲线与速度曲线的合并,基于Lattice规划):
- 三个维度:纵向维度、横向维度、时间维度
- 具有时间戳的纵向轨迹,ST轨迹,纵向+时间维;
- ST轨迹的终止状态:巡航状态、跟车状态、停止状态
- 相对于纵向轨迹的横向偏移,SL轨迹,横向+时间维;
- 终止状态应与车道线中心线重合,即heading angle与offset的一阶导数和二街倒数都为零
- 合并后,用成本函数选择最佳路线。
- 将ST和SL轨迹点都转化为笛卡尔坐标系,然后,按照S值来匹配T和L;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
车辆控制算法
PID 控制器
- 优点:简单有效;
- 缺点:线性控制;只能针对横向控制或者纵向控制进行单独控制;无法将横向控制和纵向控制集成在一个控制器中控制;
LQR控制器
- L-线性
- X-term
- 误差
- 误差变化率
- 航向角
- 航向角变化率
- U-term
- steering
- accel
- brake
- X-term
- Q&R-最小化成本方程
MPC模型预测控制器
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
总结
1. Apollo使用ROS操作系统;
2. 百度基于自己做地图的背景,倾向于在自动驾驶系统设计过程中,尽量多的发挥高清地图的作用;
3. 感知模块倾向于采用神经网络算法;
4. 激光雷达的数据使用方式:
a. 在点云级别,转化为图像,与摄像头图像融合,获取更丰富的道路feature;
b. 在目标级别(Object Level),与毫米波雷达进行目标融合,并跟踪目标。
最后
以上就是野性往事为你收集整理的01 自动驾驶系统 - 百度阿波罗平台学习笔记的全部内容,希望文章能够帮你解决01 自动驾驶系统 - 百度阿波罗平台学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复