【MicroDuck RL 08】MuJoCo 基础:单独把玩机器人模型

:books: 《MicroDuck RL:训练机器鸭从仿真走到真机》 系列课程 · 第 08 集 / 共 14 集
上一集:【MicroDuck RL 07】实时可视化与监控:边训练边看它进步:open_book: 课程目录 | 下一集:【MicroDuck RL 09】部署流程:从仿真到真机(Sim2Real)

这一集轻松一点:不训练,只看/玩机器人模型本身。这是初学者理解 MJCF(MuJoCo 模型格式)最快的方式。

打开查看器

cd microduck_rl

# 方式一:直接用 MuJoCo 自带查看器打开场景文件(地板 + 机器人 + STAND/SIT/FOLD 关键帧)
uv run python -m mujoco.viewer src/mjlab_microduck/robot/microduck/scene_walk.xml

# 方式二:仓库自带的入口,加载走路版机器人并打开查看器
uv run python src/mjlab_microduck/robot/microduck_constants.py

查看器里的基础操作:空格暂停、Tab 切换视角、按住右键拖动旋转相机、Ctrl+拖拽 可以直接用手推机器人看它倒(这就是仿真的乐趣)。

读懂模型文件的入口

  • scene_walk.xml:场景 = 地板 + include 机器人 + 关键帧;
  • robot_walk.xml:机器人本体;assets/ 里是网格;joints_properties.xmlsensors.xml 是关节与传感器定义;
  • 关注四类元素:<body>(刚体树)、<joint>(关节,含限位/阻尼/摩擦)、<geom>(碰撞/视觉几何)、<actuator>(驱动)。

MuJoCo Python API 速尝

交互模式玩 30 分钟胜过读文档:

import mujoco, time
m = mujoco.MjModel.from_xml_path("src/mjlab_microduck/robot/microduck/scene_walk.xml")
d = mujoco.MjData(m)
print(m.nq, m.nv, m.nu)        # 自由度、速度维、驱动维
d.ctrl[:] = 0.1                 # 给所有驱动发个指令
while d.time < 3.0:
    mujoco.mj_step(m, d)        # 推进一步物理
    time.sleep(0.005)
print(d.qpos)                   # 看它变成什么姿势了

试试改 d.ctrl 的不同组合,观察关节怎么动,再对照 robot_walk.xml 找到每个 body——第 12 集练习路线的第一步就是这个。下一集讲部署:从仿真到真机。


:open_book: 系列课程目录【系列课程】MicroDuck 强化学习:训练机器鸭从仿真走到真机 · 课程目录与导读