摘要:这是一场在各家机器人公司会议室里反复上演的争论:控制团队说"RTOS 才稳",AI 团队说"Linux 生态不能丢",最后的妥协通常是"那就两个都用"。双系统的账单要到量产才会送来。这篇不站队,只做一件事:把两种形态的复杂度账本摊开——双系统把复杂度和解在系统边界,单系统把复杂度塞进内核。看完全文你会拿到一个判断框架,和一句结论:选你更擅长管理的复杂形态。


一、一场没完没了的选型会议

“控制必须用 RTOS,Linux 那种内核做不了硬实时。”

“AI 那套东西——CUDA、ROS 2、各种模型运行时——你让 RTOS 跑?生态根本不存在。”

“那就两个都用:RTOS 管控制,Linux 管 AI,中间加条通信。”

这段对话,我们在几乎每一家做实体的机器人公司都听到过。它听起来无懈可击:各用各的特长,多稳。但真正的问题从来不在选型会上——而是在量产后:两套系统的通信协议要维护、两个团队要协同、两套工具链要升级、两个时间基准要对齐。 这些成本不会出现在选型会的 PPT 里,会在量产爬坡的每个深夜出现。

反过来,另一派的主张是"一套实时 Linux 全干":用 PREEMPT_RT 把 Linux 改造成能跑硬实时的内核,用核心隔离、调度策略把它切出实时域,上层 AI 生态原封不动。听起来更现代,但它的复杂度也不消失——只是从"系统之间"挪进了"内核之内"。

这篇文章的立场是:这不是技术优劣题,是复杂度的位置题。 而复杂度是守恒的。

二、先把两种形态定义清楚

2.1 双系统(RTOS + Linux)

典型的双系统架构是:一颗 SoC 的两个核(或两块芯片),一侧跑 RTOS(或裸机程序、实时核固件),负责运动控制、总线主站、安全逻辑;另一侧跑 Linux,负责感知、AI 推理、任务规划、人机交互。两侧通过共享内存、核间中断或网络通信交换数据。

它的核心特征是:实时域和非实时域由操作系统边界隔开。 RTOS 侧的内核极小、行为可预测;Linux 侧随便折腾,除非把通信链路搞挂。

2.2 单系统(实时 Linux + 内核分区)

单系统的做法是:一个 Linux 内核(打上 PREEMPT_RT 补丁),通过一组内核机制切出实时域和非实时域:

  • CPU 层面:isolcpus / nohz_full / rcu_nocbs 隔离出实时核;
  • 调度层面:实时任务用 SCHED_FIFO / SCHED_DEADLINE,普通任务留在 CFS;
  • 内存层面:实时路径预分配、mlockall、禁用 swap;
  • 中断层面:中断亲和性把非必要中断赶出实时核。

它的核心特征是:实时域和非实时域共享同一个内核,边界由配置定义,而不是由操作系统定义。 边界画得好不好,完全取决于工程水平。

2.3 先破一个错觉:世界上没有"绝对的单系统"

必须提前打破一个幻觉:任何机器人都不可能是"纯单系统"。 你的伺服驱动器里有一颗 MCU 在跑电流环(那是一个 RTOS 或裸机程序),传感器里有自己的固件,安全回路可能是独立的安全继电器或安全 PLC。

所以真正的问题从来不是"用不用 RTOS",而是:实时域的边界画在哪里? 画在芯片之间(双芯片双系统)、画在 SoC 核之间(同 SoC 双系统)、还是画在一个内核的核集合之间(单系统分区)?三种画法,对应三种复杂度分布。

三、复杂度守恒:两种账本

3.1 双系统的账:复杂度在"系统之间"

双系统的确定性是"买来"的——RTOS 的极简内核天然可预测,你几乎不需要为抖动做额外设计。但代价记在边界上:

  • 通信成本:共享内存的环形缓冲、核间中断的时延与丢事件处理、数据一致性(双缓冲、版本号、内存屏障);
  • 时间成本:两个系统的时间基准要同步——RTOS 侧的时间戳和 Linux 侧的时间戳对不上,故障定位就是噩梦;
  • 工程成本:两套工具链、两套调试手段、两种技能栈的工程师;升级要两边协调;
  • 接口冻结:边界协议一旦定型,改动就是双边的联合发布。

一句话:双系统把复杂度换成了"边界工程"。 边界越小越简单,但永远不为零。

3.2 单系统的账:复杂度在"内核之内"

单系统的成本走的是另一条路:不用买两个系统,但要为一个系统做极致的调优——

  • 隔离调优:核隔离、中断亲和、内存纪律、频率锁定,每一项都要验证;
  • 最坏情况验证:PREEMPT_RT 的确定性不是免费的,必须用长测证明 P99.9 和 max 守得住(这部分我们在这个系列的前几篇里反复讲过);
  • 内核能力门槛:出问题时,你要有能力看懂 ftrace、perf、调度器行为——不能只依赖"重启试试";
  • 升级风险:内核升级同时影响 AI 栈和控制栈,回归测试的面更大。

一句话:单系统把复杂度换成了"内核工程"。 能力够,它是最省的形态;能力不够,它会以"偶发故障"的形式慢慢收账。

3.3 十个维度摊开对比

维度双系统(RTOS + Linux)单系统(实时 Linux 分区)
确定性来源买来的:极简内核天然可预测调出来的:隔离与调度优化
确定性量级亚微秒级容易达成微秒级可达,取决于配置水平
故障域天然隔离:Linux 崩了,RTOS 侧可安全停机共享内核:内核级故障两头一起挂
通信开销边界通信:微秒–毫秒,需自行设计进程/IPC:微秒级,路径更短
时间同步两个时间基准要对齐统一时钟,天然一致
开发效率两侧各自为政,接口冻结后互不干扰一套生态,改动影响面大
团队要求两套技能栈,边界协议设计能力一套技能栈,内核调优能力
认证与安全实时侧小核易单独认证认证面覆盖整个内核与系统
BOM / 体积 / 功耗高(双芯片)或中(异构 SoC)低(单芯片单系统)
迭代节奏接口冻结后两侧可解耦迭代统一升级,风险集中

3.4 三个经常被忽略的维度

第一,迭代节奏的错位。 AI 侧是周级迭代——模型、数据、策略天天变;控制侧是年级迭代——控制律、总线配置一旦定型很少动。双系统在"接口冻结"之后,恰好让这两条节奏互不干扰;而单系统里,AI 侧的每次大版本升级都要重新做控制侧的回归测试。双系统真正的隐藏优势不是实时性,是迭代解耦。

第二,团队技能决定"复杂度放哪更便宜"。 复杂度守恒,但消化复杂度的人力不守恒。一个从互联网/AI 背景长起来的团队,对 Linux 内核调优是陌生的,对他们来说"内核工程"比"边界工程"贵;一个从工控背景长起来的团队则相反。同一道题,不同团队的最优解不同,这不是圆滑,是事实。

第三,供应链与自主可控。 部分商业 RTOS 是授权制、闭源、绑定国外厂商;实时 Linux 是开源的、可自主维护的。在有国产化和长期可控要求的场景里,这个维度经常一票否决——把它放到选型清单的第一页,而不是最后一页。

四、量产视角:三个决策问题

抛开理论,落地时按顺序回答三个问题,答案基本会自己浮出来:

问题一:你的最坏确定性需求是多少? 写成一个数:控制环最坏响应时间要小于多少微秒,P99.9 是多少。如果需求在"几十微秒、微秒级抖动",实时 Linux 完全够用;如果需求是"亚微秒、并且要形式化验证",RTOS 或专用实时核才合理。"越稳越好"不是需求,"小于 X 微秒"才是。

问题二:你的团队愿意并能够维护几套系统? 数一数团队里能写 RTOS 侧代码、又能设计边界协议的人有几个;再数一数能读懂内核 trace、调得了隔离参数的人有几个。哪边人多,哪边的复杂形态就更便宜。

问题三:你的安全与认证要求,需要多大的故障域隔离? 需要"Linux 挂了机器人必须安全停下"的强隔离,双系统(或至少独立安全回路)是硬要求;安全要求普通的场景,单系统的看门狗加冗余也能覆盖大部分情况。

常见场景速判:

  • 工业协作机器人、医疗设备:双系统或独立安全回路,别省;
  • 人形机器人、服务机器人:多数在向单系统(实时 Linux 分区)收敛——AI 权重太大,生态和成本都压向 Linux 一侧;
  • 消费级产品:成本优先,单系统起步,把实时域收窄到"越小越好"。

演进路径的现实观察: 很多团队的路线是"双芯片双系统起步(研发期求稳)→ 同 SoC 双系统(量产期降本)→ 实时 Linux 分区(成熟期再省一层)"。方向反过来走的很少——因为从单系统退回双系统,通常意味着承认内核工程能力不足,而这个结论一般不会因为换架构而改变。

五、结论

把这篇压成一句话:

双系统和单系统没有优劣,只有复杂度的位置不同——选那个你的团队更擅长管理的复杂形态。

双系统把复杂度放在边界上,用钱和纪律换确定性;单系统把复杂度放进内核里,用能力和调优换成本和生态。复杂度守恒,但消化它的能力不守恒——这就是为什么同一道题,不同团队应该得到不同的答案。

六、检查清单:选型时按顺序回答这八条

  1. 量化最坏确定性需求。 写成"P99.9 小于 X 微秒",写不出这个数,后面的讨论都是空转。
  2. 审计团队技能栈。 数清能维护 RTOS 侧、能设计边界协议、能调 Linux 实时参数的三类人各有几个。
  3. 画出实时域边界。 从伺服驱动器往上找:哪一层开始必须实时?边界定在哪,架构就定在哪。
  4. 列故障域清单。 Linux 挂、RTOS 挂、总线断、电源掉,每种故障的系统行为是什么?安全停机由谁保证?
  5. 算总量成本。 不要只算 BOM:两套工具链、两套人力、边界维护、认证费用都要进模型。
  6. 评估迭代节奏。 AI 侧和运动控制侧的发布节奏差多少?接口能不能冻结到"月级不变"?
  7. 核对供应链与国产化要求。 有没有授权、闭源、断供风险?放在第一页评估。
  8. 预演演进路径。 今天的架构是终点还是中转站?下一步往哪走,现在就写下来。

七、留一个问题给你

你们团队现在选的是哪条路?为什么?

  • 站双系统的:说说你们边界协议是怎么设计的;
  • 站单系统的:说说内核隔离踩过哪些坑。

评论区见。下一篇,我们聊一个和它直接相关的问题:《ROS 2 能不能用在人形机器人量产上?》——把 DDS、Executor、调度器的链路拆开,给量产一个明确的答案。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐