上篇讲到,端到端模型最终不应该只吐出一个模糊的“往前开”,而应输出未来几秒的轨迹、速度、行为意图或代价。下篇进入更硬的部分:控制层如何把这条轨迹兑现成真实车辆动作。对商用车来说,控制不是“油门、刹车、方向盘”三个滑块,而是一整套闭环:轮端力怎么算,动力和制动怎么分配,转向角怎么限速,转向灯什么时候开关,挡位什么时候提前切换,TCU 回报什么才算成功,失败时如何降级。
为了把这件事讲透,我们用一个贯穿案例:一辆 40 吨牵引车带挂车在 80km/h 高速巡航,前方 1.5% 上坡且有慢车,需要提前判断是否并线、是否维持速度、是否降挡、是否打开转向灯、是否能在目标车道稳定居中。这个场景看起来很日常,却足以把感知、决策、规划、控制、换挡和执行反馈全部串起来。

图 1:Arnold NextG 的 Drive-by-Wire 测试车辆资料图:自动驾驶算法必须通过线控执行层才能真正控制油门、制动和转向。 图片来源:https://www.arnoldnextg.com/company/blog/the-symbiosis-why-drive-by-wire-and-autonomy-are-inseparable
一、控制层的位置:它是自动驾驶的肌肉和反射弧
控制层收到的不是原始图像,而是规划层输出的轨迹。轨迹一般包含未来每个时刻的 x、y、航向、曲率、速度、加速度,有时还带目标车道、行为状态、让行关系、停止线、转向灯请求和换挡建议。控制层要做的第一件事,是比较“我现在在哪里”和“轨迹希望我在哪里”。横向误差 e_y、航向误差 e_ψ、速度误差 e_v、加速度误差 e_a,是控制器最常看的量。
然后控制层会分成纵向和横向两条主线。纵向负责速度、加速度、驱动力、制动力、挡位和能量回收;横向负责方向盘角、前轮角、横摆率、横向位置和车道居中。商用车还要加一层“执行协调”:同一个减速度可以来自发动机制动、缓速器、EBS 服务制动和挂车制动;同一个加速度可以来自发动机扭矩、电机扭矩或挡位变化;同一个并线动作既要转向,又要提前打转向灯,还要保证挂车扫掠空间。
所以控制层不是模型的附属品。它是把神经网络输出变成机械动作的翻译器,也是最后一道快速反射弧。模型慢一点可以容忍,控制闭环不能慢;模型偶尔不确定可以降级,制动命令必须明确;规划可以表达意图,执行器只认有限、带单位、带超时的命令。
二、纵向控制:先算轮端力,再决定油门还是制动
纵向控制最朴素的目标,是让车速跟上规划速度。但工程上不能只做 PID 调速,因为车要面对坡度、风阻、滚阻、质量变化、挡位变化、制动滞后和发动机/电机扭矩边界。更好的做法是先估算目标轮端力,再把轮端力分配给驱动、制动和挡位。
Fx,req = ma + mgsinθ + Crrmg + 1/2 ρCdAv2这两个公式的意思很直白:你想让车产生某个加速度,就要克服车辆惯性、坡度、滚阻和空气阻力;需要的轮端力乘以轮胎半径,就是轮端扭矩。端到端规划如果希望车在上坡还继续加速,控制层必须检查当前动力总成能不能提供这么多轮端扭矩。提供不了,就不能硬跟踪;要么提前降挡,要么降低加速度目标,要么拉大跟车距离。
图 2:纵向控制先把规划加速度转换成轮端力和轮端扭矩,再决定驱动、制动和换挡。
| 变量 | 工程含义 | 单位 | 典型来源 |
|---|
| m | 整车质量,含货物和挂车 | kg | 称重、气囊压力估计、车队装载信息 |
| v | 车辆纵向速度 | m/s | 轮速、GNSS/INS 融合 |
| a | 规划目标加速度 | m/s² | 速度规划或 MPC |
| θ | 道路坡度角 | - | 地图坡度、IMU、长期估计 |
| Crr | 滚动阻力系数 | - | 轮胎/路面经验值 |
| T_w | 轮端扭矩 | N·m | 纵向控制计算结果 |
实际控制器会在前馈和反馈之间做组合。前馈来自上面这种车辆模型,它提前补偿坡度、风阻和滚阻;反馈来自速度误差和加速度误差,用 PID、LQR 或 MPC 修正模型误差。商用车常见做法是前馈给出基础驱动/制动需求,反馈慢慢修,限幅器保证踏板、扭矩、制动压力变化率不会让车辆顿挫。
三、油门怎么给:不是踏板百分比,而是驱动扭矩请求
在传统车上,驾驶员踩油门,发动机 ECU 根据踏板位置、转速、负荷、排放和变速箱状态决定喷油或电机扭矩。自动驾驶系统接管后,最理想的接口不是“模拟一个脚去踩踏板”,而是通过车辆接口请求目标扭矩、目标加速度或虚拟踏板。不同平台开放程度不同:有的通过 J1939 或专用 CAN 请求发动机扭矩,有的通过线控套件转成踏板传感器信号,有的新能源平台直接给 VCU 目标轮端扭矩。
控制层给油门时通常遵循四个约束。第一,不能超过轮胎附着和舒适性限制;第二,不能超过发动机/电机当前转速下可用扭矩;第三,不能与换挡过程冲突,换挡时要先卸载扭矩;第四,不能与制动同时打架,除非是特定的坡道保持或扭矩填充策略。
油门是否到位,不是看命令发出去了没有,而是看反馈是否收敛。典型反馈包括发动机实际扭矩百分比、发动机转速、电机实际扭矩、车速、纵向加速度、驱动轴扭矩估计。控制器会判断:目标加速度和实际加速度误差是否小于阈值,扭矩响应是否在允许时间内到达,车速是否按预期变化,是否有发动机限扭、热保护、牵引力控制介入或通信超时。

图 3:Knorr-Bremse 电子制动控制产品图。EBS 能把制动意图转成轴/轮侧压力控制,并向自动驾驶提供可控的制动执行路径。 图片来源:https://truck.knorr-bremse.com/en/de/products/brake-control/electronic-braking-control/
四、制动怎么给:EBS、气压滞后和挂车协调
商用车制动控制的难点在于,它不是一个理想的“刹车百分比”。许多重卡使用电控气压制动,EBS 接收制动意图后计算各轴压力,再通过电控气压调制器建立压力。挂车还要通过牵引车-挂车接口协调制动力。也就是说,从制动命令到车轮产生制动力之间,有电控延迟、阀体延迟、气压建立、制动器热状态、轮胎附着和 ABS/ESP 介入。
规划层如果要求很急的减速度,控制层要先判断是否可实现。低附着路面、大质量、长下坡、制动热衰退、挂车负载变化都会改变可用减速度。控制器通常会把目标减速度分解为缓速器/再生制动、发动机制动、服务制动和挂车制动。目标是既要安全减速,又要减少制动磨损和挂车推头。
制动到位的判定通常看三类反馈。第一是运动反馈:实际减速度、车速下降率、轮速一致性。第二是系统反馈:制动压力、EBS 状态、ABS/ESP 是否介入、气压是否足够。第三是安全反馈:轮胎是否接近抱死、横摆率是否异常、挂车是否出现不稳定迹象。如果命令给了但减速度不上来,控制层不能继续假设车会按轨迹停下,必须立刻重规划或触发降级。

图 4:Bendix 电控气压制动系统资料图。商用车制动仍然有气压、阀体、管路和挂车耦合,控制层必须考虑响应滞后和冗余。 图片来源:https://www.bendix.com/en/products/vehicle-dynamics/electropneumatic-braking-systems-ebs/
五、横向控制:从轨迹曲率到前轮角
横向控制负责让车辆沿着规划轨迹走。经典方法包括 Pure Pursuit、Stanley、LQR 和 MPC。Pure Pursuit 像“追前方一个预瞄点”,实现简单、鲁棒性好;Stanley 同时考虑横向误差和航向误差,曾用于高速越野自动驾驶;MPC 则在预测窗口内优化未来一串控制量,可以同时考虑转向角、转向角速率、横向加速度和车辆稳定性约束。商用车高速场景常更偏向带约束的 MPC 或“前馈曲率 + 反馈修正”的组合。
第一条公式是曲率前馈:如果轨迹曲率是 κ,轴距是 L,车辆大致需要一个前轮角 δ_ff。第二条公式是反馈修正:横向偏了就修横向误差,车头方向不对就修航向误差。实际系统还会加上转向角限幅、角速度限幅、轮胎侧偏限制、横向加速度限制和执行器滞后补偿。

图 5:Bosch 商用车电动助力转向/转向执行器资料图。转向控制不是只给一个角度,还要处理速率、力矩、回正和故障降级。 图片来源:https://www.bosch-presse.de/pressportal/de/en/bosch-kompakt-268227.html
转向到位的判定也不是看方向盘角等于命令。更可靠的判据包括:前轮角或方向盘角是否跟踪目标,横摆率是否接近期望,横向误差 e_y 是否收敛,航向误差 e_ψ 是否收敛,转向角速度是否没有饱和,轮胎侧偏估计是否在安全范围。高速重卡如果只追求快速消除横向误差,容易造成横向加速度突变和挂车摆动;所以控制器宁愿慢一点,也要可预测、可恢复。
六、转向灯怎么给:行为状态机,而不是规划图上的装饰
转向灯是一个很小的执行器,却是自动驾驶系统与外部交通交流的重要信号。典型并线流程里,行为决策先进入“准备并线”状态,确认目标车道间隙、速度差、后车风险和法规允许;随后控制层向 BCM 发出左/右转向灯命令,并记录开始时间、闪烁次数和行为状态。许多策略会要求转向灯至少开启一段时间后才真正越线,具体阈值取决于法规、场景和公司策略。
取消转向灯也要靠状态判定。车辆中心越过车道线不代表并线完成,挂车尾部可能还在原车道。更稳妥的取消条件是:自车与挂车都在目标车道安全范围内,横向误差和航向误差收敛,行为状态从 LaneChange 退出到 LaneKeeping,且最短闪烁时间满足。如果 BCM 提供灯光反馈,系统应确认反馈状态;如果只提供命令接口,也至少要有命令回显和超时监控。
七、换挡为什么要提前做:挡位是纵向控制的一部分
很多人以为自动驾驶只控制油门、刹车和方向,挡位交给变速箱自己管就行。对乘用车低速城市场景,这种想法有时还能凑合;对商用车,尤其是柴油重卡或 AMT 重卡,挡位会直接决定轮端力、发动机转速、换挡中断时间、油耗和舒适性。自动驾驶规划层如果看见前方上坡、汇入、超车、限速变化,就应该把未来速度需求传给换挡策略,而不是等车已经掉速再被动降挡。
挡位选择本质上是一个约束优化问题:在未来几秒速度曲线和道路坡度已知的情况下,选择当前挡位、目标挡位和换挡时刻,使发动机/电机工作在合理转速区间,轮端力满足需求,换挡次数不要太多,换挡时的扭矩中断不会破坏安全距离。
Favail(g) = Teng(ω) · ig · i0 · η / rw这里 g 是挡位,i_g 是该挡位速比,i_0 是主减速比,η 是传动效率,T_eng 是发动机在当前转速下可提供的扭矩。控制器会对每个候选挡位计算发动机转速是否在允许范围、可用轮端力是否大于需求、换挡是否会导致速度掉得过多。

图 6:自动换挡是一个带条件、反馈和超时的状态机。换挡成功必须由 TCU 和车辆运动反馈共同确认。
八、换挡过程怎么执行:从请求到成功确认
以 AMT 或自动变速箱为例,一个安全的自动换挡过程通常包含六步。第一,触发条件:控制层发现未来轮端力不足、发动机转速不合适、燃油经济性更优或规划动作需要更大扭矩。第二,安全检查:当前速度、坡度、跟车距离、横向动作、制动状态和发动机转速是否允许换挡。第三,扭矩卸载:控制层降低驱动扭矩,必要时请求发动机降扭,避免带载强行换挡。第四,发送目标挡位或目标范围请求。第五,监控 TCU 状态:Shift in Process、Selected Gear、Current Gear、输入轴/输出轴转速、离合器滑差或变矩器状态。第六,确认成功后按斜率恢复驱动扭矩,并把新的动力能力反馈给规划层。
成功判定不能只看 Selected Gear。Selected Gear 表示变速箱打算达到的目标档,Current Gear 才表示当前已经结合或上一已结合档。更稳妥的判据是:Current Gear 等于目标档,Shift in Process 为 0,输入轴/输出轴转速关系符合目标速比,离合器滑差下降到阈值以下,发动机转速没有越界,纵向加速度没有异常跳变。若超过时间还没满足,系统要进入换挡失败处理:保持安全距离、限制加速、必要时降级到最小风险动作。
九、J1939/CAN 反馈:自动驾驶不是单向发命令
商用车底盘通信常见 SAE J1939。J1939 用 PGN 表示一组报文,用 SPN 表示具体信号。变速箱、发动机、制动、车速、踏板、故障码都会在不同 PGN/SPN 中出现。自动驾驶控制器不能只往外发命令,还要持续读取底盘反馈,形成闭环。
| 对象 | 常见信号 | 工程用途 | 到位/异常判断 |
|---|
| 发动机/电机 | 发动机转速、实际扭矩、负荷、踏板位置 | 驱动力闭环、换挡前后转速校验 | 扭矩未响应、限扭、过热、转速越界 |
| 变速箱 TCU | Selected Gear、Current Gear、Shift in Process、输入/输出轴转速 | 换挡请求与成功确认 | 目标档未结合、换挡超时、滑差异常 |
| EBS/制动 | 制动压力、ABS/ESP 状态、轮速、气压 | 减速度闭环和稳定性监控 | 压力不足、ABS 介入、减速度不足 |
| EPS/转向 | 方向盘角、前轮角、转向角速率、故障状态 | 轨迹跟踪和横向稳定 | 角度饱和、速率不足、回差过大 |
| BCM/灯光 | 转向灯命令、回显、灯光故障 | 并线/转弯意图表达 | 灯未打开、灯故障、取消条件未满足 |
一个成熟系统会给每条关键报文加 freshness 检查:时间戳是否新鲜,序号是否连续,信号是否在物理范围内,是否出现 J1939 的无效值或错误值,通信周期是否超时。因为对于自动驾驶来说,旧的 Current Gear、旧的制动压力、旧的转向角都可能比没有数据更危险。

图 7:JTEKT 线控转向与备份电源系统资料图。真正的自动驾驶执行层需要控制器、执行器、通信和备份供电一起成立。 图片来源:https://www.jtekt.co.jp/e/news/2025/004779.html
十、执行器闭环:什么叫油门、刹车、转向灯“给到了”
“命令发出”不是“执行到位”。油门到位,意味着实际扭矩和纵向加速度在允许时间内接近目标;制动到位,意味着减速度和压力响应满足目标且稳定系统没有异常;转向到位,意味着前轮角、横摆率、横向误差和航向误差共同收敛;转向灯到位,意味着 BCM 接收并反馈灯光状态,且行为状态满足打开和取消条件;换挡到位,意味着目标档真实结合并且动力链恢复。
因此控制层每次下发命令都应该带着“期望响应”。例如 100ms 内扭矩应该开始变化,300ms 内加速度方向应该正确,1s 内速度误差应该下降;制动压力应该在某个延迟后建立,横向误差应该在预测窗口内下降,换挡应该在允许时间内结束。到位判定不是固定一个阈值,而是由执行器类型、车速、载荷、坡度和当前状态共同决定。

图 8:控制层必须为每类执行器建立命令、反馈、到位判定和超时降级。
十一、一个可执行的小计算:为什么 80km/h 上坡前要提前降挡
下面这个接近可执行的 Python 例子,把上文的轮端力和挡位选择串起来。它不是完整量产算法,但能帮助理解控制层如何把“上坡保持速度”翻译成“当前挡位是否够用”。
import math
m = 40000 # kg, 牵引车+挂车
v = 80 / 3.6 # m/s
a = 0.10 # m/s^2, 目标轻微加速
grade = 0.015 # 1.5% 上坡
Crr = 0.006
rho, CdA = 1.2, 7.0
rw = 0.50
T_eng = 1900 # Nm, 当前可用发动机扭矩
eta, i0 = 0.92, 2.64
gears = {11: 1.00, 10: 1.25, 9: 1.55, 8: 1.96}
F_req = m*a + m*9.81*grade + Crr*m*9.81 + 0.5*rho*CdA*v*v
wheel_rpm = v / (2*math.pi*rw) * 60
for g, ig in gears.items():
rpm = wheel_rpm * i0 * ig
F_avail = T_eng * ig * i0 * eta / rw
print(g, round(rpm), round(F_avail), F_avail > F_req)
print(round(F_req))示例结果可以这样理解:当前 11 挡轮端力不足,10 挡接近但裕度不够,9 挡能基本覆盖 1.5% 上坡和 0.10m/s² 目标加速度,同时发动机转速还在可接受范围;8 挡虽然轮端力更大,但可能让发动机转速过高。于是换挡策略会倾向提前降到 9 挡,或者在 9 挡仍无足够裕度时降低目标加速度。
注意,这个决策发生在车真正掉速之前。端到端世界模型看到前方坡道和交通流,规划层知道未来速度目标,控制层知道当前挡位和动力能力,于是系统可以提前换挡。等速度已经掉下来再降挡,跟车距离、汇入窗口和乘坐舒适性都可能变差。

图 9:PlusAI 与 International / TRATON 体系合作的工厂集成自动驾驶重卡展示图,说明 L4 商用车正在从改装样车走向主机厂集成。 图片来源:https://www.plus.ai/solutions/superdrive
十二、安全外壳:当模型和执行器意见不一致时,谁说了算
端到端系统必须有安全外壳。安全外壳不是反对模型,而是为模型定义边界:这条轨迹是否碰撞,是否超速,是否超过横向加速度,是否在 ODD 内,是否需要转向灯,制动是否可实现,当前执行器是否健康,通信是否正常。如果模型给出一个看似漂亮但不可执行的动作,安全外壳要拒绝或修正。
常见安全机制包括轨迹碰撞检查、控制命令限幅、互斥逻辑、双通道计算、状态机守卫、故障诊断、心跳监控和最小风险动作。比如油门和制动不能长期互相打架;换挡未完成时不能突然恢复大扭矩;转向执行器故障时不能继续执行激烈并线;制动压力不足时要扩大安全距离;定位不可信时要退出自动驾驶。
最小风险动作 MRM 是商用车必须认真设计的能力。它不是简单停车,而是根据场景选择安全降速、保持车道、打开双闪、靠右、进入应急停车、请求远程协助或停在安全区域。对重卡来说,随便停在高速主线并不一定安全,所以 MRM 也需要规划、控制和运营策略配合。
十三、调试一辆端到端商用车,看哪些日志字段
真正调车时,工程师不会只看一段视频。他会同时看模型输出、规划轨迹、控制误差、底盘反馈和故障码。尤其是控制问题,很多时候视频看起来只是“顿了一下”,日志里才知道是换挡扭矩卸载太早、EBS 压力建立慢、转向角速率饱和、目标轨迹曲率突变,还是 J1939 报文超时。
| 日志字段 | 为什么重要 |
|---|
| trajectory_id / timestamp | 确认控制器跟踪的是哪一条轨迹,是否跟踪旧轨迹 |
| v_ref, a_ref, curvature_ref | 速度、加速度、曲率是否突然跳变 |
| e_y, e_psi, e_v | 横向、航向、速度误差是否收敛 |
| throttle_cmd, brake_cmd, steering_cmd | 命令是否被限幅或互相冲突 |
| actual_torque, brake_pressure, steering_angle | 执行器实际响应是否到位 |
| selected_gear, current_gear, shift_in_process | 换挡是否进入、是否结束、是否成功 |
| abs_active, esp_active, fault_code | 稳定系统或故障是否介入 |
| sensor_health, localization_quality | 控制问题是否其实来自感知/定位不可信 |
一个好用的自动驾驶系统,调试日志应该能复盘“为什么下了这个命令、执行器怎么响应、系统如何判断成功或失败”。这也是端到端工程落地的关键:模型可以复杂,但每一次危险动作都必须能被解释到足够工程层级。
十四、下篇小结:端到端的最后一公里是控制工程
商用车端到端自动驾驶的上半场,是让模型理解世界并给出合理轨迹;下半场,是让控制工程把轨迹兑现成油门、制动、转向、灯光和挡位。没有上半场,车辆不知道该往哪里开;没有下半场,车辆知道得再多也开不稳。真正可商用的系统,必须把端到端模型、车辆动力学、线控执行、J1939/CAN 反馈、安全状态机和数据闭环放在同一张图里。
如果只记住一个判断标准,可以这样问:系统是否知道自己想做什么,是否知道车辆能不能做到,是否能通过反馈证明已经做到,做不到时是否知道怎样安全退出。能回答这四个问题,端到端自动驾驶才从算法演示进入商用车工程。
参考资料
[1] Arnold NextG: Why Drive-by-Wire and Autonomy Are Inseparablehttps://www.arnoldnextg.com/company/blog/the-symbiosis-why-drive-by-wire-and-autonomy-are-inseparable
[2] New Eagle Autonomous Machines / Drive-by-Wire Kitshttps://neweagle.net/autonomous-machines/
[3] Robotics Knowledgebase: Drive-by-wire Conversion for Autonomous Vehiclehttps://roboticsknowledgebase.com/wiki/actuation/drive-by-wire/
[4] Knorr-Bremse Electronic Braking Controlhttps://truck.knorr-bremse.com/en/de/products/brake-control/electronic-braking-control/
[5] Bendix Electropneumatic Braking Systemshttps://www.bendix.com/en/products/vehicle-dynamics/electropneumatic-braking-systems-ebs/
[6] Bosch commercial vehicle solutionshttps://www.bosch-presse.de/pressportal/de/en/bosch-kompakt-268227.html
[7] JTEKT Steer-by-Wire System and Backup Power Supplyhttps://www.jtekt.co.jp/e/news/2025/004779.html
[8] PCS J1939 Communication for Automatic Transmission Controllerhttps://powertraincontrolsolutions.com/download/Released/Public/Developer_Files/PCS%20J1939%20Messages%20v2_1.pdf
[9] CSS Electronics: J1939 Explainedhttps://www.csselectronics.com/pages/j1939-explained-simple-intro-tutorial
[10] Testing and Assessment of a Full-Scale J1939 Network Modelhttps://rosap.ntl.bts.gov/view/dot/145/dot_145_DS1.pdf
[11] Pure Pursuit implementation technical report, CMUhttps://publications.ri.cmu.edu/storage/publications/pub_files/pub3/coulter_r_craig_1992_1/coulter_r_craig_1992_1.pdf
[12] Stanley trajectory tracking control paperhttps://ai.stanford.edu/~gabeh/papers/hoffmann_stanley_control07.pdf
[13] PlusAI SuperDrive 官方页面https://www.plus.ai/solutions/superdrive