

如果连误差来源都分不清楚,又怎么可能系统性地消除它。
——Sim-to-Real的最高级形式
Sim-to-Real 究竟是怎么造成的?
有把原因归结为仿真精度不够的,有的认为是策略鲁棒性不足,也有干脆把随机化范围拉满,指望策略自己“硬扛”所有偏差的
——都有道理.
但多数做法有一个共性缺陷:把几类性质完全不同的误差混为一谈。
本文讨论的正是这条从仿真策略到稳定实机控制的部署链路:先把误差按照来源进行分解,再分别交由前馈补偿、在线适应与安全兜底逐层处理。
沿着这条工程流水线,我们依次回答几个关键问题:
“
本文来源:深蓝学院联合英国纽卡斯尔大学正教授、智身科技CTO-潘为打造的《四足机器人:从动力学建模到强化学习》课程。


先把误差分清楚
从工程角度看,仿真与实机之间的差异(Sim-to-Real)至少包含三类。
-
第一类是参数误差——模型结构是对的,但参数不准。
例如,机器人连杆的质量、转动惯量、关节阻尼和摩擦系数,在仿真模型中通常是名义值,而实机的具体数值会因制造公差、装配状态和运行时间而变化。
这类差异的共同特点是:只要具备合适的测量数据和模型,就有机会通过系统辨识得到更可信的估计。
-
第二类是难建模动态——仿真模型本身结构就不够完整
执行器的输出特性、通信与响应延迟、传动间隙、接触过程中的非线性以及地面材料的局部差异,都可能难以用固定参数完整描述。
这类问题不一定适合追求逐项精确建模,更常见的做法是在训练中覆盖可能的变化范围,或在运行中利用历史信息调整控制行为。
-
第三类是观测噪声——传感器输出和真值之间的偏差。
IMU 漂移、编码器量化、通信延迟等会使策略获得的输入偏离真实状态。处理这类问题时,需要同时考虑训练阶段的噪声注入与实机侧的状态估计、滤波和时间同步。

▲图1 | 从仿真策略到实机控制的部署链路,首先将误差分解为参数误差、难建模动态与观测噪声,再分别交由前馈补偿、在线适应与状态估计等独立路径处理。©【深蓝具身智能】编译

这一区分有一个直接作用:它避免将所有问题都压给策略网络。
不同误差的处理成本、可解释性和可靠性并不相同;如果混在一起处理,训练会变得困难,部署时也更难定位问题。

▲图2 | 红色四足机器人在林地、碎石、台阶、积雪与地下空间等场地穿行。不同场景同时改变了视觉外观、地面几何与足端接触条件,构成实机部署中常见的组合扰动。©【深蓝具身智能】编译
真实环境中的差异通常会叠加出现:感知质量可能受植被、光照或遮挡影响,地形几何与接触条件同时发生变化,机器人自身也会承受持续振动和状态估计误差。
这类多场景测试的意义在于检验系统面对组合扰动时的整体表现,验证鲁棒训练或在线适应的综合覆盖范围。
三类误差性质不同,处理工具必须分流,接下来逐一解决。

针对参数误差:先消除可辨识偏差,再用随机化覆盖
随机化不能替代基础校准
一种常见但代价很高的做法,是在仿真中设置很大的随机化范围,希望强化学习策略自己适应全部物理偏差。
随机化确实是重要工具,但通常不能完全替代基础校准。
-
区分“可辨识偏差”和“真实不确定性”
例如,若关节摩擦是稳定存在且可辨识的,那么将它纳入模型或补偿环节,通常比要求策略反复从运动误差中推断摩擦更直接。
策略网络更适合处理未见地形、接触不确定性等难以预先精确描述的问题;对于能够由系统模型解释的稳定偏差,则宜优先考虑显式处理。

▲图3 | 从真实机器人轨迹中学习执行器校正项,随后在包含该校正项的仿真器中预训练并微调整体控制,最后将控制器部署到实机。©【深蓝具身智能】编译
典型解法:数据驱动的执行器校正
可处理的偏差并不只限于传统的手工参数标定。从真实数据中学习执行器修正项,再将校正后的仿真器用于策略训练,也是一种补充路径。
这种方法的重点不是宣称已经辨识出完整、唯一的物理模型,而是在真实数据与仿真模型之间加入一个可学习的执行器修正环节。对于传动和执行器机制较复杂、又缺少部分直接测量量的系统,这提供了介于完整物理建模与纯端到端鲁棒训练之间的一种工程选择。
协同设计原则:显式补偿为主,随机化为辅
敏捷运动的实机迁移依赖执行器模型、延迟处理和参数随机化的协同设计,而不是单独依赖某一种方法。
因此,实机部署通常应先回答一个问题:
这项偏差能否被测量、估计和补偿?
如果答案是肯定的,显式方法或数据驱动校正往往具有更清晰的维护边界和诊断路径。
参数随机化仍然不可缺少。
它的作用是扩展训练中经历过的参数和环境分布,为难以精确写入模型的残差提供容差;但它不应被用作回避执行器校准、时间同步或传感器检查的理由。
更稳妥的做法是先缩小可辨识偏差,再使用随机化和鲁棒训练覆盖其余不确定性。

摩擦前馈:补偿可辨识的关节力矩偏差
为什么摩擦必须前馈,而非依赖反馈或策略硬扛
关节摩擦是“参数误差”中最典型、也最值得优先处理的一类。
-
若仿真中设定的摩擦低于实机,模型就会高估给定关节力矩能够产生的运动效果;
-
而在真实机器人上,部分力矩会消耗在克服黏滞阻尼和库仑摩擦上。
这一部分如果没有处理,策略在仿真中形成的动作节奏就可能在实机上出现响应变慢、输出不足或跟踪误差增大的情况。
为什么用前馈而不是纯靠反馈或策略适应?
因为摩擦是一个确定性的力矩损失——只要知道当前速度方向和大小,就可以直接计算出需要补偿多少。
-
前馈没有延迟,直接抵消;
-
反馈控制只能等误差出现之后再纠正,存在控制延迟。
而让策略“硬扛”,则浪费了宝贵的网络容量。
前馈控制链路
在这种情况下,摩擦前馈是一种直接的补偿方式。
系统先通过离线辨识或在线估计获得阻尼、摩擦等参数;
在每个控制周期内,再根据关节速度计算补偿力矩,并将其叠加到策略输出经底层控制器形成的关节力矩指令上。
这样做并不取代反馈控制,而是减少反馈控制需要处理的可预测误差。

▲图4 | 摩擦前馈控制链路:观测信号分为策略与参数辨识两条支路,辨识产生的前馈补偿项在安全限幅之前与底层反馈力矩叠加,从而抵消部分可预测误差。©【深蓝具身智能】编译
实际工程中,前馈项仍应经过力矩限幅等安全约束,并与既有底层控制器共同工作,遵循“前馈先行、反馈兜底”的职责区分。
实测数据表明,加入摩擦前馈后关节跟踪误差可下降30%到50%。
它适合补偿具有稳定结构的偏差,但不能解决所有环境变化,例如:
地面接触条件突变或传动链复杂非线性,仍需要其他机制参与——比如针对时变与难建模动态的在线适应。

IROS2025冠军亲授 · 8周掌握四足全栈技术 | MATRiX可微仿真 · RL运动控制 · Sim2Real迁移

在线适应:分清“更新参数”与“调整策略”
离线辨识并不能一劳永逸。
机器人运行过程中,电池电压衰减(满电与低电状态下电机最大力矩输出可差10%-20%)、温度、负载和机械磨损都会改变系统表现。
因此,实机部署往往需要在线适应。
不过,“在线适应”并不是一个单一技术,它至少包括两条不同路径:
-
第一条路径是显式参数更新(RLS)
当目标参数具有清晰的回归形式时,可以使用递推最小二乘法(RLS)等方法,在运行中基于最新数据更新参数估计。更新后的摩擦或阻尼参数可以直接作用于前馈补偿器。
该方法的优点是变量含义清楚、改动范围有限:在满足局部线性建模条件和计算资源约束的前提下,通常不需要重新训练主策略。
需要注意的是,显式递推估计只适用于可由相应模型表示的参数,不能被表述为对所有动态变化的通用解。
-
第二条路径是隐式策略适应
当变化来源复杂、难以写成少量显式参数时,策略可以利用近期的观测—动作历史推断当前环境的隐藏特征,再据此调整行为。
快速运动适应(RMA)是这条路径的代表方案之一。
在仿真训练中,基础策略接收与环境有关的隐变量,适应模块则根据近期本体观测—动作历史预测这一隐变量。
部署时,策略不需要读取仿真中的特权环境信息,也不需要在实机上重新执行强化学习训练;其策略参数保持固定,由适应模块持续更新输入给基础策略的环境表征。

▲图6 | RMA:四足机器人依次经过默认地面、低摩擦塑料区域与恢复区域。中间的适应阶段同时呈现足端接触节律、膝关节力矩与估计隐变量的变化,对应策略依据近期交互历史调整动作的过程。©【深蓝具身智能】编译
在低摩擦实验中,机器人进入覆有油性塑料片的区域后,原有的接触节律和力矩输出不再完全适合当前地面条件。
上图同时给出了实机过程、足端接触模式、膝关节力矩和适应模块估计的隐变量变化。
它反映的并不是策略参数的实时再训练,而是近期状态—动作历史触发的快速推断与动作调整。
对部署工程而言,这一区别很重要:适应速度、观测窗口和输出边界都可以作为单独的设计与测试对象。

▲图7 | RMA:机器人在运动中被放置额外负载。连续画面记录了负载加入后的姿态变化;下方的足端接触节律、膝关节力矩与估计隐变量呈现了机器人面对动力学突变时的调整过程。©【深蓝具身智能】编译
这张图补充了另一类变化来源:
机器人在运动中承受额外负载时,变化不来自地形,而是来自自身动力学。
负载加入后,机身姿态和关节负担会出现暂态改变;适应模块需要根据新的历史信号调整控制所需的环境表征。
上面这两组实验都展示了通过交互历史改变控制行为,而不是显式重估一个唯一物理参数。
这两条路径不是替代关系:可辨识的稳定参数适合显式更新,而难以参数化的动态与环境差异更适合交由策略适应。

▲图5 | 面向运行时变化的两条适应路径:左侧通过递推估计更新可辨识参数以调整前馈补偿;右侧则由适应模块重构隐变量,引导基础策略直接调整控制动作。©【深蓝具身智能】编译
因而,在线适应的对象不应被狭义理解为“识别地面”,它也可以处理负载、执行器状态和其他随时间变化、但难以逐项显式建模的因素。

Sim-to-Real的最高级形式
如果把辨识、训练、部署拆成三段独立的工序,各做各的,互补反馈,那么离线辨识的参数会逐渐失效,策略面对漂移后的系统也缺乏有效补救手段,部署效果会随时间快速衰减。
真正的Sim-to-Real工程要求它们形成一个随时间滚动的增强闭环:
-
离线辨识让仿真器参数逼近实机,消除了固定偏差;
-
策略训练在逼近的仿真器上赋予了系统应对残差的鲁棒性;
-
然而实机参数会随温度、电压、磨损随时间漂移,所以在线辨识(RLS)在控制循环中持续跟踪这种变化;
-
得到的最新参数又立即作用于前馈补偿器,让有效性得以持续,而不是依赖几个月前标定的旧值。
辨识让仿真准确,训练让策略有效,在线辨识让准确性持续,前馈让有效性持续。
这四件事是一条线上的不同环节,不是彼此独立的补丁。这个闭环是Sim-to-Real工程的最高级形式。
在这个闭环逻辑下,部署前的那个核心问题变得更加具体:
这项偏差能否被测量、估计和补偿?
-
如果能 → 纳入前馈或RLS显式更新(路径清晰,可诊断,可维护)
-
如果不能或极难 → 留给域随机化或RMA隐式适应(让策略和适应模块去覆盖)
顺序决定效果,也决定工程的维护边界:能消除的Gap,先消除;不能消除的,才让策略去鲁棒;能前馈的,不留给反馈。

安全机制必须独立于策略存在
仿真中的失败通常只意味着一个训练回合结束;
实机中的失败可能意味着关节过载、机身碰撞、硬件损坏,或者对周围人员和设备带来风险。
因此,不能把安全完全建立在“策略应该不会犯错”的前提上。
较完整的实机系统通常将安全约束划分为多个相互独立的层次。虽然算法层的安全约束可以辅助风险控制,但不能替代独立的物理与系统级防线。
控制输出首先受限于软件层的力矩限幅、速度限制和关节软限位;
同时,状态监测层、驱动器保护和硬件保护共同构成并行的拦截网络,分别监控机身姿态、通信、电机温度、跌倒信号,以及底层的电流、力矩与机械限位。
一旦触发异常、过载或紧急情况,系统将回退至阻尼、停机或人工接管的安全模式。

▲图8 | 实机部署的多层安全防线:控制输出先受软件约束,而状态监测、驱动器保护和硬件保护则构成并行的拦截层©【深蓝具身智能】编译
当异常条件触发时,系统应进入预先定义的安全模式,例如阻尼、停机或人工接管,而不是继续执行原始策略。
安全层与策略层的职责应当分开。
策略负责生成面向任务的动作建议;安全系统负责判断这些建议是否满足设备与环境的边界条件。将两者混为一谈,会使故障诊断和安全验证更加困难。

辨识→训练→部署→再校准
Sim2Real 并不是将一段在仿真中训练好的代码复制到机器人上,而是一次围绕误差、控制与安全的系统集成。
更可靠的部署路径可以概括为三步:
先识别误差来源,再为可建模部分提供显式补偿,为难建模变化准备在线适应,最后用独立的安全体系约束所有输出。
对于四足机器人而言,真正决定实机表现的往往不是某个单独的策略结构,而是这些环节能否形成闭环:
模型是否足够可信,补偿是否及时,适应是否有边界,安全机制是否独立且可验证。
只有这些问题得到系统处理,仿真中的运动能力才可能稳定地延续到真实机器人的环境中。
本文内容来源:深蓝学院联合英国纽卡斯尔大学正教授、智身科技CTO-潘为,打造的《四足机器人:从动力学建模到强化学习》课程。
咨询课程顾问

通用的四足强化学习技能:
-
训练时不挑硬件:CPU能跑,GPU能跑,Windows能跑,macOS能跑,Linux当然也能跑。
-
部署时不挑生态:训出来的策略,宇树能用,小米能用,智元能用,国外的也能用,不绑定任何一家硬件平台。
-
仿真到真机不翻车:碎石、斜坡、台阶,仿真里什么样,真机上就什么样。
真正理解四足机器人底层物理本质,再用RL控制它!
编辑|阿豹
审编|具身君
扫码添加阿蓝,选择想要加入的交流群即可
(按照提交顺序邀请,请尽早选择)
👇
