apollo课程学习笔记
发布日期:2021-09-16 07:32:01 浏览次数:3 分类:技术文章

本文共 4026 字,大约阅读时间需要 13 分钟。

本笔记是记录在学习apollo课程中自己认为重要的点。

课程链接http://bit.baidu.com/Subject/index/id/16.html

文章目录

高精地图

1、高精地图:并不是指精度高,而是说地图包含更多的与自动驾驶相关的信息,例如车道、标志,是为了让车辆更好的理解环境。

2、高精地图是L3,L4自动驾驶不可或缺的。高精地图储存的信息可以极大的减少感知模块的压力,并且可以帮助定位,规划等模块完成任务。

3、接下来先说一下高精地图与其他模块的关系

  • 与定位模块:不管是相机还是雷达,想做特征提取,然后与高精地图中的储存的特征进行比对。
  • 与感知模块:例如在检测之前,高精度图标出了红绿灯的位置,就能做针对性地检测
  • 与规划预测决策:在长距离规划中,是使用lane级别的地图,规划出从哪个lane到那个lane;
    在局部规划中,例如需要变道,高精地图提供可以变道的解空间;在预测和决策中,高精地图提供经验,例如其他社会车辆占据左转车道,则可以预测该车辆左转
  • 与安全模块:例如IMU对磁场敏感,激光雷达对人工反射物,假的红绿灯。高精地图提供一个离线的标准,提供先验知识。
  • 与仿真系统:仿真系统主要用于算法迭代,例如强化学习。仿真系统基于高精地图构建。
    可以把高精地图认为是静态的perception,机器理解不了,就人来理解,赋予机器。弥补系统的缺陷。

4、高精地图的采集和生产主要分为以下三种方式

  • 基于激光雷达的
  • 基于视觉的
  • 基于融合的

5、百度高精地图的构建方式

使用的传感器:GPS(城市环境平均偏移5m),IMU,轮速计,激光雷达
((IMU + 轮速计)+GPS)计算pose,然后用激光雷达的点,进行三维重建
Camera和Lidar分别检测,然后融合

6、高精地图的格式规范

格式规范:NDS(宝马),OpenDrive=

6、业内的高精地图

HERE
Mobileye
Google
TomTom

用粒子滤波自定位

规划:A点->B点长距离规划,短距离规划
预测:其他交通参与者可能的轨迹
决策:规划和预测的结果进行决策

对无人车的攻击的主要四个方面:传感器,操作系统,控制系统,通信系统

自定位技术

1、自定位模块输出:位置3,姿态3,速度3,加速度3,角速度*3,置信度

2、自定位模块的输出的要求

在这里插入图片描述

3、自定位方法

  • 基于电子信号定位:GPS;差分GPS,载波相位差分,精度几厘米

  • 航迹推算:IMU,用一二十万的IMU,加速度和角速度的积分,精度坚持500-600ms没问题;odometry

  • 环境特征匹配:激光定位,需要使用地图,分为栅格地图,点云地图,2D概率地图(2D栅格,每个栅格储存数据的一些统计分布);视觉定位,SLAM用的特征点的方式不适用与无人车的定位,因为光照变化很严重,用语义特征更好一些

  • 融合定位

    GNSS和特征匹配的方法各自得到PVA和VCV,IMU得到PVA,然后用KF更新
    在这里插入图片描述

4、GNSS

北斗在中国定位要比GPS高
差分GPS,RTK技术
GPS作用:GPS授时,做高精地图,在线定位
挑战:电磁环境干扰,城市内部遮挡

5、激光点云定位算法框架

在这里插入图片描述
输出:X,Y,Z,Yaw
输入:定位地图(反射值2D概率地图+高度地图)+激光点云

模块作用:

图像对齐:航向角的优化
SSD-HF(Sum of Squared Difference Historgram Filter):XY优化
Z:是通过定位XY,查询高度地图所得

过程:

图像对齐:光流法中的LK框架,把反射值、高度值放进去,做优化
SSD:把激光点投到定位地图上,用SSD计算矩阵距离
HF:搜索初始点内2.6m*2.6m范围内的pose,得到多个SSD,然后用HF进行加权平均

6、视觉定位

在这里插入图片描述
在检测的时候,选择检测车道线和杆状物
3D特征地图

7、组合导航

捷联惯性导航系统
在这里插入图片描述

感知

1、感知内容

道路信息:高精地图
障碍物信息:在线检测,不同障碍物有不同的规划策略
红绿灯信息:V2X是终极解决方案

感知要解决的问题:检测,语义分割,识别,跟踪,融合+预测

2、传感器

激光雷达传感器:做测距很好,做识别很难,因为点云稀疏,尤其是在远处
相机:信息稠密,丢失距离信息
毫米波雷达:噪声多,对非金属的障碍物召回率低
image-lidar:在研

3、安装

sensor安装要防止遮挡,传感器融合需要视野overlap

4、标定:

原则:

  • 需要有传感器共同能识别的真实世界中的点或者线
  • 要用很多优化
  • 用好传递关系

百度用一个标定间,贴满April-Tag,然后用Rigel(毫米级制图激光雷达)去扫描,得到April-Tag每个码的角点坐标。以Rigle坐标系作为中间传递,标定所有的相机和激光雷达。

对于相机标定使用PNP方法,对于雷达就是配准问题,用ICP方法
Lidar内参标定:找一个空旷的平坦的地面,用Rigel扫一遍,然后用64线扫,做ICP,远处的点如果内参不准的话,就可能飘在空中
Lidar+GPS:到自然场景开8字,把雷达点云转到GPS坐标系,然后拼接点云,解一个优化

5、感知算法

点云处理
(1)启发式:N-cut
在这里插入图片描述
点云检测作为graph分割问题

(2)CNN-seg

视觉感知:

深度学习+后处理

自动驾驶的检测模型

所面对的场景是结构化的,不像是cv中,物体多样。需要考虑内在关系的约束,例如障碍物就不可能飞到天上。
相比于cv的detection问题,自动驾驶的模型需要输出3D信息,因为自动驾驶最终是需要3D信息的。输出障碍物尺寸,朝向,考虑时间上的约束。
是一个集成的模型,多个信息都由一个网络输出,用多个网络,会产生很大的延迟。

后处理计算

在这里插入图片描述
利用2D回3D的各种约束和假设。例如地面水平假设等

跟踪要轻量化,因为有很多物体要跟踪,对相机帧率有要求

6、红绿灯

是要结合高精地图,高精地图可以给出红绿灯3D位置,从而很大程度上见减小了搜索空间

规划

规划分为:global routing 和 motion planning

1、规划用的方法

在这里插入图片描述
2、最简单的问题:path planing
本质来讲,现在的path planning算法都是通过A*算法

3、search的分类

从环境信息来说分为

  • partially observed:使用incremental search的方法
  • fully observed
    无人车是partially observed

4、目前的难点:

部分可见的动态环境
如何把交通规则融入到planning中
实时计算

在这里插入图片描述

5、定义:

安全平稳
对于planning来说,structure road更难,因为需要考虑交通规则,unstructure road随便开就行

5、Motion Planning的方法

Motion Planning A

6、Motion Planning中的constraints的分类

在这里插入图片描述
但其实minial length对无人车其实不太好,需要考虑轨迹的平滑性,

7、Motion Planning的总结

在这里插入图片描述

  • 相比于RRT的随机撒点,Lattice更方便,而且更简单。
  • 由二维的路径和在路径上的速度构成的三维空间中的优化问题求解耗时,有一种思路是优化路径和优化速度迭代进行,收敛到一个局部最优解。
  • 在Lattice上用动态规划可以将指数级的运算降低到平方级。
  • 如果对于凸优化问题,QP是二次指数收敛,更快。
  • 使用Splines对轨迹进行平滑,但会出现曲率波动等问题。

8、自行车模型推导出的车辆模型

在这里插入图片描述
所以车辆的运动将被如下几个状态所描述
在这里插入图片描述

  • x,y:位置
  • θ:朝向角
  • κ:与前轮转角有关
  • v:速度

9、在路径规划中,使用的Frenet Frame,又叫SL坐标系

在这里插入图片描述
SL坐标系->XY坐标系的变换是唯一的
XY坐标系->SL坐标系的变换则不唯一

10、判断两个多个三维box是否相交,需要找一些比较好的方法,因为要去速度快。

11、要生成一个smooth的参考系,只有参考系smooth了,在其参考系下的smooth路径在真实的世界中才是smooth的。例如下面的U-turn例子,用分段多项式生成参考系,要求不离控制点远,光滑。

在这里插入图片描述

12、百度无人车上用的路径规划

在这里插入图片描述

路径规划和速度规划迭代优化

(1)先做planning DP
在这里插入图片描述
(2)然后根据DP选出来的轨迹生成光滑的轨迹。首先设定目标函数
在这里插入图片描述
(3)得到了目标函数,通过 piecewise plynomial 表示这个函数,保证连接的地方的三阶导数连续,并且对应这个目标函数达到最优。通过变换,可发现plynomial的参数对于这个优化函数是个二次型,可以用QP的方法求解。

(4)然后规划速度,将问题转化到转化到ST图

在这里插入图片描述
(5)同样想用DP方式选取大概的控制点,然后用一定的方法把控制点周围区域做成凸空间,然后使用QP方法求解

(6)帧与帧之间的连续性,决策之间连续性,路径的连续性

文章链接https://arxiv.org/pdf/1807.08048.pdf

控制

控制模块的输入来自于:planning,localization+HD map,CanBus

控制模块包括前处理,控制,后处理

前处理:信号处理,平滑,异常值判断,紧急情况的处理(例如急刹车)
后处理:限幅,处理执行器的回滞曲线,处理滞后,平滑

车辆的纵向控制用级联PID

Model based control 过程

在这里插入图片描述

analytical modeling

fitted model

system identification

白箱黑箱模型

controller design

前馈

optimal control

介绍了LQR和MPC

Adaptive Control

要注意

DeadZone compensation
Saturation and Anti windup

转载地址:https://blog.csdn.net/wqwqqwqw1231/article/details/97624456 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CNN中的receptive filed(感受野)
下一篇:cs231n课程笔记

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月12日 11时12分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

no java stack_Java Stack contains()用法及代码示例 2019-04-21
java动态代码_Java Agent入门学习之动态修改代码 2019-04-21
python集合如何去除重复数据_Python 迭代删除重复项,集合删除重复项 2019-04-21
iview 自定义时间选择器组件_Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能... 2019-04-21
java 验证码校验_JavaWeb验证码校验功能代码实例 2019-04-21
java多线程初学者指南_Java多线程初学者指南(4):线程的生命周期 2019-04-21
java进程user是jenkins_java 学习:在java中启动其他应用,由jenkins想到的 2019-04-21
java添加资源文件_如何在eclipse中将资源文件夹添加到我的Java项目中 2019-04-21
java的三种修饰符_3分钟弄明白JAVA三大修饰符 2019-04-21
mysql source skip_redis mysql 中的跳表(skip list) 查找树(btree) 2019-04-21
java sun.org.mozilla_maven编译找不到符号 sun.org.mozilla.javascript.internal 2019-04-21
php curl 输出到文件,PHP 利用CURL(HTTP)实现服务器上传文件至另一服务器 2019-04-21
PHP字符串运算结果,PHP运算符(二)"字符串运算符"实例详解 2019-04-21
PHP实现 bcrypt,如何使php中的bcrypt和Java中的jbcrypt兼容 2019-04-21
php8安全,PHP八大安全函数解析 2019-04-21
php基础语法了解和熟悉的表现,PHP第二课 了解PHP的基本语法以及目录结构 2019-04-21
matlab中lag函数用法,MATLAB movavg函数用法 2019-04-21
matlab变形监测,基于matlab的变形监测数据处理与分析_毕业设计论文 2019-04-21
opencv matlab编程,在Matlab中调用OpenCV函数 | 学步园 2019-04-21
c语言文件wt,c语言,wt和rt中的t是什么意思 2019-04-21