结论:Ford 与 GM 都以「软件控制器只生成候选 CAN 帧、panda 固件独立放行」为前提,但两者路径不同:Ford 走角度/曲率式横向控制并用 ABS 车速与 PCM 第二车速交叉核验;GM 分 ASCM/OBD-II 网关与相机 ACC 两条接法,部分车型用 sigmoid 加线性拟合做横向映射。无论哪种,alpha_long、safetyParam、ALLOW_DEBUG 与 dashcamOnly 必须同时核对,不能单看软件发送代码推断硬件可执行。本文为源码静态分析,不是接线图、适配声明或实车安全验证。
Ford:曲率控制与双车速检查
CarInterface._get_params() 使用角度/曲率式横向控制,按 CAN FD、雷达 DBC、EPS 固件和指纹设置 ford 安全模式与总线。非 CAN FD 通过 EPS 固件配置排除缺少 TJA/LCA API 的车辆;CAN FD 的 16 字节 SecOC 控制报文未支持时标记 dashcamOnly;手动车型设最低使能车速。get_pid_accel_limits() 在临近巡航目标速度时降低 PID 正加速度上限以防积分饱和——参数层在 alpha_long 或雷达可用路径写入纵向安全参数,但这不是固件已放行的充分证据,CAN FD 纵向白名单还受编译门限制。
输出侧,CarController.update() 以 20 Hz 曲率命令工作,部分车型先用 anti_overshoot() 平滑,随后限测量曲率误差和变化率;CAN FD 与经典 CAN 分别调用不同 lateral 构帧函数,其它未验证的曲率率、路径角和偏移信号保持 inactive。纵向由 apply_creep_compensation() 及 CarController.update() 根据低速蠕行、目标加速度下降率和坡度影响生成 ACC 的油门、减速度及制动预充请求。
| 层 | 关键入口 | 已核对行为 |
|---|---|---|
| 参数 | _get_params() |
角度/曲率式横向;按 CAN FD、雷达 DBC、EPS 固件设置安全模式;SecOC 未支持标 dashcamOnly |
| 横向输出 | CarController.update() |
20 Hz 曲率;可先 anti_overshoot() 平滑;限曲率误差与变化率 |
| 纵向输出 | apply_creep_compensation() |
按蠕行、目标加速度下降率与坡度生成油门、减速度及制动预充 |
| 雷达 | RadarInterface.update() |
按 DBC 区分 Delphi ESR 与 MRR;MRR 检查扫描序列、覆盖范围及临时不可用 |
| 固件 RX | ford_rx_hook() |
ABS 车速与 PCM 第二车速交叉核验;用 yaw rate 估算曲率 |
| 固件 TX | ford_tx_hook() |
不允许 Lane_Assist_Data1 承载执行转向;不允许设置阻止原车 AEB 的位 |
| 模式选择 | ford_init() |
CAN FD 自控纵向仅在 ALLOW_DEBUG 且安全参数启用时添加 ACCDATA |
两个细节需要单独记住:Ford 固件 TX 对两种横向报文都要求额外路径信号为 inactive;RX 对部分 PCM 第二车速帧忽略计数器/校验和,但仍检查质量位。因此把多条总线合并为无来源的 VehicleSpeed 会损失安全判据。
GM:ASCM 网关与相机 ACC
CarInterface._get_params() 在 ASCM/OBD-II 网关路径默认自控纵向,在相机 ACC 路径默认原车纵向,实验纵向由 alpha_long 和安全参数选择;EV、无雷达、替代 ACC、SDGM 分支另有限制,无雷达或缺少测试覆盖可标记 dashcamOnly。alphaLongitudinalAvailable 只是能力提示,不能代替检查 openpilotLongitudinalControl 与固件模式。
横向映射上,部分车型用 get_lataccel_torque_siglin() 与 torque_from_lateral_accel() 以 sigmoid 加线性拟合横向加速度与扭矩并提供逆向插值,其余走基础线性映射——此调校是车型特定控制模型,不可作为新硬件通用执行器标定。输出侧 CarController.update() 按驾驶员扭矩限幅;相机接法需对齐相机计数器,回环确认距上次发送不足 15 ms 时跳过以避免 EPS 故障,活跃/非活跃横向采用不同节拍。
| 层 | 关键入口 | 已核对行为 |
|---|---|---|
| 参数 | _get_params() |
ASCM/OBD-II 网关默认自控纵向;相机 ACC 默认原车纵向;EV/无雷达等另有限制 |
| 横向映射 | get_lataccel_torque_siglin() / torque_from_lateral_accel() |
部分车型 sigmoid + 线性拟合与逆向插值;其余基础线性映射 |
| 横向输出 | CarController.update() |
相机接法对齐相机计数器;回环确认不足 15 ms 时跳过 |
| 纵向输出 | 同上 | 自控纵向按 25 Hz 生成油门/再生制动与摩擦制动;网关接法发 ADAS keepalive |
| 雷达 | create_radar_can_parser() / RadarInterface.update() |
ASCM 路径解析 Continental LRR 头与目标槽,检查故障、CAN 有效性与目标生命周期 |
| 固件 RX | gm_rx_hook() |
从驾驶员扭矩、后轮速度、巡航按钮或原车 ACC 决定 controls_allowed |
| 固件 TX | gm_tx_hook() |
检查扭矩、摩擦制动、油门/再生制动及 apply 位;原车纵向仅允许取消语义按钮 |
| 模式选择 | gm_init() |
相机自控纵向仅在 ALLOW_DEBUG 中添加白名单;ASCM 模式关闭固件转发 |
需要指出的是,GM 的公共 RX 检查仍有校验和/计数器 TODO,不能称为完整协议完整性验证;ASCM 模式则关闭固件转发,与相机接法的行为不同。原车纵向仅发送延迟后的取消按钮,以降低用户踩刹车时的 ECM 故障风险。
对车载硬件和插件接口的结论
- 车型插件应声明精确平台、DBC、总线拓扑、雷达来源、纵向模式、编译能力和
safetyParam。Ford CAN FD SecOC 不支持、GM 相机自控纵向需调试固件的限制,必须在装车前阻止执行模式。 - Ford 的双车速与 yaw 质量位、GM 的回环计数器/时间间隔需要在硬件接口中保留来源与时间戳;把多条总线合并为无来源字段会损失安全判据。
- 软件控制器只生成候选 CAN 帧。panda 的 RX/TX/转发规则仍是独立硬件边界;未知平台、无法确认固件、错误总线或诊断失败时保持被动。
- 后续目标车型需完成 DBC 解析/打包、丢帧/错校验/双车速失配、回环时序、AEB 干预、断电与失联的 SIL/HIL,再做封闭场地验证。这里没有实车结论。
常见问题
alphaLongitudinalAvailable 为真,是否就能启用纵向控制?
不能。GM 侧源文档明确 alphaLongitudinalAvailable 只是能力提示,不能代替检查 openpilotLongitudinalControl 与固件模式;Ford 侧参数层即使写入纵向安全参数,也不是固件已放行的充分证据,CAN FD 纵向白名单还受编译门限制。
Ford 的转向命令能否走 Lane_Assist_Data1?
不能。ford_tx_hook() 明确不允许 Lane_Assist_Data1 承载执行转向,也不允许设置阻止原车 AEB 的位;固件还会对曲率及测量误差、ACC 油门/制动、按钮权限分别检查,并要求两种横向报文的额外路径信号为 inactive。
GM 的横向映射能不能直接照搬到新硬件?
不能。部分车型使用的 sigmoid 加线性拟合与逆向插值属于车型特定控制模型,源文档明确它不可作为新硬件通用执行器标定;其余车型走基础线性映射,两者不能混用。
为什么不能把多条总线合并成一个 VehicleSpeed?
因为会损失安全判据。Ford 用 ABS 车速与 PCM 第二车速交叉核验、GM 依赖回环计数器/时间间隔,这些来源与时间戳本身就是判据;源文档要求硬件接口保留来源与时间戳,未知平台或无法确认固件时保持被动。
延伸阅读
- Ford 的 panda 安全模式 —— 承接本文
ford_rx_hook()/ford_tx_hook()的质量位、曲率与 AEB 位检查。 - 车辆网关 —— 解释 ASCM 网关接法为何与相机接法的行为不同。
- 从使能到车轮:执行链上的八道门,以及它们各自不保证什么 —— 说明软件候选帧之后为何仍由固件独立放行。
- 同一个「转向灯」在三家车厂是三种实现:车辆状态归一化的坑 —— 解释 Ford/GM 输入解析为何必须按接法拆分。
- Tesla 与 Rivian 不能共用一套插件:转角控制 vs 动态扭矩的两条链路 —— 同为按平台拆分能力与安全门的品牌组。
参考资料
- 项目 02 ——
openpilot-research/FORD_GM_DEEP_DIVE.md(取用了 Ford 曲率控制与双车速检查、GM ASCM/相机两条接法、固件 RX/TX 边界与插件结论)。 - 项目 02 ——
openpilot-research/CAR_PROTOCOL_IMPLEMENTATIONS.md(仅用于确认 Ford/GM 品牌目录与跨品牌流程的总体位置)。
说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有阈值、行号索引与配置均出自源文档,标注为未验证的结论保留其原有边界。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复