无人车系统架构:感知、决策、控制三大模块的职责划分与数据流关系

无人车是一个典型的复杂嵌入式AI系统,其核心逻辑可以抽象为“感知—决策—控制”三层闭环。感知模块负责回答“我在哪、周围有什么”,决策模块负责回答“接下来怎么走”,控制模块则负责回答“方向盘打多少、油门刹车踩多深”。三个模块之间通过高频数据流紧密耦合,任何一个环节的延迟或失真都会直接反映在车辆行驶品质与安全性上。本章将围绕三大模块的职责边界、数据接口、时序约束与工程实现要点展开,帮助学习者建立从传感器原始数据到车轮转角的完整链路认知。

感知模块 决策模块 控制模块 摄像头 / 激光雷达 / 毫米波 数据采集与预处理 目标检测 / 车道线 / 语义分割 视觉感知与点云感知 多传感器融合 目标级融合 / 特征级融合 定位与地图匹配 GNSS / IMU / 高精地图 全局路径规划 起点→终点 道路级路径 行为决策 跟车 / 停车 / 变道 / 超车 运动规划 局部轨迹生成 / 速度曲线 安全校验与冗余判断 碰撞检测 / 紧急停车 横向控制 前轮转角 / 转向指令 纵向控制 油门 / 刹车 / 挡位 执行器反馈 轮速 / 转向角 / IMU 状态监测与保护 超限报警 / 降级策略 感知结果 10-30Hz 轨迹指令 20-50Hz 车辆状态反馈(轮速、IMU、转向角)→ 感知模块更新定位与状态估计 数据流方向:传感器 → 感知 → 决策 → 控制 → 执行器 → 车辆 → 反馈闭环

上图展示了无人车三大模块的典型数据流拓扑。感知模块输出的是结构化环境模型,决策模块输出的是轨迹与行为指令,控制模块输出的是执行器指令。值得注意的是,反馈回路并非从控制模块直接跳回感知模块,而是通过车辆底盘的实际运动状态(轮速、IMU、转向角)重新进入感知模块的定位与状态估计环节,形成完整的闭环。下面分别对三个模块进行深入拆解。

2.1 感知模块:从原始数据到环境模型的转换

核心原理

感知模块的职责可以概括为“三件事”:检测(Detect)、定位(Localize)、预测(Predict)。检测是指识别出前方障碍物、车道线、交通标志、行人等静态与动态目标;定位是指确定车辆自身在全球或局部坐标系中的精确位姿(x, y, yaw);预测则是基于历史轨迹和运动模型,估计周围目标在未来1~3秒内的可能位置。在无人车教学项目中,感知模块通常以摄像头为主传感器,辅以激光雷达或毫米波雷达,运行在嵌入式GPU或高性能计算平台上。

判断方法与操作流程

感知模块的工程实现遵循“先标定、再同步、后融合”的流程:

  1. 传感器标定:包括摄像头内参(焦距、畸变系数)和外参(相对于车体坐标系的旋转平移矩阵)。标定不准确会导致后续融合出现系统性偏差。
  2. 时间同步:不同传感器的采样频率不同(摄像头30Hz、激光雷达10Hz),需要通过时间戳对齐或插值算法将数据统一到同一时间基准。
  3. 目标检测与分割:使用YOLO、RTMDet等轻量级网络进行实时目标检测,使用语义分割网络提取可行驶区域。
  4. 多传感器融合:在目标级或特征级将视觉与雷达数据进行关联匹配,输出统一的障碍物列表(含位置、速度、类别、置信度)。
  5. 自车定位:融合GNSS、IMU、轮速计与高精地图匹配结果,输出车辆位姿估计。

案例拆解:教学车感知模块的典型配置

以某高校无人车教学平台为例,其感知模块配置如下:

传感器型号/规格采样频率输出数据用途
前视摄像头1920×1080@30fps30HzRGB图像车道线、车辆、行人检测
激光雷达16线,100m量程10Hz3D点云障碍物精确测距与轮廓
IMU6轴,200Hz200Hz加速度、角速度位姿推算与运动补偿
GNSSRTK,厘米级20Hz经纬度、航向全局定位基准

在实际运行中,感知模块每帧处理耗时约25ms(40Hz),其中目标检测占15ms,融合与定位占10ms。如果检测耗时超过50ms,就会导致决策模块拿到的环境信息滞后,在高速行驶时产生明显控制延迟。因此,教学项目中通常要求感知模块的端到端延迟控制在100ms以内。

经验提醒:感知模块的输出格式必须标准化。建议定义统一的数据结构(如 PerceptionFrame),包含时间戳、自车位姿、障碍物列表、车道线数组、可行驶区域多边形等字段。这样决策模块无需关心传感器具体型号,只需消费标准接口即可。

2.2 决策模块:从环境理解到行为选择的推理引擎

核心原理

决策模块是无人车的“大脑”,它接收感知模块输出的环境模型,结合高精地图与任务目标,生成一条安全、平滑、可执行的轨迹。决策模块通常分为三个层级:全局规划(Route Planning)、行为决策(Behavior Decision)和运动规划(Motion Planning)。全局规划负责在道路网中搜索从起点到终点的宏观路径;行为决策负责根据当前交通场景选择驾驶策略(如跟车、停车、变道);运动规划则负责在行为决策的约束下生成具体的轨迹曲线(路径+速度)。

判断方法与操作流程

决策模块的典型处理流程如下:

  • 场景理解:将感知输出的障碍物列表与高精地图进行语义关联,判断当前所处场景(直行、路口、弯道、施工区等)。
  • 行为选择:基于有限状态机(FSM)或行为树,根据场景、交通规则、自车状态选择当前驾驶行为。例如,前方有静止障碍物且左侧车道空闲时,状态机从“跟车”切换到“变道”。
  • 轨迹生成:在Frenet坐标系下,使用多项式曲线或样条曲线生成候选轨迹簇,每条轨迹包含横向偏移和纵向速度分布。
  • 轨迹评估与选择:对候选轨迹进行碰撞检测、曲率约束、加速度约束、乘客舒适度评估,选择综合代价最低的轨迹作为最终输出。

案例拆解:路口左转场景的决策逻辑

假设无人车行驶至一个无信号灯路口,需要左转。感知模块检测到对向直行车辆距离约40m,车速约36km/h(10m/s)。决策模块的计算过程如下:

  1. 场景识别:通过地图匹配确认当前处于路口区域,且自车位于左转车道。
  2. 行为决策:状态机进入“等待左转”状态,计算对向车辆到达冲突点的时间(TTC)。若TTC > 5秒,则允许左转;否则继续等待。
  3. 运动规划:生成一条曲率连续的左转轨迹,最大横向加速度限制在2m/s²以内,目标车速限制为15km/h。
  4. 安全校验:将轨迹离散为50个路径点,逐一检查与障碍物的最小距离是否大于0.3m安全裕量。

最终决策模块输出一条包含时间戳、路径点序列(x, y, yaw, v)的轨迹指令,发送给控制模块。整个决策周期约50ms,满足20Hz的输出频率要求。

风险提示:决策模块最常见的错误是“过度自信”。例如,当感知模块输出的障碍物置信度较低时(如0.6),决策模块不应直接忽略该障碍物,而应将其视为“未知风险”并降低车速或扩大安全距离。在教学中,建议为每个感知目标附加置信度字段,并在决策逻辑中设置置信度阈值。

2.3 控制模块:将轨迹指令转化为执行器动作

核心原理

控制模块是无人车系统的“小脑”,负责将决策模块输出的轨迹指令转化为具体的转向、油门、刹车控制量。控制模块的核心是跟踪控制,即让实际行驶轨迹尽可能接近参考轨迹。常用的控制算法包括纯跟踪(Pure Pursuit)、Stanley方法、模型预测控制(MPC)和线性二次调节器(LQR)。在教学项目中,纯跟踪和Stanley方法因其计算量小、参数直观而广泛使用。

判断方法与操作流程

控制模块的执行流程通常包括以下步骤:

  1. 轨迹接收与预处理:接收决策模块输出的轨迹点序列,进行坐标变换(从全局坐标系转换到车体坐标系)。
  2. 误差计算:计算当前车辆位置与参考轨迹的横向偏差(lateral error)和航向偏差(heading error)。
  3. 控制量计算:根据控制算法计算前轮转角(横向控制)和期望加速度/减速度(纵向控制)。
  4. 执行器指令下发:将控制量转换为CAN总线或PWM信号,发送给转向电机、驱动电机和制动系统。
  5. 反馈校正:读取轮速传感器和IMU数据,更新车辆状态估计,用于下一周期的控制计算。

案例拆解:纯跟踪算法的参数整定

以纯跟踪算法为例,其核心公式为:

δ = arctan(2 * L * sin(α) / Ld)

其中,δ为前轮转角,L为轴距,α为车辆航向与目标点方向之间的夹角,Ld为前视距离。前视距离Ld是影响跟踪效果的关键参数:Ld过小会导致车辆振荡,Ld过大会导致弯道切弯。在教学中,通常将Ld设置为车速的线性函数:

Ld = k * v + Ld_min

例如,k=0.3,Ld_min=1.5m。当车速为5m/s时,Ld=3.0m;当车速为10m/s时,Ld=4.5m。通过实验对比,该参数设置下车辆在半径5m的弯道中横向偏差控制在±0.15m以内,满足教学演示要求。

控制算法计算复杂度跟踪精度适用场景教学难度
纯跟踪低中等(弯道有切弯)低速、简单弯道★☆☆☆☆
Stanley低较高(航向校正快)中低速、连续弯道★★☆☆☆
LQR中高(线性模型最优)高速、平滑路径★★★☆☆
MPC高最高(带约束优化)复杂场景、极限工况★★★★★

2.4 三大模块的协同机制与常见误区

协同机制:数据流时序与频率匹配

三大模块并非独立运行,而是通过严格的时序约束协同工作。典型的数据流时序如下:

  • 感知模块以30Hz频率输出环境模型,每次输出附带时间戳。
  • 决策模块以20Hz频率运行,每次决策使用最近一帧感知数据,并考虑感知延迟进行运动补偿。
  • 控制模块以50Hz或更高频率运行,每次控制周期使用最近一条轨迹指令,并通过内插方式平滑过渡。

如果感知频率低于决策频率,决策模块将不得不重复使用旧数据,导致环境信息过时。因此,在系统设计时,需要明确各模块的频率匹配关系,并在接口层加入数据新鲜度检查。

常见误区与复盘

误区一:将感知、决策、控制放在同一线程中顺序执行。这会导致总延迟等于三者耗时之和,且高频率的控制模块被低频率的感知模块阻塞。正确做法是采用多线程或分布式架构,各模块独立运行,通过消息队列通信。
误区二:忽视数据时间戳。在实车调试中,如果各模块使用本地时钟而不进行同步,会导致数据错位。例如,感知模块输出的障碍物位置是100ms前的,而决策模块误以为它是当前时刻的,就会导致碰撞风险。解决方案是使用统一的系统时钟,并在数据帧中携带时间戳。
误区三:控制模块参数“一刀切”。不同车速、不同路况下,最优控制参数不同。教学项目中,建议设计参数调度表,根据车速和曲率动态调整前视距离或PID增益。

总结复盘

无人车三大模块的职责划分可以概括为:感知负责“看清”,决策负责“想好”,控制负责“做到”。在工程实践中,模块之间的接口设计比模块内部算法更重要。建议学习者在教学项目中优先定义清晰的数据结构(如感知输出结构体、轨迹指令结构体),再逐步填充算法实现。同时,要建立“延迟预算”意识:从传感器采集到执行器动作的总延迟应控制在150ms以内,其中感知占60%,决策占25%,控制占15%。通过本章的学习,学习者应能够画出三大模块的数据流图,并解释每个模块的输入、输出与关键性能指标。