模型与本体之间的机器人控制层,可能是决定系统成败的关键
1. 模型表现崩溃的原因
在具身智能研究中,我们经常观察到一种现象:模型在仿真环境中表现良好,但部署到真实机器人上却频繁出现”崩溃”,动作抖动、轨迹偏离、甚至完全失控。
常见的归因要么怪模型能力不足,要么怪控制器问题。但我认为这里有一个容易被忽视的深层原因:机器人控制器为系统引入了扰动,而模型的鲁棒性不足以克服这些扰动,从而引发系统性崩溃。
VLA模型可以抽象为:通过一个神经网络,基于环境观测生成动作序列,控制机器人与环境交互。当我们用一个神经网络代替传统机器人算法时,问题随之而来。传统控制算法的鲁棒性是可以被设计和量化的,但神经网络的鲁棒性难以被量化,这带来了训练层面的核心挑战。与此同时,模型输出的 action sequence 并不直接作用于环境,它需要经过中间层,即机器人控制器和硬件,才能转化成真实的物理动作。这个中间层引入的扰动,也考验着模型本身的鲁棒性。
2. 重新审视系统架构
从两个构面思考这个问题:
首先是推理与部署角度,传统机器人系统可以分为 :【观测器】- 【规划器】-【控制器】-【执行器】,一共四层,其中执行器是硬件层。如果考虑【环境】,整个系统可以抽象为一个五层:【观测器】- 【规划器】-【控制器】-【执行器】-【环境】。【环境】又会被【观测】从而形成闭环。
现代具身智能机器人系统,我更习惯称为模型驱动机器人,其系统架构常被抽象为三层闭环,【模型】-【本体】-【环境】。其中【模型】的能力包含了【观测器】和【规划器】两部分。
这里有一种简单的认知,即模型的推理结果,直接就作用在硬件上了,仿佛一个强大的模型+一个强大的硬件=AGI。我认为这还不足,这里丢失了关键的一层,我认为实际系统应该是:【模型】-【控制器】-【本体】-【环境】。
这里【控制器】变成了一个更宽泛的概念。把模型推理的结果插值使变得更加平滑是控制器的工作,基于堆栈中未执行的动作预测机械臂的未来状态供模型推理也是控制器的工作,控制器的概念逐渐变得模糊。我倾向于将其定义为,和模型参数无关,但是影响机械臂执行效果的工程系统,这也是我在工作中遇到的最有意思的部分。
其次是数据与训练角度,和传统机器人相比,模型的鲁棒性是从数据中习得,且难以被量化。因此,如何通过模型架构和数据工程提高模型的鲁棒性,以及如何验证和量化模型的抗干扰能力水平以实现闭环迭代变得尤为重要。
控制器、本体、环境都会引入扰动和误差,有些误差还会在执行中被放大。当前机器人操作系统还处于模型输出位置期望,控制器将其转化成力矩,而硬件和环境作用又充满了碰撞等动态的扰动,从终局来看,最终会是模型直接输出机械臂的力矩/电流信息,实现端到端控制。这与自动驾驶的发展路径类似,从模块化到端到端,中间也会经历”分层端到端”的过渡阶段,具身智能也会走过类似的路径。但是实现力矩输出对模型推理实时性提出极高的要求,这又是另外一个重要的话题了。
3. 待探索的问题
最后提出我认为接下来的重要的,或者说我自己会好奇的问题:
- 如何通过模型和控制器联合设计的方式,同时提高模型的鲁棒性以及降低控制层引入干扰的强度,从而使得整个系统的鲁棒性得到提高?
- 如何设计实验,以量化模型的鲁棒性,从而形成迭代闭环?
- 如何通过构造数据以提高模型的鲁棒性?特别是抵抗动态干扰的能力?
评论