为什么用 CBF 而不是纯 MPC 做实时安全?
这个问题有一个前提需要先澄清:EICPS 在 Spine 层同时使用了 MPC 和 CBF,它们分工不同。MPC 通过滚动时域控制(STL-RHC)在线优化 STL 鲁棒度;CBF 作为最后一道安全屏障,在 1kHz 周期内实时保证系统状态不逸出安全集。真正的问题是:为什么最后一道安全屏障必须是 CBF,而不能是 MPC?
根本原因:计算复杂度
MPC 需要在每个控制周期内求解一个预测时域内的优化问题,计算量随预测步数线性增长。在 1Hz 的 Brain 层,这是可以接受的;在 1kHz 的 Spine 层,每个控制周期只有 1ms,标准 MPC 的计算量超出了这个预算。
CBF 的 QP 只有两个决策变量(当前控制输入的修正量),求解时间在微秒级,是目前已知的唯一能在 1kHz 下给出硬实时安全保证的方法。
CBF 的关键数学性质:前向不变性
定义安全集 ,CBF 控制律通过强制:
保证只要初始状态 ,系统在全时域内状态始终满足 。
这个保证是确定性的,不依赖预测视域的长短,不依赖模型的准确性(在一定扰动范围内),也不依赖 Brain 层 AI 的正确性。MPC 的安全保证是”在预测视域内渐近满足”,当视域有限时,无法给出全局时域的保证。
两者结合的设计逻辑
- MPC(STL-RHC):有预见性地优化轨迹,让系统在整个任务周期内保持 STL 规约满足。它看得远,但算得慢。
- CBF:无论 MPC 的优化结果如何,物理安全边界不能被突破。它反应快,但无预见性。
这是规划层安全和执行层安全的分工,不是替代关系。如果 MPC 因为模型不准确产生了一个不安全的参考轨迹,CBF 在执行时会修正控制输入,保证实际轨迹不越界——这就是”脊髓反射弧”的工程实现。