1. 项目背景:一只鸭子凭什么刷爆机器人圈
Microduck 最近在机器人学习圈子里火得有点离谱。GitHub 上 star 涨得飞快,Twitter 上做 RL、机器人操作、仿真迁移的人都在转,连一些做嵌入式硬件的老哥都跑来围观。一只 399 美元的机器鸭,为什么能引起这么大的动静?
先说结论:Microduck 不是一个硬件玩具,而是一套完整的 Sim2Real 学习系统。它的核心意义在于,用极低成本的硬件平台,把从仿真训练到真实部署的全链路打通了,而且在开放程度和可复现性上做得非常彻底。过去这类工作通常出现在顶级机器人实验室里,硬件成本动辄几万美元,代码和训练细节还经常藏着掖着。Microduck 直接把价格打到 399 美元,代码开源,训练管道完整开放,这就等于把 Sim2Real 研究的门槛砸碎了一大截。
我看完它的技术报告和代码仓库之后,最大的感受是:这东西看起来是一个鸭子外形的桌面机器人,但骨子里是一套设计得非常讲究的 sim-to-real 工程化方案。它解决的不是"让鸭子动起来"这种简单问题,而是"如何让一个在仿真环境里学会的技能,迁移到真实物理世界依然表现稳定"这个机器人学习领域的核心难题。
适合谁来参考?我觉得有三类人收获最大:
- 做机器人强化学习的同学,尤其是被 sim-to-real gap 折磨过的人
- 想入门操作类 RL 任务、但被硬件成本劝退的研究者和工程师
- 做低成本机器人产品的团队,想了解如何用仿真训练替代大量人工示教
就算你是做软件出身、对机器人不太熟,这篇文章也可以帮你理解为什么仿真训练这么难落地、以及低成本硬件如何改变这个局面。接下来我按自己的理解,把 Microduck 这套系统一层一层拆开讲。
2. Sim2Real 到底难在哪:为什么仿真里学会的东西一到现实就翻车
在聊 Microduck 的具体设计之前,有必要先搞清楚 Sim2Real 的本质困难。因为你不理解这个,就看不懂 Microduck 里那些设计决策到底在解决什么问题。
**Sim2Real(从仿真到现实)**是指:让机器人在仿真环境里通过强化学习等算法学会某个技能,然后把训练好的策略部署到真实机器人上执行。听起来很美好,但实际情况是——仿真里跑得好好的策略,一到真机上就各种抽风。
问题主要出在仿真环境和真实世界之间存在偏差,这就是大家常说的sim-to-real gap。具体拆开看,偏差来源有三类:
第一类是物理参数偏差。仿真器里设置的摩擦系数、质量、惯性矩、电机力矩响应,跟真实硬件不可能完全一致。比如你仿真里设的鸭子腿部关节摩擦是 0.3,真实电机的减速箱里可能因为温度不同、润滑油状态不同,实际摩擦在 0.2 到 0.5 之间波动。策略在仿真里习惯了 0.3 的摩擦,到真机上碰到 0.5 的摩擦,动作就会迟钝甚至卡死。
第二类是观测偏差。仿真里传感器读数是理想化的,真实传感器的噪声、延迟、量化误差都是仿真里很难精确建模的。比如 Microduck 使用关节编码器反馈角度,真实编码器有分辨率限制和采样噪声,仿真里如果不把这些加进去,策略会对角度值过度敏感。
第三类是动态特性偏差。电机和驱动器的动态响应在仿真里往往被简化成理想力矩源,但真实的直流电机有电流环响应延迟、PWM 死区、电压饱和等问题。高频动作在仿真里没问题,真机上可能直接造成电机过流保护或者发热严重。
这就是为什么很多人在仿真里训练了上千万步、拿到了 99% 成功率,一上真机就掉到 20%。不是训练代码写错了,而是策略过拟合到了仿真环境的具体参数上。
解决 Sim2Real gap 的主流手段目前有三大流派:
域随机化(Domain Randomization):在训练时不断随机化仿真环境的物理参数、观测噪声、延迟等,让策略见识各种可能的情况,从而学会对参数变化鲁棒的策略。这个思路通俗讲就是"练的时候别太舒服,什么天气都让它在里面跑一遍"。
系统辨识(System Identification):精确测量真实硬件的物理参数,尽量让仿真模型贴近真实。这个方法在动力学比较简单的系统上效果不错,但复杂系统很难测准所有参数。
仿真到现实的二次适配:比如在仿真里训练后用真实数据做微调,或者用元学习让策略天生就具备快速适应新环境的能力。
Microduck 选择的路线非常明确:以域随机化为主,结合系统辨识做基础物理参数的校准。它在低成本硬件上的成功,恰恰说明这套组合拳如果打得好,完全可以让一个 399 美元的机器人在真实桌面上走出稳定步态。
这也解释了为什么 Microduck 被称为"Sim2Real 教科书"——它几乎把这一类方法的每个环节都做成了标准示例:仿真搭建怎么做、参数怎么随机化、奖励怎么设计、策略怎么部署,都有清晰可查的代码和文档。
3. 为什么是 399 美元的机器鸭:硬件选型的门道
聊完痛点,来看硬件。399 美元这个价格在机器人学习领域确实属于低得离谱的级别。一台常见的四足机器人(比如 Unitree Go1)要一两万人民币,一只机械臂更是几万起步。Microduck 选择了机器鸭这种双足步行形态,明显是有意为之。
机器鸭本质上是一个双足机器人,外形参考鸭子,走路的姿态有那种摇摇晃晃的感觉。它和四足机器人相比,稳定性挑战更大——四足天生有更大的支撑多边形,不容易倒;双足则在静态和动态稳定性上都有天然难度。而 Microduck 还要做出鸭子那种左右摇摆的步态,这算是主动给自己上难度了。
从 Sim2Real 学习的角度来看,双足步态恰恰是比较理想的训练任务,因为它对动力学精度和策略鲁棒性都很敏感。如果训练出的策略能在双足鸭子上稳定行走,那说明这个 sim-to-real 管道是可验证的,不是只有在理想化任务上才能伪装成功。
硬件配置方面,我看了拆解信息,大概是这样:
| 部件 | 规格推测 | 作用 |
|---|---|---|
| 主控 | 低成本的 ARM 开发板(类似树莓派级别) | 运行推理和控制系统 |
| 电机 | 多路小型直流减速电机(成本极低) | 驱动鸭子的腿部关节 |
| 伺服驱动 | 单路 PWM 驱动(无高级力矩控制) | 输出电机控制信号 |
| 传感器 | 关节编码器反馈角度 | 提供状态观测 |
| 电源 | 小型锂电池组 | 供电,支持离线自主运行 |
| 机身 | 3D 打印外壳和结构件 | 低成本制造和替换 |
从这套硬件方案能看出几个关键设计思路:
第一个思路是计算单元和电机控制分离。策略推理在高性能的 ARM 开发板上完成,电机控制由独立的驱动板实现。这样策略代码可以相对复杂一些,不必压缩到嵌入在主控里的单片机级别。代价是控制频率不可能太高,但双足步态这种任务,控制频率在几百赫兹以下已经够用。
第二个思路是电机和关节直接映射。Microduck 大概率没有复杂的连杆机构和差速器,电机轴直接带动关节,这让动力学建模变得非常简单。仿真里的模型可以直接用刚体加关节力矩实现,不需要考虑齿轮传动间隙等非线性因素。
第三个思路是模块化和可替换性。3D 打印机身意味着零件坏了可以重新打印,这对实验调参过程中频繁摔坏机器人来说非常友好。我在实验室里调试机械臂的时候,一个零件撞坏了往往要等重新加工,非常磨人。Microduck 的 3D 打印方案直接解决了这个问题。
这里有一个容易被忽视的点:硬件选型决定了域随机化的参数空间设计。因为电机没有高级力矩控制,Microduck 只能走位置/速度控制模式,这意味着仿真里需要重点随机化的是关节角度跟踪精度、电机响应延迟、输出力矩上限等参数,而不是力矩控制相关的参数。硬件成本低的同时也限制了一些控制方式的尝试,但作为 Sim2Real 学习项目,这个 trade-off 完全值得。
有一点必须提醒:399 美元是物料成本还是套件价,网上说法有出入,但不管哪种口径,跟实验室研究平台相比都便宜了一个数量级。这个价格让一个本科生、甚至有兴趣的高中生,都有可能买一台来做实验——这在两年前是很难想象的场景。
4. 训练管道拆解:Microduck 的 Sim2Real 全链路
Microduck 最有价值的资产其实不是那个小鸭子硬件本身,而是完整的训练代码和仿真环境。我花了不少时间把它的管道从头到尾梳理了一遍,大致流程是这样的:
4.1 仿真环境搭建:用 Isaac Gym 做大规模并行训练
Microduck 的仿真训练基于 NVIDIA 的 Isaac Gym。Isaac Gym 的特点是支持 GPU 大规模并行,一次性可以跑数千个并行环境,训练效率比传统 CPU 仿真高好几个数量级。为什么这个选择很关键?因为域随机化需要在大量不同的环境下训练同一个策略,如果没有 GPU 并行,训练时间会被拉长到完全不可接受。
举个例子:假设你只开 1 个仿真环境,跑 1000 万步需要多少时间?按每秒 1000 步算,要将近 3 个小时。但如果你并行开 4096 个环境,同样 1000 万步只需要 20 多分钟,而且是所有环境共享一次策略更新。这就是 Isaac Gym 这类工具的核心价值。
在仿真建模上,Microduck 使用了刚体动力学模型。从代码仓库看,模型是通过 URDF 文件定义的,包含鸭子的机身、腿部结构、关节约束和惯性参数。URDF 是 ROS 生态的标准机器人描述格式,Isaac Gym 直接支持加载,所以这个环节相对标准。
但这里有一个很活的细节:仿真的刚体模型是基于 3D 打印原型的几何和材质推测出来的。打印件的质量和惯量跟 CAD 模型有偏差,所以作者做了系统辨识的校准。常用的做法是:单独测每个部件的质量,估出质心位置,然后把惯量参数填入仿真模型。不用特别精确,但关键参数不能差太多,否则域随机化的范围会覆盖不过来。
4.2 动作空间和观测空间设计
Microduck 的动作空间设计非常有讲究。我看仓库里的配置,它选择的是关节目标位置(target position)外加一个增益控制作为动作空间,而不是直接输出关节力矩。这意味着策略学的是"期望关节走到什么角度",而不是"期望关节输出多少力"。
这样做的好处是:位置控制天然具备更强的鲁棒性。位置控制对电机参数的不确定性没那么敏感,因为 PID 闭环会主动修正误差。如果策略直接输出力矩,那摩擦力、电机力矩常数、减速比这些参数的精确度就极其关键,稍微偏差策略就会失效。
这里的代价是:位置控制上限不如力矩控制高。如果未来想学非常精细的操作任务(比如抓取鸡蛋),位置控制可能不够灵活。但对于鸭子走路这种任务,位置控制的稳定性远大于灵活性上的牺牲。
观测空间方面,Microduck 的策略输入包含:
- 鸭子身体的俯仰角(pitch)和横滚角(roll),由 IMU 提供
- 关节角度和角速度,由编码器反馈计算
- 上一时刻的动作值(用于平滑控制)
- 可能还包含一些任务相关的参考信号,比如目标速度或目标转向角度
这里要特别提一下动作平滑的处理。很多新手在 RL 训练时忽略了动作平滑,结果训练出的策略输出剧烈抖动。对于真机来说,这种抖动会直接转化为电机的激烈来回摆动,轻则磨损电机,重则直接过热保护甚至烧毁驱动器。Microduck 在训练时加入了动作平滑项,限制相邻时间步的动作变化幅度。这个技术在 sim-to-real 实验里几乎是标配,但很多入门教程不说,导致很多人复现时只学了"训策略"而没学"训稳定策略"。
4.3 域随机化参数的设置经验
域随机化是 Microduck 能够成功迁移的核心魔法,也是很多人最容易忽视或者设置不当的地方。
从代码仓库看到的随机化项主要包括:
- 物理参数随机化:摩擦系数在一个区间内均匀采样,质量可以在标称值的 50%-150% 之间变,质心位置有少量偏移,电机增益也有波动区间。
- 观测噪声和延迟:给 IMU 读数加高斯噪声,给关节编码器加量化误差,控制指令的延迟也做了随机化。
- 初始状态随机化:每轮 episode 开始的时候,鸭子的初始位姿会有随机扰动,这样策略不能在"完美站立"的起点上过拟合,必须学会在不太理想的初始状态下也保持平衡。
- 控制频率随机化:模拟真实控制频率波动,让策略不要依赖精确的控制周期。
- 仿真器参数随机化:连仿真器的时间步长、求解器迭代次数都做了随机,这属于比较细节但也比较有效的做法。
有一点我印象很深:域随机化的范围不是越大越好。之前我自己做实验的时候,觉得随机化范围拉满肯定更鲁棒,结果训练出来的策略在仿真中表现反而更差,因为任务难度被随机化范围撑得太大了,策略学不到一个有效的平衡点。Microduck 的做法更理性:先通过系统辨识把仿真模型的标称参数校准到和真实硬件接近,然后再在这个基础上做适度范围的随机化。随机化覆盖的是不确定性的边界,而不是代替精确建模。
用一个比喻来说:域随机化就像你练投篮的时候故意在刮风天、雨天、逆光条件下都练,这样比赛的时候不管什么天气都能投进。但如果训练条件是台风天,你连球都拿不稳,还练什么投篮。先建模建准,再随机化扩大鲁棒性,这才是正确的顺序。
4.4 奖励函数设计的核心思想
Microduck 的奖励函数设计也是教科书级别的。它的整体设计遵循了"稀疏任务奖励 + 密集状态引导"的混合结构。
主要奖励项包括:
- 前进速度奖励:鸭子的实际前进速度接近目标速度时获得奖励,这是任务的核心目标。这里的微妙之处在于,如果只看前进速度,策略可能会发展出奇怪的"滑动"步态而不是类的行走步态。所以通常还需要引入方向约束,让速度投影到期望的前进方向上,而不是只看合速度大小。
- 姿态稳定奖励:身体保持直立、俯仰横滚角接近零时给奖励,否则给惩罚。这个项保证了走路过程中不会东倒西歪。
- 关节限制惩罚:关节角度超出机械极限时惩罚。3D 打印的关节如果被打到极限,轻则卡死,重则直接断裂。这个惩罚项在真机长时间运行中特别重要。
- 能量消耗惩罚:动作幅度和力矩输出过大时惩罚。低功耗设计让电池能撑更久,同时也减少了电机发热。
- 动作平滑惩罚:相邻时间步动作差过大时惩罚,防止抖动。
- 存活奖励:每一步活着都有一点微小的正奖励,鼓励策略尽量避免摔倒。
这些奖励项的权重设置,在具体的训练配置里都有默认值。但我想强调一个实操经验:奖励权重的调节不要一上来就追求面面俱到,先把核心任务奖励调出来,让策略学会"往前走",然后逐步增加约束项,否则策略会被各种惩罚项压制得动不了。Microduck 的仓库配置里应该有相对合理的初始值,直接跑通应该问题不大,但你要做自己的任务,一定要学会这套"先任务、后约束"的调参顺序。
4.5 训练策略算法:PPO 依然是主力
讲到训练算法,Microduck 用的是PPO(Proximal Policy Optimization)。虽然学术界这几年出了很多新算法,但 PPO 在机器人控制任务里依然是事实标准,因为它稳定、调参友好、对超参数不那么敏感。
PPO 算法的核心思想是在每次策略更新时限制更新的幅度,不会因为某批数据里的极端情况而做出剧烈的策略改变,从而保证了训练过程的稳定性。通俗讲,就是"小步快跑"——进步可以慢,但方向要稳。
具体的数据管道大致是:模拟器生成经验数据,把观测、动作、奖励、状态价值估计存到 buffer 里;然后 PPO 用这批数据做多轮 mini-batch 更新;更新结束后继续用新策略在环境中采样数据。不断循环。
从训练时间来看,以 Isaac Gym 的并行能力,一个默认配置的 Microduck 策略,在像 RTX 3090 这样的 GPU 上,可能几个小时就能训出一个不错的步态。CPU 训练的话就非常痛苦了,我建议有条件的朋友至少搞一张能跑 GPU 的卡,别折磨自己。
训练完成后,策略会被导出成一个轻量模型文件。真正部署到鸭子上的时候,做的推理非常轻量——一个多层感知机(MLP)网络,输入尺寸也就是几十维,前向推理每次只需要不到一毫秒。所以在 ARM 开发板上跑起来完全没压力,不需要额外的硬件加速器。
5. 实操过程中的坑与解法:从仿真到真机的最后一公里
这部分是我自己平时做 sim-to-real 项目时最头疼的部分,也是我认为 Microduck 这类开源项目最有参考价值的地方。仿真训练成功只是起点,从训练好的策略到真机上稳定跑起来,中间有大量细节需要处理。
5.1 真机部署的系统结构
Microduck 的运行架构大概是这样的:ARM 主控负责跑策略推理,周期性地读取传感器数据、构造观测向量、输入给策略网络、输出关节目标位置,然后把目标位置发给底层控制器。底层控制器执行位置闭环控制,驱动电机转动。
这个架构里最关键的参数是控制频率。仿真里训练的频率需要和真机部署保持一致,否则策略对时间间隔的假设就失效了。比如你在仿真里用 50Hz 的控制频率训练,真机部署时就得想办法稳定在 50Hz 左右。如果真机跑不到这个频率,或者频率波动很大,策略性能会显著下降。
Microduck 在训练时做了控制频率随机化,就是为了应对真机上主控负载波动导致的频率不稳定。这个细节很多人会忽略,但在实际部署中经常是导致 sim-to-real 失败的隐形杀手。
5.2 仿真到真机的模型转换
训练好的 PyTorch 策略模型,在真机上部署时有两种主流方案:
- 直接在 ARM 主控上用 PyTorch 跑推理。优点是简单直接,不用做模型转换;缺点是依赖 PyTorch 运行环境,内存占用和启动时间都偏大。
- 把模型转换成 ONNX 格式或者 TensorRT 模型,用推理引擎部署。优点是运行效率更高,启动更快;缺点是转换过程可能有算子兼容性问题。
Microduck 的仓库提供了导出脚本,我建议你按照脚本走一遍。如果遇到算子不被支持的情况(比如某些激活函数或自定义层),先检查一下是否把模型里的自定义操作替换成了标准算子。多数情况下,MLP 网络转换都非常顺利,不会有太大问题。
5.3 真机调参的独家心得
这部分我觉得是全文最有价值的内容。我在多个 sim-to-real 项目里踩过不少坑,分享一些针对低成本机器人的调参心得:
**第一个心得:先确认硬件的"原生能力"如何,再期待策略表现。**做真机实验之前,先把电机的响应特性摸个底。比如你设定一个目标位置,看实际到达需要多长时间、跟踪误差有多大。这个数据对调整仿真里的电机增益参数非常有帮助。我一直觉得,仿真和真机的差距,很大程度上在电机这一环就决定了。Microduck 做系统辨识也是从这个角度出发的。
**第二个心得:训练时加一点"故意找茬"的物理扰动。**比如在仿真里偶尔给鸭子一个横向推力,或者在随机位置放一个小障碍物。这样策略学会的是"应对意外状况"而不是"在完美条件下行走"。Microduck 的随机化项里应该有类似的设计,但如果你自己搭任务,记得主动加上。
**第三个心得:一到真机上,先把安全措施做好。**最简单有效的方式是给鸭子挂一个牵引绳,这样它即使摔倒也不会摔坏。我还建议在代码里加一个"跌倒检测"逻辑:如果 IMU 检测到长时间非直立姿态,就立即停止动作并恢复待机姿态。没有这些保护,你可能一台鸭子摔几次就要重新打印零件了。
**第四个心得:真机实验要留出足够的玄学余量。**即使你的仿真训练成功率是 99%,真机上第一次跑可能还是会有各种意想不到的问题——地面材质不同、光线影响(如果用了视觉传感器)、电池电压波动导致电机力矩下降。不要指望一次成功,实验本身就是个迭代过程。我做过一次双足实验,仿真里 98% 成功率,真机前 20 次试验全部摔倒,后来发现是仿真里设置的步态频率在真机上超出了电机带宽——这种问题在仿真里几乎不可能发现。
5.4 常见问题速查表
根据 Microduck 社区和类似项目的经验,我把常见问题整理成一张表,方便遇到问题的时候快速对号入座:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 仿真里策略很好,真机上完全站不住 | 电机响应比仿真慢很多 | 校准电机的实际响应延迟,降低控制频率期望 |
| 真机上走几步就摔倒 | 摩擦系数比仿真低,脚底打滑 | 增大训练时的摩擦随机化范围,或给脚底加防滑垫 |
| 真机上关节抖动明显 | 训练时没加动作平滑惩罚,策略输出抖动 | 在奖励函数里加入平滑惩罚并重新训练 |
| 动作幅度不敢做大,走得很慢 | 能量惩罚权重过大 | 降低能量惩罚,或改为稀疏惩罚(只惩罚超限) |
| 真机电池掉电很快 | 电机频繁加减速、堵转 | 检查是否动作频率太快,加入动作低通滤波 |
| 打印件有咔咔异响 | 关节位置可能超限 | 检查关节角度限制惩罚是否生效,加软件限位 |
| 每次实验结果都不一样 | 电池电压、地面材质、打印公差 | 做多次实验取统计结果,保证测试条件标准化 |
6. Microduck 带来的一些思考:Sim2Real 研究的门槛真的降下来了
聊完技术细节,我想说说这个项目更深层的意义。
Microduck 最大的贡献不是鸭子的外形,也不是 399 美元这个数字,而是一种"可负担的 Sim2Real 实验范式"。过去,做 sim-to-real 研究基本是大型实验室的专属游戏——硬件贵、算力要求高、实验周期长。Microduck 把成本和控制难度都降到了个人开发者可以承受的范围,这意味着什么呢?
意味着强化学习社区里那些有能力、有意愿但缺乏资源的人,现在可以真正动手做了。学生可以用它做课程项目,业余爱好者可以用它验证新想法,独立开发者可以探索机器人产品的快速原型。这个群体的加入会让相关方法的迭代速度比以前快得多。
另外,Microduck 在开源精神上也值得点赞。训练代码、仿真配置、部署脚本都开放了,甚至连系统辨识的方法论都作为文档写清楚了。这正是国内很多项目和团队最应该学习的地方。我一直觉得,一个项目的价值不只是它自己跑通了什么,而是它能让多少后来者在它的基础上继续往前走。
从技术路线上看,Microduck 选的方案不是最前沿的,没有模型预测控制(MPC)、没有视觉基础模型、没有大规模强化学习基础设施。它用的都是成熟技术:Isaac Gym、PPO、域随机化。但它把这些成熟技术组合得非常扎实,而且完整地暴露了所有工程细节。把正确的事情重复做到位,比研究新概念更具社会价值。这也是为什么我愿意把它叫"教科书"。
7. 如果你想复现/上手:几条面向不同基础的建议
Microduck 对不同的人,上手的路径是不一样的。我给几个分级建议:
完全没接触过 RL 和机器人的人:先别买硬件。第一步是用电脑跑通仓库里的仿真训练脚本,理解任务定义和奖励函数。等你能让仿真里的鸭子走出稳定步态了,再考虑硬件的事。这一步最大的门槛是配置 Isaac Gym 环境,多看看官方文档。
做强化学习、但没做过真机的人:建议直接按仓库的教程买套件。训练阶段对你来说不难,难点在真机部署。建议严格按照官方文档部署一遍流程,然后把注意力放在我上面讲的那些工程细节上:控制频率、延迟、观测对齐。真机上的每一步都是增量体验。
做嵌入式/机器人硬件、但对 RL 陌生的人:可以把重点放在仿真部分。了解域随机化和 PPO 的基本原理,尝试修改变量,观察步态变化。你会发现,很多看似高深的控制表现,其实就是一堆简单数学规则的组合。
做产品落地的人:可以重点研究它的硬件选型逻辑和系统架构。如果你想做一个消费级的小机器人产品,Microduck 的成本结构和技术选型是一个非常有参考价值的起点。
我个人最推荐的实操路径是:先花一天把仿真训练跑通,然后花一天做真机软硬件对接,最后留一周调真机稳定性的坑。这个时间安排是经验之谈——仿真环节如果配置顺利其实很快,真正的坑全在真机那一环。
8. 最后一句话:别等完美平台,先用手边的东西跑起来
最后我想说一点个人的感受。这几年看着机器人学习领域发展,有一个明显的趋势:做研究不再需要顶级实验室的硬件资源了。像 Microduck 这样的项目给出了一个很好的示范——用一个几百美元的机器鸭子,配上一套严谨的 Sim2Real 方法,照样能做出有说服力的实验,让很多之前停留在纸面上的想法有了落地验证的机会。
我在实际调试低成本机器人时最深的体会是:别纠结于硬件的性能上限,把精力花在建模准确性和仿真设计的严谨性上,小平台一样能验证核心问题。Microduck 的仿真管道、随机化参数、奖励设计这些细节,完全可以迁移到其他形态的机器人上。换一对腿、换个机身、加个机械臂,底层方法大同小异——这大概就是它作为"教科书"最大的价值所在。
如果你手头已经有适合做 sim-to-real 验证的小机器人,哪怕不是机器鸭,也建议装上这套训练方法试试。方法本身的价值,往往比一个具体形态的硬件更持久。