核心总逻辑

你现在装的所有包,合在一起构成一条链路: MuJoCo物理仿真环境 → 强化学习策略(ONNX/torch) → BAM电机模型(better-actuator-models) → 输出关节控制量 → 驱动机器鸭动起来


1. mujoco

Microduck 的物理仿真引擎。 就是用来算鸭子刚体、关节、碰撞、重力、摩擦力的。你后面看到窗口里鸭子走路、摔倒、晃身子,全是它算出来的。

网页在线模拟器底层也是 mujoco。

2. mjlab==1.3.0

Pollen Robotics 自己封装的库,Microduck RL 训练框架主体。 把 mujoco 封装好,写好了机器鸭的机器人模型、观测采集、奖励函数、训练循环。你项目里大部分 python 代码都是基于 mjlab 写的。

3. better-actuator-models(bam,你本地单独装的)

电机动力学模型,重中之重。 真实舵机不是给一个角度就立刻到位,有阻尼、摩擦力、滞后。bam 就是仿真舵机的动态特性,让仿真里鸭子的电机行为贴近真实硬件。仿真和实物能对齐全靠它。

4. warp-lang

GPU 加速计算库,mjlab 强依赖。 mujoco 本身 CPU 跑很慢,warp 把仿真、地形、接触计算全部丢给显卡并行加速,没有它仿真会卡到没法看,训练也跑不动。

5. torch

PyTorch,强化学习训练用的神经网络框架。

  • 训练的时候:用 torch 搭建策略网络、反向传播更新权重
  • 推理(你现在跑 infer_policy):其实不用 torch,只用 onnxruntime;但 mjlab 内部代码依赖它,所以必须装上
6. onnxruntime

ONNX 推理引擎。 就是加载你下载的 alpha_walking.onnx / happy_hop.onnx,每一帧接收鸭子状态,输出关节动作指令,你马上要跑的脚本核心就是它。 onnx 就是 torch 训练完导出给它跑的模型。

7. scipy

科学计算库。mjlab 内部地形生成、插值、信号滤波、姿态运算会偷偷调用。之前注释里也说了,mjlab 忘了声明这个依赖,不加就会 import 报错。

8. rustypot

和真实舵机通信的库(dynamixel 舵机) 👉 现在仿真阶段暂时用不到;等以后你拿到实体机器鸭,电脑 / 板子直接控制真实舵机的时候才会启用。

9. huggingface_hub

用来从 HuggingFace 下载策略模型(就是我们下 happy_hop、running.onnx 的底层工具),也可以上传你自己训练好的 onnx。

10. matplotlib

绘图,训练的时候画奖励曲线、观测数据折线图,调试步态用,仿真运行时不用。

11. nvidia-xxx 这一堆(nvjitlink、cublas、cudnn、curand……cu13)

全部是 NVIDIA CUDA GPU 底层库

  • warp-lang、torch 想要调用你的 N 卡加速,必须依赖这一套
  • cublas:GPU 矩阵运算(神经网络核心计算)
  • cudnn:GPU 神经网络加速库
  • nvrtc:实时编译 GPU 代码

这一堆体积巨大,也是你电脑容易高负载、黑屏重启的元凶。没有它们,warp 和 torch 就只能回退到 CPU,仿真巨慢。

12. triton

GPU 内核编译器,warp/torch 底层依赖,优化 GPU 上的计算代码。


一句话总结整条链路

mujoco 造虚拟鸭子世界 + mjlab 管理仿真流程 + bam 模拟舵机特性 + onnxruntime 跑走路策略模型 + warp+CUDA库 GPU 加速; torch 用来训练新模型,rustypot 对接实物舵机,huggingface_hub 下载别人做好的步态,matplotlib 画图调试。

现在这一堆全部装完,你就拥有了一套完整的 Microduck 仿真工作站,可以加载 onnx 看鸭子走路,后续还能自己训练新步态。

补充区分:

  • 缺了 mujoco:没有鸭子模型、没有物理世界
  • 缺了 bam:电机模型不对,仿真步态和真实机器人完全不一样
  • 缺了 warp:GPU 加速失效,仿真卡成 PPT

等全部跑完,我们就可以复制 onnx,启动仿真看鸭子走起来了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐