SuperAPI AI 工具集

mujoco-python

智能体与模型

查看项目

更新于 10-15 21:53

技能介绍

用途:面向使用 Python(或 C/C++)操作 MuJoCo 物理仿真的开发者,说明模型编译、仿真推进、状态读取与数学工具的正确用法,也可作为机器人控制与强化学习环境的实现参考。

生命周期与编译:模型分三级——MjSpec 为可变蓝图,spec.compile() 得到编译后的 MjModel,再由 MjData(model) 建立动态状态。结构改动后需 spec.recompile(model, data) 并始终重新赋值返回值。加载可用 mujoco.MjModel.from_xml_path、from_xml_string、from_binary_path,或 MjSpec.from_file、from_string;序列化用 spec.to_xml()、spec.encode()。注意 3.x 已无 mujoco.load_model_from_path。

状态访问:按名访问返回视图而非副本,如 data.body('torso').xpos、model.geom('ball').size、data.joint('knee').qpos 可写;日志需 .copy()。用 MjSpec 构建时可用 bind() 映射元素,写值须用 .set()。不要用 mj_name2id、model.find_body() 或 dm_control 查找模式。

步进与重置:mj_step 推进一个时间步;需依当前运动学施加自定义控制时用 mj_step1 + mj_step2 拆分。t=0 读传感器前应调用 mj_forward。重置用 mj_resetDataKeyframe 后调 mj_forward。积分器由 model.opt.integrator 选择:Euler(默认)、implicitfast(推荐)、implicit、RK4、discrete(实验性)。

传感与数学:观测不要遍历 data.contact,应使用声明式 contact 传感器与 touch 传感器,输出固定长度写入 data.sensordata。mju_ 库提供四元数、位姿运算;MuJoCo 四元数为标量在前 [w,x,y,z],与 SciPy/ROS 相反,需调换分量。

诊断与限制:开启 mjENBL_ENERGY 可监测总机械能,守恒系统中能量增长意味着数值不稳定。计算字段如 xpos、xmat 只读;元素名同类型内需唯一;朝向关键字互斥;+Z 向上、重力 [0,0,-9.81]。后端可选默认 C++ 引擎(CPU、float64、全求解器与插件)或 MJX/MJWarp(GPU、float32、插件支持有限)。具体平台、性能数据与收费信息暂未提供。