从“新手司机”到“智能系统”:用日常驾驶拆解无人驾驶的三重智慧

还记得你第一次坐进驾驶座,手握方向盘的感觉吗?眼前是复杂的路况,耳边是导航的提示,大脑飞速运转:左边有车靠近要减速,前方红灯要停车,还得想着怎么并线才能不刮蹭。对于一个新手司机,这个过程充满了手忙脚乱的决策。而一辆无人驾驶汽车,本质上就是在模拟并超越这个“新手到老手”的进化过程。它没有人类的紧张和疲劳,却需要构建一套同样甚至更加精密的“虚拟驾驶员”系统。今天,我们不谈艰深的算法代码,而是把无人驾驶系统放回你最熟悉的驾驶场景里,看看这个“超级司机”是如何通过感知、规划、控制这三层核心架构,完成一次安全、平稳的旅程的。

1. 第一层智慧:感知——车辆的“超级感官”组合

如果把无人车比作一个人,那么感知层就是它的眼睛、耳朵,甚至是一种超越人类的“第六感”。但关键在于,它并非依赖单一的感官,而是一个多传感器融合的冗余系统。想象一下,你在浓雾中开车,仅凭肉眼几乎寸步难行。但如果你同时戴上了热成像仪、听到了雷达回响、还接收到了前方车辆发来的实时路况,你的驾驶信心就会大增。无人车的感知层,正是这样工作的。

它的核心任务有两个:“我在哪?”“我周围有什么?”

1.1 回答“周围有什么”:环境感知的感官联盟

人类司机用眼睛识别车辆、行人、红绿灯。无人车则组建了一个感官联盟,各司其职,互相校验。

  • 激光雷达 (LiDAR):三维空间的“素描大师” 它像一位快速旋转的画家,每秒向周围发射数百万束激光。通过测量激光反射回来的时间,它能精确计算出每个点的距离,从而生成车辆周围环境的高精度三维点云图。这幅“素描”能清晰地勾勒出障碍物的轮廓、大小和距离,尤其在判断物体形状和静态结构(如护栏、路缘)方面表现出色。你可以把它理解为给世界做了一个快速的3D扫描。

  • 摄像头:场景理解的“阅读者” 摄像头获取的是丰富的二维彩色图像信息,这与人类视觉信息最为接近。通过深度学习算法,它能“读懂”图像内容:识别车道线是虚线还是实线、交通灯是红是绿、前方标志牌写着“限速60”还是“禁止通行”。它的优势在于获取纹理和语义信息,但受光照、天气影响较大。

  • 毫米波雷达:风雨无阻的“运动侦探” 雷达利用无线电波探测物体,对雨、雾、灰尘的穿透能力很强,基本不受恶劣天气影响。它最擅长的是精确测量物体的相对速度和距离。即便在黑夜或大雾中,它也能可靠地告诉你前方车辆是正在加速远离,还是在减速靠近。它就像是始终在监听周围物体运动节奏的耳朵。

为了让你更直观地理解这三者的协同,我们来看一个简单的对比:

传感器核心能力类比主要输出信息优势局限性
激光雷达3D扫描仪/尺子高精度三维点云、物体形状与距离三维建模精确,不受光照影响成本高,在极端雨雪天气性能可能下降
摄像头人眼/图像识别器二维彩色图像、语义信息(物体类别、文字)信息丰富,成本相对较低,可识别颜色和纹理严重依赖光照,逆光、黑夜效果差
毫米波雷达速度检测器/预警雷达物体的距离、速度、角度测速极准,全天候工作,穿透性强无法识别物体具体类型(是人还是车?)

在实际行驶中,这三种(甚至更多)传感器的数据会实时融合。例如,摄像头识别出一个“红色圆形”可能是尾灯或交通灯,激光雷达确认其三维位置,毫米波雷达则判断它是否在移动。三者信息交叉验证,最终得出一个可靠结论:“前方80米处有一辆正在减速的汽车”。

提示:这就是所谓的传感器融合。它不是简单的数据叠加,而是一个智能的“投票”与“纠错”系统。当某个传感器因环境干扰给出错误信息时,其他传感器可以对其进行纠正,极大提升了系统的整体可靠性和安全性。

1.2 回答“我在哪”:高精定位与地图

知道周围有什么还不够,还必须知道自己在地图上的精确位置。这比你手机上的GPS定位要苛刻得多——需要的不是“我在某某路上”的米级精度,而是“我在当前车道中心线左侧0.2米”的厘米级精度。

无人车结合了多种技术来实现这一点:

  1. GNSS (如GPS) + IMU:提供全局的经纬度坐标和车辆自身的加速度、角速度信息,是定位的骨架。
  2. 高精地图 (HD Map):这是一张包含车道线、路缘、交通标志、甚至地面标线等细节的“超级地图”。它不仅是导航图,更是定位的参考系。
  3. 局部特征匹配:车辆通过激光雷达或摄像头实时扫描周围环境(如路灯杆、独特建筑、道路纹理),并将这些特征与高精地图中存储的特征进行实时匹配。这就像在玩一个“找相同”的游戏,通过匹配结果来修正GNSS的误差,实现厘米级定位。
# 一个简化的概念性代码,展示定位数据融合的思路(非实际生产代码)
class VehicleLocalizer:
    def __init__(self):
        self.gnss_position = None  # GPS原始位置
        self.imu_data = None       # 惯性测量数据
        self.hd_map = load_hd_map() # 加载高精地图
        self.lidar_features = []   # 激光雷达提取的当前特征

    def localize(self):
        # 步骤1:获取GNSS/IMU的初步位置估计
        rough_pose = fuse_gnss_imu(self.gnss_position, self.imu_data)

        # 步骤2:从激光雷达点云中提取道路特征(如车道线、护栏)
        current_features = extract_features(self.lidar_features)

        # 步骤3:将当前特征与高精地图在rough_pose附近进行匹配,得到位置修正量
        correction = match_features_to_map(current_features, self.hd_map, rough_pose)

        # 步骤4:输出融合后的精确位姿
        precise_pose = apply_correction(rough_pose, correction)
        return precise_pose

这个“感知层”24小时不间断地工作,为车辆构建了一个实时、精确、数字化的世界模型。它不仅是“看到了”,更是“理解了”环境,并将这份理解转化为结构化的数据,传递给下一个层级——规划层,也就是车辆的大脑。

2. 第二层智慧:规划——从“去哪”到“怎么去”的决策链

接收到感知层传来的“世界模型”后,无人车需要做出决策。这就像你开车时,看到前方施工,大脑瞬间闪过几个选项:减速等待?变道绕行?这个思考过程,在无人车中就被系统化、分层级地拆解为任务规划、行为规划和运动规划三步。它们共同构成了车辆的“决策大脑”。

2.1 任务规划:设定宏观旅行蓝图

这是最顶层的规划,回答“从A到B走哪条路最好”的问题。它类似于我们使用导航APP规划路径。算法会综合考虑路径长度、预估时间、实时路况(拥堵)、道路类型(是否收费、是否高速)等多种因素,在庞大的路网中选择一条或多条推荐路径。

常用的算法如Dijkstra算法A*算法,其核心思想是寻找图中节点(路口)之间的最短或最优路径。这个过程通常在行程开始前或需要重新规划时进行,输出是一条由一系列道路和关键转向点组成的序列。

注意:任务规划更侧重于战略层面的路径选择,它不关心具体在每个车道内如何行驶,那是下层规划的任务。

2.2 行为规划:定义驾驶“人格”与状态

如果说任务规划选好了高速公路,那么行为规划就是决定在这条路上以何种驾驶模式行驶。它定义了车辆的“行为逻辑”,是车辆“性格”的体现——是激进还是保守?

行为规划通常采用有限状态机 (Finite State Machine, FSM) 模型。车辆在任何时刻都处于某个特定的“状态”,每个状态对应一套行为规则。常见的驾驶状态包括:

  • 车道保持 (Lane Keep):默认状态,在车道内平稳跟随前车或按限速行驶。
  • 跟车 (Follow):检测到前方有慢车,自动调整车速保持安全距离。
  • 换道 (Lane Change):需要超车或即将转弯时,在确保安全的前提下发起并完成变道。
  • 通过路口 (Intersection Negotiation):根据交通灯、停车标志和路权规则,决定是通行、减速还是停车等待。
  • 紧急停车 (Emergency Stop):遇到无法处理的极端情况,立即执行安全停车。

状态之间的转换由感知层的信息触发。例如:

当前状态:车道保持
触发条件:感知到前方车辆速度持续低于本车期望速度,且相邻车道后方安全距离内无快速接近车辆。
下一状态:换道(准备超车)

这个层级的输出是一个高层级的驾驶指令,比如:“执行向左换道”、“在停止线前停车”、“以40km/h速度通过弯道”。

2.3 运动规划:生成平滑可执行的轨迹

这是规划层最后也是最精细的一步。它负责将“向左换道”这样一个抽象指令,翻译成一条车辆可以实际跟随的、平滑的时空轨迹

这条轨迹需要告诉控制层在未来几秒内,车辆每一个时间点应该处在什么位置、以什么速度、什么朝向。它必须满足一系列严苛的约束:

  1. 车辆动力学约束:不能规划出需要方向盘瞬间打满或加速度无穷大的轨迹,车辆物理上做不到。
  2. 舒适性约束:加速度和加加速度(急动度)要平滑,避免让乘客感到晕眩。
  3. 安全性约束:必须远离所有静态和动态障碍物,留有充足安全边际。
  4. 交通规则约束:不能压线、不能逆行。

运动规划算法(如采样法、优化法)会在一个考虑了时间和空间的“状态走廊”内,搜索或优化出无数条可能的轨迹,然后根据成本函数(综合考虑安全性、舒适性、效率)挑选出最优的一条。

想象一下变道过程:运动规划器会生成一条从当前车道中心线平滑过渡到目标车道中心线的曲线,这条曲线决定了方向盘何时开始转动、转动多快、何时回正,同时速度如何轻微调整以配合转向。

至此,规划层完成了从宏观路径到微观动作的整套决策,产出了一条安全、舒适、可行的详细行驶计划。接下来,就需要一个高效的“执行者”来将它变为现实。

3. 第三层智慧:控制——精准的“手脚”执行系统

规划层给出了“期望轨迹”,控制层的任务就是让车辆的实际运动尽可能准确地贴合这条轨迹。这相当于人类驾驶员通过手脚操控方向盘、油门和刹车。控制层是连接数字世界(规划指令)和物理世界(车辆运动)的桥梁,其核心是反馈控制理论

控制层主要分为两大模块:横向控制纵向控制,它们分别负责车辆的转向和速度。

3.1 横向控制:让方向盘听懂“轨迹语言”

横向控制的目标是减小车辆与期望轨迹之间的横向误差。简单说,就是让车辆沿着规划好的那条“虚拟铁轨”行驶。

最经典的控制器是纯追踪 (Pure Pursuit)斯坦利 (Stanley) 方法,它们的思想非常直观:

  • 纯追踪:在车辆前方一定距离(称为“前视距离”)的期望轨迹上找一个目标点,然后控制车辆转向,让车头指向这个目标点。就像骑自行车时,你眼睛看着前方路面某一点,手自然就会调整车把朝向那一点。
  • 斯坦利:不仅考虑航向误差(车头方向与轨迹切线方向的夹角),还考虑横向位置误差(车辆中心与轨迹的垂直距离),综合计算转向角。

现代更先进的方法则使用模型预测控制 (MPC)。MPC不再只关注当前误差,而是预测未来一段短时间内车辆的行为,并在线求解一个优化问题,得到一系列最优的控制指令(如方向盘转角序列),只执行第一个,然后在下个周期重新预测、重新优化。这就像一位经验丰富的司机,不仅根据当前偏差调整,还会预判未来几秒的路况来做出更平滑的决策。

// 一个极度简化的横向控制PID概念示例(非实际工程代码)
double lateral_controller(double current_lateral_error, double current_heading_error) {
    // PID参数(需根据实车调试)
    double Kp = 0.5; // 比例系数
    double Ki = 0.01; // 积分系数
    double Kd = 0.1;  // 微分系数

    static double integral_error = 0.0;
    static double prev_error = 0.0;

    // 计算总误差(加权和)
    double total_error = 0.7 * current_lateral_error + 0.3 * current_heading_error;

    // PID计算
    integral_error += total_error;
    double derivative_error = total_error - prev_error;
    prev_error = total_error;

    double steering_angle = Kp * total_error + Ki * integral_error + Kd * derivative_error;

    // 限制转向角在物理范围内
    steering_angle = clamp(steering_angle, -MAX_STEERING_ANGLE, MAX_STEERING_ANGLE);
    return steering_angle;
}

3.2 纵向控制:精准的油门与刹车艺术

纵向控制的目标是让车辆的实际速度跟随期望速度,同时在跟车时保持安全的车间距。它通过协调油门、刹车甚至换挡来实现。

其核心也是一个反馈控制系统:

  1. 输入:期望速度(或期望加速度)、实际速度、与前车的距离/相对速度。
  2. 控制器:常用PID或其变种。例如,当实际速度低于期望速度时,控制器计算出一个正的油门开度;当需要减速或跟车距离过近时,则计算出一个制动压力。
  3. 输出:发送给车辆线控系统的油门或刹车指令。

更复杂的纵向控制会考虑坡度阻力、风阻等车辆动力学模型,使控制更加精准和平顺。在自适应巡航(ACC)场景下,它会融合前车信息,实现“前车快我快,前车慢我慢,前车停我停”的智能跟车。

横向和纵向控制并非独立工作,它们需要协同。例如,在高速过弯时,纵向控制器需要适当减速以保证横向稳定性;在换道时,两者需要配合完成加速和转向的平滑过渡。

4. 三层联动的真实场景:一次完整的路口左转

让我们用一个完整的场景——无保护左转(即没有左转箭头灯,需要自行判断对向车流)——来串联这三层的工作,看看数据是如何流动的。

场景:车辆接近一个十字路口,需要左转。

  1. 感知层启动

    • 摄像头识别出路口形状、停止线、对向车道以及交通信号灯为“圆形绿灯”(允许通行但需让行)。
    • 激光雷达和毫米波雷达持续扫描,检测对向车道来车的距离、速度、轨迹,以及横穿马路的行人、自行车。
    • 定位系统确认车辆精确位于左转车道,并匹配高精地图中的路口结构。
    • 输出:一个包含“绿灯、对向有车接近、无行人、本车在正确车道”的完整环境模型。
  2. 规划层决策

    • 任务规划:早已规划好在此路口左转的路径。
    • 行为规划 (FSM)
      • 初始状态:APPROACHING_INTERSECTION(接近路口)。
      • 感知到绿灯且无冲突行人,状态切换为 WAIT_FOR_GAP(等待可穿越间隙)。
      • 持续评估对向来车:计算其到达冲突点的时间(Time to Arrival, TTA)。当感知到一辆车的TTA足够大(例如大于4秒),判断出现一个“安全间隙”。
      • 状态切换为 EXECUTE_TURN(执行转弯)。
    • 运动规划:基于EXECUTE_TURN指令,立即生成一条平滑的左转轨迹。这条轨迹起始于当前停止线,横穿对向车道,结束于目标车道中心线,并规划了合适的转弯速度曲线(入弯稍慢,出弯加速)。
  3. 控制层执行

    • 横向控制:接收运动规划生成的轨迹点,实时计算方向盘转角,使车辆严格沿左转弧线行驶。
    • 纵向控制:根据轨迹上每个点对应的期望速度,精细控制油门和刹车。在转弯弧顶可能轻微收油以稳定车身,驶出弯心后平稳加速。
    • 在整个执行过程中,感知层仍在持续监控。如果突然有对向车辆加速闯入冲突区,感知层会立刻将这一危险信号反馈给规划层。规划层可能瞬间将状态切回 WAIT_FOR_GAP 甚至触发 EMERGENCY_BRAKE,控制层则执行紧急制动。

这个例子清晰地展示了三层架构如何形成一个**“感知-决策-执行”的实时闭环**。每一层都专注于自己的核心任务,通过标准化的接口传递信息,共同应对复杂多变的交通环境。

5. 超越基础:当前系统的挑战与演进方向

理解了基础的三层架构,我们就能更好地把握这个领域正在发生的变化和面临的挑战。当前的系统并非完美,工程师们正在从多个维度对其进行增强和重构。

挑战一:长尾场景与极端情况 即使拥有三层架构,无人车仍会遭遇训练数据中罕见的“长尾场景”,比如:

  • 一个穿着卡通恐龙服装的行人横穿马路。
  • 前方卡车上掉落下形状怪异的货物。
  • 暴雨中积水淹没车道线,同时摄像头被水花模糊。 应对这些,需要感知层有更强大的泛化识别能力,规划层有更灵活的常识推理和风险预估能力,以及系统具备安全的最小风险策略

挑战二:系统的实时性与可靠性 在高速行驶时,从感知到控制的全链路延迟必须极低(通常在100毫秒以内)。任何一层出现计算超时或故障都可能是灾难性的。因此,除了提升单点性能,系统的冗余设计和故障降级机制至关重要。例如,当主感知系统失效时,降级系统能否依靠基础传感器实现安全停车?

演进方向:端到端学习与架构融合 一个有趣的前沿方向是端到端 (End-to-End) 自动驾驶。它尝试用单个深度神经网络,直接输入传感器原始数据(如图像),输出车辆的控制指令(方向盘、油门),绕过了传统分层的显式规划模块。这更像是在模拟人类司机“条件反射”式的驾驶行为。其优势是结构简洁,可能更好地处理复杂场景;但劣势是“黑箱”特性导致可解释性和安全性验证困难。目前业界更看好的是混合架构,即保留分层框架的可靠性和可解释性,同时引入端到端学习技术来优化某些子模块(如感知或决策)。

另一个趋势是“车路云协同”。仅仅依靠车端的智能(单车智能)是有天花板的。通过V2X车联网技术,车辆可以与道路基础设施(智能红绿灯)、其他车辆以及云端平台实时通信。云端可以汇聚更大范围的交通信息,为车辆提供“上帝视角”的预测和调度,从而弥补单车感知的盲区,优化全局交通效率。这相当于为无人驾驶系统增加了一个超视距的“云端感知与规划层”

在我参与过的一个园区物流车项目中,我们就曾为处理临时施工路段伤透脑筋。传统的路径重规划有时会生成不合理的绕行路线。后来我们为行为规划的状态机增加了一个 “GUIDED_MANEUVER”(引导机动)状态,当车辆通过V2I接收到来自路侧设备的“前方施工,请沿锥桶引导线行驶”的指令时,会暂时接管部分运动规划逻辑,优先跟随引导线,而不是死板地寻找车道中心线。这个小改动让车辆在面对这类动态障碍时显得“聪明”和“听话”了许多。这让我深刻体会到,一个好的架构不仅要理论上清晰,更要为这些实际工程中的灵活处理预留空间。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐