目录
第一课:无人驾驶概览
我们将学到什么?
定位:汽车用雷达和激光扫描周围,与高精度地图比对,从而定位
感知:使用Deep Learning方法,尤其是卷积神经网络,进行分类、检测、分割
预测:行车轨迹(这里我理解的是对其他车辆行车轨迹的预测,毕竟需要基于此来做出自己的行车规划)
规划:自己的行车路线
什么是无人驾驶?
无人驾驶的等级
无人驾驶的六个等级:Level 0 - 5
- Level 0 : 车辆不会自己驱动自己,完全需要人来控制。
- Level 1 : 提供转向、加速支持,如巡航控制。(可以定速)
- Level 2 : 自动巡航控制、车道保持。(可以自己加减速、保持距离)
- Level 3 : 车辆自主驾驶,但在特殊情况需要驾驶员接管。(手脚可以同时离开,比如跟车功能,自动加减速和转向)
- Level 4 : 不需人的干预,但只能在一定区域自动驾驶(地理围栏),超出这个区域可能会无法操作。(只需在可行范围内确定起点和终点)
- Level 5 : 只要是人能开的地方,都可以完全自主运行,并且有着不低于人类的驾驶技术。
一些疑问和解释:
Level 1中的巡航控制是啥?
巡航控制系统(cruising control system,CCS):比如巡航定速,“你设定一个速度,车就会自动维持在那个速度,不用驾驶员再去频繁踩油门”
Level 1中的提供转向支持,具体是怎样的?(暂时没找到答案)
自动巡航控制?
自适应巡航(Adaptive Cruise Control,ACC):
- 当发现前面有缓慢行驶的车辆时,会自动减速,并与前车保持设定距离
- 当前面恢复畅通时,就会回到之前设定的速度
一些缺陷:
- 前面有车突然加塞时可能会检测不到
- 转弯时,前面的车先过弯,车检测到前面没车了会突然加速,让人有些猝不及防
Level 3所说的特殊情况?
比如进入修路路段
无人驾驶的优势
- 安全
- 培养一个司机需要很久,而让车学会自己驾驶自己可以很快,而且人有顽固性,有些问题总改不了,但无人车可以自我改进,还能相互学习
- 解放人,比如可以不用自己找车位、停车了,只管告诉无人车自己要去哪
无人驾驶车的运作方式
Computer Vision:利用摄像头获取图像信息,这些信息包括物体的颜色、形状、纹理等等,可以用于判别物体、识别交通信号灯,进行分类和分割
Sensor Fusion:利用传感器进行测量,传感器包括雷达、激光雷达等。测量的信息包括周围物体的速度、与周五物体的距离
Localizationg:定位。精度要求一位数厘米,通过识别出了周围地标,并且计算出了与周围地标的距离之后,与高精度地图进行比对,实现定位
Path Planning:规划路线。预测周围行进物体可能的行为,最终规划出一条自己的路线。
Control:控制车辆的驱动设备,使得车辆能尽可能地按照预定轨迹行进。
(预想的和实际的是可能有偏差的,比如下面这条高糊图片中,黄色是预设路线,绿色是自己执行操作后的轨迹, 拿人对比的话,你想尽可能地走道路中线,但拐弯时,是可能会有偏差的)
我对上面五个要素之间关系的理解:
通过摄像头和传感器了解周围世界(Computer Vision、Sensor Fusion),与“心中”的地图进行比对从而知道自己在哪(Localizationg),知道自己在哪便可以规划路线去自己想去的地方(整体路线,Path Planning),但在行进的过程中可能会有超车、被超车、会车等等情况,那么这些小状况的应对,也会有一些路线(小路线,Path Planning),而确定了路线之后,就得控制车的油门、刹车灯设备来行进。(Control)
感觉挺符合人的逻辑的
参考车辆与硬件平台
“线性驾驶车辆”
CAN:控制器区域网络。内部网络,发内部控制信号。
GPS
IMU:惯性测量装置,测量车辆的速度和位置
LiDAR:激光雷达,360°扫描,让软件能了解环境
摄像头:图像
雷达:检测障碍物(但分辨不出是啥),优点:实惠、适合各种天气/光照,擅长测速
开源软件框架
实时操作系统(RTOS)
- 可确保在给定时间内完成特定任务
- 及时计算、分析并执行相应操作
- 具体流程如:得到数据->分析是啥->预测->发出行动命令
- Ubuntu + Apollp内核
运行时框架
- 基于ROS(机器人操作系统)
- 模块化:根据功能将自治系统划分为了多个模块,每个模块干自个的事,通过运行时框架通信。(模块化使得调试和更新变得简单)
- 共享内存:一次写,多次读
- 去中心化:解决单点故障问题。(如果是中心化,那么多个模块是靠一个主节点来互动的,而这里是所有节点都能相互通信)
- 数据兼容性:protobuf格式。(原本节点之间考ROS信息通信,这使得一个接口更新之后,发出或接收的信息就改变了,使得信息需要重发;但这里,protobuf格式,即结构化、序列化通信,就避免了这个问题)
应用程序模块
多模块,每个模块都有自己的算法库,关系复杂,是之后的重点。
云服务
“Apollo云服务是在云中运行的一套应用程序”
“云,就是通过互联网访问服务器”
这些应用程序包括:
HD Map:高精度地图
Simulation:仿真
Data Platform:数据平台
Secutity:安全性保障
OTA:空中软件升级
DuerOS:智能语音系统