《MicroDuck RL:训练机器鸭从仿真走到真机》 系列课程 · 第 08 集 / 共 14 集
上一集:【MicroDuck RL 07】实时可视化与监控:边训练边看它进步 |课程目录 | 下一集:【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.xml、sensors.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 集练习路线的第一步就是这个。下一集讲部署:从仿真到真机。