前两篇我们聊了莫拉维克悖论——为什么"走路"比"下棋"难得多——以及机器人如何通过传感器融合和SLAM"看懂"周围环境。但看懂只是第一步:知道"我在哪、周围有什么"之后,机器人怎么决定腿往哪儿迈、用多大的力?
这个问题比听起来难得多。这篇我们来看两种截然不同的回答:一种是让机器人"算出来"(传统控制),另一种是让机器人"练出来"(强化学习)。以及,为什么从"练"到"用"之间还有一道巨大的鸿沟。
算出来:给机器人写一本物理教科书
传统控制的第一反应是:把机器人的运动写成数学方程。
想象一个四足机器人。工程师会把它简化成一个"单刚体模型"——忽略腿的细节质量,只考虑躯干的质量、惯性和四条腿末端产生的接触力。然后,根据牛顿第二定律和欧拉方程,写出躯干在三维空间中的加速度与接触力之间的关系:
有了这个模型,就可以用 模型预测控制(MPC) 来规划未来几十毫秒内的动作:在每个控制周期,MPC在计算机上"快进"模拟,找出一组最优的接触力分配和关节力矩,让机器人跟踪期望的速度和姿态。同时,一个 全身控制器(WBC) 将这些力分配到每个关节,保证不违反摩擦锥、关节限位等物理约束。1
这套方法在结构化环境中表现出色——平整地面、固定步态、已知载荷。但问题在于:物理模型永远是不完美的。 摩擦力会随地面材质变化,关节的柔性无法精确建模,电池电压下降会影响电机出力——"写死的方程"无法覆盖所有这些不确定性。当机器人需要在碎石堆上奔跑、在湿滑地面上急停、或被突然推一把时,模型与现实的偏差就会累积,直至摔倒。2
练出来:让机器人"吃一堑长一智"
强化学习的思路完全不同:不写方程,让机器人自己探索。
在仿真环境中,一个四足机器人被赋予一个简单的目标——"向前走,越快越好,别摔倒"——和一个奖励函数:前进速度给正奖励,摔倒给负奖励,消耗过大能量也给负奖励。然后,机器人随机地尝试各种动作,神经网络(策略网络)不断调整参数,让奖励越来越高。
这个过程类似于动物学习走路:婴儿不会先学力学方程,他通过无数次摔倒和爬起,让大脑中的神经网络找到"什么动作能保持平衡"的规律。
2024年,MIT的研究团队用强化学习在仿真中训练了一个四足控制器,让Mini Cheetah机器人达到了 3.9米/秒 的奔跑速度——超过了此前所有基于模型控制(MPC)的记录。而且,这个控制器能应对草地、冰面、碎石等多种地形,被人踢一脚也能迅速恢复平衡。3
关键秘诀是 域随机化(Domain Randomization):在仿真训练中,每次都随机改变地面摩擦力、电机强度、传感器噪声、延迟时间等参数。机器人被训练成"不管环境怎么变都能跑",而不是"在特定参数下跑"。这样,当它被部署到真实世界时,现实中的各种不确定性对它来说只是"另一种随机化参数"。
但"练出来"也有自己的难题
强化学习解决了"模型不精确"的问题,但它带来了三个新问题:
第一,动态平衡本身就是一道难关。 四足机器人奔跑时,有一半时间悬空(腾空相),没有任何腿支撑身体。它必须利用躯干的角动量来维持姿态,在落地的一瞬间用正确的腿角度吸收冲击并产生推力。这要求控制频率至少达到 500Hz(每2毫秒一次)——而目前的VLA大模型(如RT-2)的控制频率只有1–3Hz,差了三个数量级。这就是为什么纯粹靠"大模型"走路的机器人还没有出现:大脑太快,但小脑太慢,控制回路跟不上物理世界的节奏。4
第二,仿真到现实(Sim-to-Real)的鸿沟。 这是最大的实际问题。一个在仿真中达到99%成功率的策略,部署到真实机器人上,成功率可能骤降到70%甚至更低。5
原因很具体:仿真中的"完美"摩擦模型与真实地面不同,仿真中的电机没有延迟和回差,仿真中的传感器没有噪声和漂移,仿真中的碰撞是刚体碰撞但真实物体有变形。这些差异——被统称为"现实鸿沟"——让仿真中学到的动作在真机上走样。5
弥合这道鸿沟,主流方法除了前面说的域随机化,还有 系统辨识(用真实数据校准仿真参数)和 教师-学生蒸馏(在仿真中给教师模型"特权信息"——如地面的精确摩擦力,再让学生模型只依赖真机可用的传感器信号,模仿教师的行为)。6
第三,安全与样本效率。 强化学习需要数百万次试错——在仿真中跑几秒就行,但在真机上,摔倒一次就可能损坏硬件。所以"先在仿真中练、再迁移到真机"几乎是唯一可行的路径,但迁移本身成了新的瓶颈。
小结:算和练,不是二选一
回到这个问题:让机器人动起来,到底该"算出来"还是"练出来"?
2025年的答案是 两者都要。最前沿的架构是混合的:强化学习训练的策略生成高级动作指令(比如"下一脚迈到坐标(0.5, 0.3)处"),而底层的关节控制(比如"用多大扭矩才能让脚准确落到那里")仍然由基于模型的控制方法执行,以保证实时性和安全性。2
运动控制是具身智能最"硬"的部分:它没有捷径,不能靠堆数据就解决,必须理解物理、接触和实时性。下一篇,我们进入更具体的实践层面——四足机器人如何学会"翻越障碍"?