一键领取 MicroDuck 云端仿真镜像:网页遛鸭,还能接 RDK X5
2026-09-07 更新: 针对开机后 Web 应用 502、未接 X5 时 MANUAL 的 Kick L/R 无动作,新增独立修复镜像
microduck-cloud-sim-kickfix-20260907,已共享到 RoboGo 的 DuckTogether 群组。它保留乔龙原环境,补上服务启动托管、云端左右踢球和动作状态反馈;不是对原作者镜像的原地覆盖。下文按修复版说明,并明确区分云端与板端能力。
前几天我们分享了 MicroDuck 的「云仿真 + 板端运控 + BPU 视觉」闭环,很多朋友问:
环境能不能直接给出来?我不想从 MuJoCo、模型和 Web 服务开始一层层配。
现在可以了。乔龙已经把这套环境整理成 RoboGo 开发机镜像 microduck-cloud-sim:创建开发机、开放
8080 端口,就能在浏览器里直接“遛鸭”;有 RDK X5 的朋友,还可以继续接入板端运控和 BPU 视觉。
修复版领取: 登录 RoboGo,进入“我的资产 → 群组共享的”,找到 DuckTogether 共享的 microduck-cloud-sim-kickfix-20260907。本次仅群组共享,未公开上架社区;非群组成员需先获取群组访问权限。
乔龙原版(保留溯源): microduck-cloud-sim|RoboGo 资产市场
项目原帖: 全网刷屏的机器鸭,我们把它“养”上了云——还能用一块 RDK X5 遛它
镜像里有什么
- MicroDuck 的 MuJoCo 云端物理仿真与官方 ONNX 强化学习策略
- 第三人称画面、鸭子第一视角和实时遥测组成的网页驾驶舱
- 无开发板即可运行的行走、站立、转向、速度指令调节;修复版新增云端左右踢球
- 原有强化学习训练仓库、Python 虚拟环境及 ONNX 策略
- RDK X5 运控与视觉接口;其他动作及视觉追球需要另行准备板端程序
这里纠正原文一个容易误解的地方:页面有按钮,不等于云端已经实现该动作。 原版无 X5 时只运行行走/站立策略,Kick 等动作仅转发给板端。修复版补上左右踢球;坐下/起立、翻滚、捡物、推倒等本轮没有补齐云端实现,无板时按钮禁用,键盘请求也会明确拒绝。
浏览器负责发指令和看画面;云端负责仿真与渲染。接入 X5 后,可以让板端运行鸭子的控制与视觉程序,
云端页面继续作为实时驾驶舱。
1. 用镜像创建开发机
从群组共享资产进入修复版镜像页面,按平台提示领取/使用,再创建开发机。确认所选名称为 microduck-cloud-sim-kickfix-20260907,不要误选旧版。
已有开发机不会随新镜像发布自动升级。若需要迁移,先备份自己训练的模型和修改,再从修复版创建新实例;不要直接删除旧开发机。
建议配置:
- 1 张 NVIDIA GPU;推荐使用
dsp-24c192g-5090_32g-x1 - 系统盘不少于 100 GB
- 外网应用配置增加端口
8080,路径填写/ - 按页面提示填写开发机名称和 SSH 公钥
等开发机进入“运行中”后,点击卡片上的 “Web 应用”,即可获得公网访问地址。
2. 启动并检查仿真
修复版增加了开机服务托管、健康检查和异常重启。镜像工作目录仍为 /root/microduck_sim/。开机后先在终端检查:
cd /root/microduck_sim
python3 service.py status
再检查应用健康状态:
curl -fsS http://localhost:8080/healthz
看到返回内容中的 "ok": true,说明服务已正常启动。随后打开“Web 应用”地址即可进入驾驶舱。
首次体验不需要连接 X5。若服务未就绪或被手动停止,再执行 ./restart.sh,并查看日志:
cd /root/microduck_sim
./restart.sh
tail -n 80 service-logs/server.log
不要同时额外运行一份 python3 sim_server.py,否则会竞争端口。healthz 成功只证明应用后端可用,不能单独证明公网代理和浏览器连接正常。
3. 在网页里控制 MicroDuck
| 操作 | 功能 |
|---|---|
W / S |
前进 / 后退 |
A / D |
左转 / 右转 |
Q / E |
修复版云端左脚 / 右脚踢球,无需 X5 |
R / V / G / P |
原坐起/翻滚/捡物/推倒请求:需板端实现,无 X5 时禁用 |
空格 |
复位,并取消踢球、清零速度指令 |
| 速度滑块 | 调节目标速度,不保证实际速度与指令完全一致 |
Manual / Chase |
手动控制 / 视觉追球;Chase 需接入视觉控制端 |
手机访问同一个页面时会显示双摇杆,可以直接触控操作。
左右踢球怎么体验
选择 Manual,先走近球,让球位于所选脚的前方,再按 Q/E 或点击 Kick L/R。
初始球在前方约0.9米处,原地直接按键只是空踢——模型不感知球的位置,也不会自动瞄准。
修复版复用镜像已有的 ball_kick_left.onnx / ball_kick_right.onnx,流程为“减速站稳 → 运行踢球模型0.5秒 → 站稳恢复 → 继续当前速度指令”。动作中如果输入停止,结束后不会恢复之前的速度。重复点击会被拒绝,且不会靠挪球或重置鸭子来制造踢球效果。
页面会反馈 accepted(已接受)、running(执行中)、recovering(恢复中)、completed(动作周期结束)或 rejected(拒绝)。completed 不代表一定碰到球;接板时 forwarded 也仅表示已转发,不是板端执行成功。
4. 接入 RDK X5
如果手里有 RDK X5,并且板端已经准备好 duck_sim_brain.py、duck_vision.py 和对应策略文件,
可以在 X5 的两个终端中分别启动控制与视觉程序:
以下保留原作者使用说明中的接入方式。本次在云镜像中未找到
duck_sim_brain.py,不能承诺领取云镜像就同时获得完整板端程序;请先按项目原帖准备板端文件与依赖。本轮只测了消息转发,没有完成实体 X5 联调。
cd /root/duck_brain
python3 duck_sim_brain.py wss://<RoboGo-Web-公网域名>/board
python3 duck_vision.py wss://<同一个公网域名>/vision
按原方案,控制端通过 /board 回传状态后,云端切换为状态回放与渲染;视觉程序通过 /vision 接收鸭子视角并回传检测/追球指令。Chase 不是仅按按钮就能启用的云端识别功能,需要视觉端实际运行。板端断开后,服务回到云端兜底模式。
这里最值得观察的不只是“鸭子动起来了”,而是完整的数据闭环:
网页指令 / 相机画面
↓
RoboGo 云端仿真与渲染
↕ WebSocket
RDK X5 运控 + BPU 视觉
↓
鸭子状态与动作回传到驾驶舱
常见问题
开机后出现 502 Bad Gateway
检查端口 8080、路径 /,再看终端健康检查。此次复现的旧版问题是:即使端口配置正确,开机后应用进程也没有启动;手工启动后恢复正常。修复版为此增加启动托管,但不能把所有502都归为同一原因。若后端健康而公网仍502,请保留开发机ID、发生时间和日志,继续检查平台代理链路。
画面黑屏或不动
先执行 curl -s http://localhost:8080/healthz;服务异常时进入 /root/microduck_sim/ 执行
./restart.sh。
Chase 模式检测不到球
先确认视觉端已连接且在输出检测/控制消息,再确认球进入第一视角;按空格复位会把球放回初始位置。
MANUAL 下 Kick L/R 没反应
先确认使用的是本次 kickfix 修复版,并刷新页面。检查动作状态是“拒绝”“执行中”还是没有连接;原版无 X5 时并未执行踢球。如果鸭子做了踢腿但球没动,先检查是否走近并对准了球。
X5 连接中断
检查两个 wss:// 地址是否使用当前开发机的 Web 公网域名。板端掉线不会让页面直接失效,云端会回退到
本地模式。
进阶:训练自己的 MicroDuck 策略
乔龙原镜像本身就有可用的训练环境,并不是只能推理。 本次直接使用其原虚拟环境完成了64个并行环境、5轮PPO训练检查,并导出输入 [1,61]、输出 [1,14] 的ONNX,CPU推理通过;没有重装训练环境或修改奖励。
在修复版终端先跑一次小规模检查:
cd /root/microduck_sim
./train.sh Mjlab-Velocity-Flat-MicroDuck \
--env.scene.num-envs 64 \
--agent.max_iterations 5 \
--agent.logger tensorboard \
--agent.run-name my-smoke
日志与模型保存在 microduck_rl/logs/rsl_rl/velocity/<运行目录>/。五轮只验证流程,不代表已经训练出好策略。
Web使用系统Python,训练使用 microduck_rl/.venv,不要混用pip。更长训练及包含观测归一化的ONNX导出命令见镜像README。
这份修复版尚未加入任意训练模型的Web切换入口。若希望进一步体验checkpoint管理、替换和对比自己的模型,可以选择另一份训练镜像:
训练镜像: microduck-rl-training-web-v1|RoboGo 资产市场
- 内置 9 个官方预训练策略,可在 Web 中实时控制和切换动作
- 提供 GPU PPO 训练、速度跟踪对比任务和 checkpoint 管理
- 支持将 checkpoint 正确导出为包含观测归一化器的 ONNX
- 可直接在 Web 中替换、体验和对比自己训练的模型
两份镜像不是“一个能训练、一个不能训练”的区别:本次修复版延续乔龙驾驶舱与X5接口,并补齐云端左右踢球;microduck-rl-training-web-v1 提供更完整的训练与模型替换工作流。后者此前已完成新开发机恢复、PPO训练检查及checkpoint → ONNX → Web验证;这些结论不能混用为本次kickfix版本的验收结果。
本次验证到了哪一步
- 启动修复基底:从镜像新建、关机再开机,服务均能自动拉起;原有训练环境训练和导出通过。
- 踢球修复:左右脚的原地、带速度、脚前放球共6种独立物理测试通过;WebSocket动作/停止/复位/恢复速度及前端单元测试通过。
- 尚待补测:本次新保存的kickfix镜像尚未另建实例复测恢复;公网浏览器自动验收被客户端拦截,未完成真实按钮点击验收;没有实体X5联调。本次先作为群组共享修复版,不能理解为全链路已全部验收。
最后
这份镜像适合先把效果跑起来,再沿着 Web 控制、强化学习策略、板端闭环和 BPU 视觉逐层拆解。
先在浏览器里遛一圈,再接上 X5 给它换一颗真正的“板端小脑”。如果你基于这个镜像做出了新的动作、
感知能力或交互玩法,欢迎继续发到 Duck Together|机器鸭共建 版块。
项目基于 Pollen Robotics 开源 MicroDuck 构建;原镜像与 RDK X5 联动方案由 qiaolongli 提供。本次独立修复基于其镜像,保留上游模型与训练环境,感谢原作者的工作。
