model.nu
模型中控制输入(actuator)的数量,用于定义动作空间
model.nq
模型中广义坐标(generalized coordinates)的数量,描述系统的位形
- 对于简单的关节(如旋转关节),nq 通常等于关节的数量
- 对于更复杂的关节(如自由关节,free joint),nq 可能会更大,因为自由关节需要6个自由度(3个平移 + 3个旋转)
model.nv
模型中广义速度(generalized velocities)的数量,描述系统的速度
- 对于大多数关节,nv 等于 nq
- 对于自由关节(free joint),nv = 6(3个平移速度 + 3个旋转速度)
import mujoco
import mujoco_viewer
# 加载模型
model = mujoco.MjModel.from_xml_path('go2.xml')
data = mujoco.MjData(model)
# 打印模型属性
print("Number of actuators (model.nu):", model.nu)
print("Number of generalized coordinates (model.nq):", model.nq)
print("Number of generalized velocities (model.nv):", model.nv)
# 初始化仿真
viewer = mujoco_viewer.MujocoViewer(model, data)
for _ in range(1000):
# 设置控制输入(随机动作)
data.ctrl[:] = np.random.uniform(-1, 1, size=model.nu)
# 步进仿真
mujoco.mj_step(model, data)
# 获取当前状态
qpos = data.qpos # 广义坐标
qvel = data.qvel # 广义速度
print("qpos:", qpos)
print("qvel:", qvel)
# 渲染
viewer.render()
viewer.close()