一、规划控制算法概述
大家好,我是你们的老朋友。今天咱们正式开讲规划控制算法。说实话,每次带新人入门,我都要先花半小时讲清楚一件事——自动驾驶系统到底长什么样?规划控制模块又处在什么位置?
我个人习惯把自动驾驶系统比作一个「人」。感知是眼睛和耳朵,定位是大脑里的导航仪,决策规划是思考过程,控制就是手脚的执行。你想想看,眼睛再好使,手脚不听使唤也白搭。反过来,手脚再灵活,脑子没想好往哪走,那更危险。
核心观点:规划控制模块是自动驾驶系统的「大脑+小脑」。它负责把感知定位的结果,转化成具体的、可执行的车辆运动指令。
1.1 自动驾驶系统架构概览
先看一张经典的架构图。虽然各家方案略有不同,但大体上逃不出这几个模块:
- 感知层:摄像头、激光雷达、毫米波雷达、超声波。负责「看到」世界。
- 定位层:GPS、IMU、高精地图、SLAM。负责「知道自己在哪」。
- 预测层:对周围交通参与者的未来轨迹进行估计。说白了,猜别人下一步要干嘛。
- 规划层:路径规划、行为决策、轨迹规划。这是今天的主角。
- 控制层:横向控制(方向盘)、纵向控制(油门/刹车)。负责「执行」。
我在项目中遇到过不少同学,一上来就扎进控制算法里调PID参数,结果发现车根本走不对路。为什么?因为规划层给的轨迹就是错的。所以,一定要先理解整个链条。
1.2 规划控制模块的定位
规划控制模块到底干什么活?我给它总结了三个核心任务:
- 我要去哪?——全局路径规划(Route Planning)。从A点到B点,走哪条路。
- 我该怎么走?——行为决策(Behavior Decision)。变道?跟车?让行?还是加速超车?
- 我具体怎么动?——运动规划(Motion Planning)。生成一条平滑、安全、舒适的轨迹,包含位置、速度、加速度、曲率等信息。
嗯,这里要注意:控制模块拿到的是一条「轨迹」,而不是一个「点」。很多新手犯的错误,就是只给控制模块一个目标点,然后指望它自己算过去。这不行。控制模块只负责跟踪,不负责规划。
避坑指南:我曾经在一个项目中,因为规划模块输出的轨迹频率太低(只有10Hz),导致控制模块在两次轨迹之间「盲开」。后来我加了一个插值模块,把轨迹频率提升到50Hz,问题才解决。记住:规划输出频率和控制执行频率要匹配。
1.3 核心算法演进历程
规划控制算法不是一天建成的。我入行那会儿,大家还在用最朴素的方法。这些年走过来,大致经历了三个阶段:
| 阶段 | 时间 | 代表方法 | 特点 |
|---|---|---|---|
| 1.0 规则时代 | 2010-2015 | 状态机、A*、Dijkstra、PID | 简单、可解释性强,但场景覆盖不全 |
| 2.0 优化时代 | 2015-2020 | EM Planner、Lattice Planner、MPC | 考虑最优性,能处理复杂约束 |
| 3.0 学习时代 | 2020-至今 | 模仿学习、强化学习、端到端 | 数据驱动,泛化能力强,但可解释性差 |
1.0 规则时代:说白了就是「if-else大法」。遇到红灯就停,遇到行人就让。A*找路径,PID跟轨迹。优点是稳定可靠,缺点是遇到没见过的场景就抓瞎。我记得有一次测试,一个路口的交通灯坏了,规则直接死循环了。
2.0 优化时代:这时候大家开始用数学建模了。把规划问题转化成优化问题——在满足动力学约束、安全约束的前提下,最小化某个代价函数(比如时间、舒适度、能耗)。EM Planner(百度Apollo的方案)和Lattice Planner(基于采样+优化的方案)是典型代表。MPC(模型预测控制)则把规划和控制在同一个框架下求解。
3.0 学习时代:最近几年,深度学习杀进来了。模仿学习(IL)让模型学人类司机的驾驶行为,强化学习(RL)让模型自己试错。端到端方案更是激进——摄像头图像直接输出方向盘转角。但说实话,我个人对纯端到端持保留态度。为什么?因为出了问题你根本不知道是感知错了还是规划错了。可解释性太差。
重要提醒:不要盲目追新。在实际量产项目中,90%的场景用规则+优化就能解决。学习算法更适合处理那些「长尾场景」——比如不规则路口、施工区域、特种车辆避让。我建议你:先精通规则和优化,再考虑引入学习算法。
1.4 我的学习建议
讲了这么多,最后给各位一些实在的建议:
- 先动手,再动脑。别光看书。找个开源框架(比如Apollo、Autoware),跑一遍仿真,看看轨迹是怎么生成的。
- 重视数学基础。优化理论、控制理论、概率论,这三样是基本功。我见过太多人调参调了半天,其实是因为目标函数没写对。
- 多问「为什么」。为什么用五次多项式而不是三次?为什么MPC比PID更适合横向控制?想清楚这些,你才算真正入门。
好了,第一章就到这里。下一章我们深入聊聊全局路径规划——怎么从地图上找到一条最优路径。到时候我会手撕A*算法,带你看懂它的每一个细节。
咱们下章见。