前言:校招本来想去互联网公司的算法岗,结果误打误撞拿了互联网汽车公司的自动驾驶算法offer。想着新能源汽车与自动驾驶也是接下来几年的一个趋势,手头也没几个满意的offer,于是便签了下来。最近计划在入职之前补充点关于自动驾驶方面的基础。前几天看了一篇文章《自动驾驶之路已走了多远?一文读懂研究现状 》,其内容大致来自Badue等人发表的Self-Driving Cars: A Survey一文。但文章有些翻译不专业,例如desired velocity翻译为“所需的速度”,从控制理论的专业术语上来讲应该翻译成"期望速度",此外也删掉许多公式符号。本文以《自动驾驶之路已走了多远?一文读懂研究现状 》为主体,对一些地方进行了修改,并加入了被删去的公式与符号。
1.引言
自动驾驶汽车的自主系统的架构通常可分为感知系统和决策系统。其中,感知系统通常分为负责自动驾驶汽车定位、静态障碍物地图测绘、移动障碍物检测与跟踪、道路地图测绘、交通信号检测与识别等多种任务的许多子系统。决策系统通常也分为许多子系统,分别负责路线(route)规划、路径(path)规划、行为选择、运动规划、控制等。
图1 典型的自动驾驶汽车分层架构
图 1 展示了自动驾驶汽车的自主系统的典型架构,其中不同颜色的模块分别表示感知系统和决策系统。感知系统负责估计汽车的状态和创造环境的内部表征(指自动驾驶汽车系统内部),这要用到机载传感器(比如光探测和测距(LIDAR)、无线电探测和测距(RADAR)、相机、全球定位系统(GPS)、惯性测量单元(IMU)、里程表等)收集的数据和有关传感器模型、道路网、交通规则、车辆动态等的先验信息。决策系统负责将车辆从初始位置驾驶到用户定义的终点,这需要考虑汽车的状态和环境的内部表征,还要考虑交通规则和乘客舒适度等情况。
2.感知系统
1)定位
为了在环境中驾驶汽车,决策系统需要知晓汽车所在的位置。定位器模块负责估计与环境的静态地图相关的汽车状态(姿态、线速度、角速度等)。这些静态地图(即离线地图)会在自动操作前自动计算得到,通常会使用自动驾驶汽车自身的传感器,但通常也需要人工标注(比如人行横道或交通灯的位置)或编辑(比如移除传感器捕获的非静态目标)。自动驾驶汽车可能使用一个或多个不同的离线地图来进行定位,比如占用情况网格地图、缓解地图或地标地图。定位器模块的输入包括离线地图、传感器数据和平台的里程数据,生成的输出是自动驾驶汽车的状态。需要重点指出,尽管 GPS 也许有助于定位过程,但由于高大树木、建筑、隧道等造成的干扰会使得 GPS 定位不可靠,在城市环境中只使用 GPS 是不足以合适定位的。
2)地图测绘
地图测绘器(Mapper)模块以离线地图和车辆状态为输入,生成在线地图。这个在线地图通常是离线地图与使用传感器数据和汽车当前状态在线计算出的占用情况网格地图中的信息的融合。
3)MOT
在线地图仅包含环境的静态表征,它有助于决策系统的某些模块的运作。为了实现检测以及移除在线地图中的移动目标,通常会使用一个移动目标跟踪(Moving Objects Tracking/MOT)模块。
4)TSD
自动驾驶汽车要必须能识别和遵守水平(车道线)和垂直(即限速标志、交通信号灯等)的交通信号。交通信号检测(Traffic Signalization Detection/TSD)模块负责交通信号的检测和识别。
3.决策系统
1)路线规划
给定用户在离线地图中定义的终点(Final Goal),路线规划器(Route Planner)会在离线地图中计算出一条从当前状态到达终点的路线。路线(route)是指一系列路径点的序列,例如,,其中每个点 都是离线地图中的一对坐标
。
2)路径规划
给定一条路线,路径规划器(Path Planner)模块会根据汽车状态和环境的内部表征以及交通规则计算一组路径。其中的一条路径(path)是指一系列姿态(pose)的序列,例如,
,其中,每个姿态 都是离线地图中的一个坐标对和汽车在该坐标对定义的位置所需的方位。例如,
。中间的路径 是路线 尽可能最好的路径,其左侧的路径
和右侧的路径
都是与 具有相同起始姿态的路径,并且它们其余的姿态从 向左或向右偏离,具有不同的激进程度。
3)行为选择
行为选取器(Behavior Selector)模块负责选择当前的驾驶行为,比如车道保持、交叉路口处理、交通灯处理等。其做法是在P中选择一条路径 ;在 中选择一个称为姿态,它是当前状态之前几秒(大约 5 秒,称为决策范围)的一个姿态,和在该姿态所需的速度。姿势和相关联的速度的配对被称为目标(Goal)。其中一个目标可以表示为。行为选取器选择目标时会在决策时间范围内考虑当前的驾驶行为以及避免与环境中的静止和移动障碍物相撞。
4)运动规划
运动规划器(Motion Planner)模块负责计算一个从汽车的当前状态到当前目标的轨迹,这个轨迹遵循行为选取器定义的路径,满足汽车的运动学和动力学约束条件,并能保证乘客舒适。轨迹是一个指令序列,其中
是在时间 t 的期望速度,
是在时间 t 的期望转向角度,
是
的持续时间。一个轨迹能让汽车平滑且安全地从当前状态到达目标。
5)避障
避障器(Obstacle Avoider)模块接收运动规划器计算出的轨迹,并在有必要时对其进行修改(通常是降低速度)以避开障碍物。
6)控制器
最后,控制器(Controller)模块根据被避障器修改后的运动规划器轨迹计算并发送工作指令,以控制方向盘、油门和刹车的执行器,使车辆能以物理世界允许的方式尽可能好地执行修改后的轨迹。