什么是自动驾驶的“最强大脑”?我想就是自动驾驶决策算法了吧。自动驾驶决策算法主要解决车辆在复杂交通中“下一步做什么,应该如何做”的核心问题。它就像一个分层递进的大脑,主要分为两层,一层是运动规划层,另外一层是行为决策层。在自动驾驶中,感知系统只是它的眼睛和耳朵——看得见、听得见,但完全不知道下一步该干什么。而决策系统,才是真正的大脑。
本文详解自动驾驶决策的三大核心模块:全局路径规划、行为决策、运动规划。
假设你坐在副驾,打开手机高德,输入“北京天安门 → 上海东方明珠”。地图给你规划了一条沿着京沪高速一路向南的路线——这就是全局路径规划。在自动驾驶里,它的任务非常清晰:从起点到终点,哪条路最合理?
但它的“合理”远比你想象的要复杂。
高精度地图(HD Map):不是我们手机上的普通导航地图。高精度地图的精度达到厘米级,它记录的信息包括:每条车道的确切边界、路沿石的位置、交通标志的精确三维坐标、坡度和曲率、甚至每个红绿灯的精确经纬度。有了它,车才知道“前方300米,最左侧车道是左转专用道”。
实时交通信息:哪里堵车?哪里封路?哪里事故?全局规划会结合实时路况,动态重规划。比如原本要走二环,但二环堵了3公里,系统会主动切换到三环——就像你在导航上点了“躲避拥堵”。
车辆自身约束:电动车电量不够?货车限高?某个路段禁止自动驾驶车辆通行?这些都会纳入全局路径的约束条件。
一个容易被忽视的真相
全局路径规划并不需要高频运行。它可能每隔几十秒甚至几分钟才更新一次,因为它解决的是“宏观路线”问题。但一旦这条路定下来,它就为下面两个层次画好了“边界”——接下来所有的行为决策和运动规划,都不能跳出这条路。
打个比方:全局路径规划就像你决定从北京开车去上海走京沪高速,那么你后面所有的变道、超车、进服务区,都只能发生在这条高速上。你不会突然想拐到京港澳上去。
从全局路径规划我们知道:车知道“要走京沪高速,从上海嘉定出口下”。但开上高速后,面对密密麻麻的车流,它要怎么决定此时此刻该做什么?
是跟车?是变道?是加速超车?还是在出口前提前减速?
这时候就该行为决策(Behavioral Decision)上场了。它处理的是离散的、高层级的驾驶意图。你可以把它理解为自动驾驶的“战术指挥官”。
常见的驾驶行为有哪些?
车道保持(Lane Keeping):老老实实待在当前车道,保持速度,保持安全车距。
跟车(Car Following):前车慢我就慢,前车快我就快(但不超速)。
变道(Lane Change):向左变还是向右变?是主动变道(为了更快)还是被动变道(因为当前车道要结束)?
超车(Overtaking):本质上是一次“向左变道+加速+再向右变道”的组合行为。
路口行为:直行、左转、右转、掉头。
停车/起步:等红灯时停车,绿灯亮起后起步。
让行/抢行:无保护左转时,让对向直行车先过;或者合流时,判断是否要插入车流。
行为决策是怎么做出来的?
现代自动驾驶的行为决策,早已不是简单的“if-else”规则。它会根据情况综合考虑:
感知结果:周围有哪些车?它们的速度、加速度、意图(通过转向灯判断)是什么?
交通规则:这段路限速多少?实线能不能变道?这个路口能不能掉头?
驾驶策略:是“激进型”还是“保守型”?比如看到旁边车道有空间,激进的车会立即变道,保守的车会再观察一秒。
预测模块:其他车接下来会怎么走?这个非常关键。行为决策必须“预判别人的预判”。
真实场景:高速出口博弈
如果你的车辆要在前方500米下高速,但当前在最左侧车道,右侧两车道都是密集的卡车流。行为决策会如何进行推理呢?
先判断“是否需要变道”:是的,因为出口在右侧。
再判断“是否可以安全变道”:当前右侧车道有间隙吗?后车速度允许吗?
如果暂时不行,就进入“寻找机会”状态:保持速度,监控右侧车流,同时点亮转向灯,等待一个安全的空档。
一旦出现空档,决策变为“向右变道一次”。
重复这个过程,直到进入最右侧车道,然后决策变为“减速并准备驶出”。
这5条完全实际上就是一个动态的、基于状态的决策过程。我们日常开车的时候,内心活动和考量大概也是如此。
行为决策说:“我要向右变道。”
那怎么变呢?方向盘怎么打?油门踩多深?用3秒钟完成变道还是5秒钟?变道过程中遇到后车突然加速怎么办?
这就是运动规划(Motion Planning)要解决的事。它的输入是一个驾驶行为意图(比如“向右变道”),输出是一条具体、平滑、安全、可执行的轨迹。
一条完整的轨迹,由两部分组成:
路径(Path):车辆在几何空间上要经过的一系列点(x, y, yaw)。
速度曲线(Speed Profile):在路径上每个点的时刻和速度(t, v)。
运动规划既要告诉车“走哪条线”,也要告诉车“每时每刻开多快”。
运动规划在进行操作的时候要注意什么?
平滑性:方向盘不能突然打死,否则乘客会吐。轨迹的曲率必须连续变化。
可行性:轨迹必须符合车辆的运动学约束(比如前轮最大转角、最大加/减速度)。
安全性:必须与所有障碍物(其他车、行人、路沿)保持安全距离。
舒适性:横向加速度和纵向加加速度(jerk)要控制在舒适范围内。
实时性:必须在几十毫秒内计算出轨迹,因为车辆在一秒内就能冲出几十米。
主流方法:采样+优化
自动驾驶的运动规划,通常采用“采样-评估-优化”的框架:
先通过随机采样或搜索(比如A*、RRT)生成一批候选路径。
再用代价函数评估每条路径:离障碍物多远?平不平滑?符合行为意图吗?
选出最优的一条,再通过二次规划(QP)进行局部平滑和速度优化。
举个例子:变道的运动规划
行为决策要求“在3秒内向右变道”。运动规划会这样做:
生成一条从当前车道中心线,平滑过渡到目标车道中心线的S形曲线。
在这条曲线上,设计速度曲线:先轻微加速(减少与后车的速度差),变道过程中保持匀速,变道完成后适当调整。
检查轨迹上每个点:会不会与右后方车辆发生碰撞?如果会,就重新规划(比如加快变道速度,或者放弃变道)。
最终输出一串指令:未来3秒内,每20毫秒一个“期望方向盘转角+期望加速度”。
然后,这个指令被发送到执行系统(转向、油门、刹车),车辆就真的动起来了。
如果我要从五道口去北京首都机场T3,那自动驾驶是怎么做的?
场景:自动驾驶车辆从北京五道口出发,去首都机场T3航站楼。
全局路径规划:先走北四环,然后上机场高速,最后从T3出口驶出。这条路定下来后,生成一系列“路点”(waypoints)。
行为决策:车行驶在北四环上,感知系统发现前方500米有出口。行为决策判断:我需要去机场高速,所以必须从这个出口驶出。当前我在第二条车道,出口在最右侧。于是决策进入“向右变道”的意图序列:先变一次到第三条车道,再变一次到最右侧。
运动规划:针对“第一次向右变道”这个意图,生成一条具体的、3秒长的轨迹。过程中,右后方有一辆出租车突然加速冲上来,运动规划检测到碰撞风险,立即重新规划:减速并推迟变道,等出租车过去后再完成变道。
三个层次各有分工,又紧密衔接。没有全局规划,车就不知道大方向;没有行为决策,车就只能傻傻地走直线;没有运动规划,所有的意图都只是空想。
大家在讨论自动驾驶的时候,张口闭口就是“多少个摄像头”“多少线激光雷达”。但真正决定自动驾驶智能程度的,其实是决策系统。
一个感知再强的车,如果决策逻辑愚蠢——比如该让不让、该超不超、变道犹豫不决——它依然是一个让人害怕的“铁皮傻子”。反之,一个决策系统足够优秀的车,哪怕只用摄像头,也能在复杂路况中游刃有余。