MJX API#

MJX 的公共 API。

step(m: Model, d: Data) Data[source]#

推进仿真。

class Model[source]#

场景的静态模型,在每个物理步长中保持不变。

nq#

广义坐标的数量

类型:

int

nv#

自由度数量

类型:

int

nu#

执行器/控制量的数量

类型:

int

na#

激活状态的数量

类型:

int

nbody#

刚体数量

类型:

int

njnt#

关节数量

类型:

int

ngeom#

几何体数量

类型:

int

nsite#

站点数量

类型:

int

ncam#

相机数量

类型:

int

nlight#

光源数量

类型:

int

nmesh#

网格数量

类型:

int

nmeshvert#

所有网格的顶点总数

类型:

int

nmeshnormal#

所有网格的法线总数

类型:

int

nmeshtexcoord#

所有网格的纹理坐标总数

类型:

int

nmeshface#

所有网格的面总数

类型:

int

nmeshgraph#

网格辅助数据中的整数数量

类型:

int

nmeshpoly#

所有网格中的多边形总数

类型:

int

nmeshpolyvert#

所有多边形中的顶点总数

类型:

int

nmeshpolymap#

顶点映射中的多边形数量

类型:

int

nhfield#

高度图数量

类型:

int

nhfielddata#

高程数据大小

类型:

int

ntex#

纹理数量

类型:

int

ntexdata#

纹理数据大小

类型:

int

nmat#

材质数量

类型:

int

npair#

预定义几何体对的数量

类型:

int

nexclude#

排除的几何体对数量

类型:

int

neq#

等式约束数量

类型:

int

ntendon#

肌腱数量

类型:

int

nwrap#

所有肌腱路径中的包裹对象数量

类型:

int

nsensor#

传感器数量

类型:

int

nnumeric#

数字自定义字段的数量

类型:

int

ntuple#

元组自定义字段的数量

类型:

int

nkey#

关键帧数量

类型:

int

nmocap#

运动捕捉(mocap)刚体数量

类型:

int

nM#

稀疏惯性矩阵中的非零元素数量

类型:

int

nB#

B 矩阵中的非零元素数量

类型:

int

nC#

C 矩阵中的非零元素数量

类型:

int

nD#

D 矩阵中的非零元素数量

类型:

int

nJmom#

动量雅可比矩阵中的非零元素数量

类型:

int

nJten#

稀疏肌腱雅可比矩阵中的非零元素数量

类型:

int

ngravcomp#

具有非零重力补偿的刚体数量

类型:

int

nuserdata#

用户数据中的元素数量

类型:

int

nsensordata#

传感器数据向量中的元素数量

类型:

int

npluginstate#

插件状态值的数量

类型:

int

nhistory#

历史缓冲区元素数量

类型:

int

opt#

物理选项

类型:

mujoco.mjx._src.types.Option

stat#

模型统计信息

类型:

mujoco.mjx._src.types.Statistic | mujoco.mjx._src.types.StatisticWarp

qpos0#

默认姿态下的 qpos 值

类型:

jax.Array

qpos_spring#

弹簧的参考姿态

类型:

jax.Array

bind(obj: MjsBody | MjsFrame | MjsGeom | MjsJoint | MjsLight | MjsMaterial | MjsSite | MjsMesh | MjsSkin | MjsTexture | MjsText | MjsTuple | MjsCamera | MjsFlex | MjsHField | MjsKey | MjsNumeric | MjsPair | MjsExclude | MjsEquality | MjsTendon | MjsSensor | MjsActuator | MjsPlugin | Iterable[MjsBody | MjsFrame | MjsGeom | MjsJoint | MjsLight | MjsMaterial | MjsSite | MjsMesh | MjsSkin | MjsTexture | MjsText | MjsTuple | MjsCamera | MjsFlex | MjsHField | MjsKey | MjsNumeric | MjsPair | MjsExclude | MjsEquality | MjsTendon | MjsSensor | MjsActuator | MjsPlugin]) BindModel#

将 MuJoCo 规范绑定到 MJX 模型。

class Data[source]#

每个步骤都会更新的动态状态。

time#

仿真时间

类型:

jax.Array

qpos#

位置

类型:

jax.Array

qvel#

速度

类型:

jax.Array

act#

执行器激活值

类型:

jax.Array

history#

执行器历史缓冲区

类型:

jax.Array

qacc_warmstart#

求解器的热启动值

类型:

jax.Array

plugin_state#

插件状态值

类型:

jax.Array

ctrl#

控制输入

类型:

jax.Array

qfrc_applied#

施加的广义力

类型:

jax.Array

xfrc_applied#

施加的笛卡尔力/扭矩

类型:

jax.Array

eq_active#

启用/禁用等式约束

类型:

jax.Array

mocap_pos#

运动捕捉刚体的位置

类型:

jax.Array

mocap_quat#

运动捕捉刚体的朝向

类型:

jax.Array

qacc#

加速度

类型:

jax.Array

act_dot#

执行器激活值的时间导数

类型:

jax.Array

userdata#

用户数据

类型:

jax.Array

sensordata#

传感器数据输出

类型:

jax.Array

xpos#

刚体坐标系的笛卡尔位置

类型:

jax.Array

xquat#

刚体坐标系的笛卡尔朝向

类型:

jax.Array

xmat#

刚体坐标系的旋转矩阵

类型:

jax.Array

xipos#

刚体质心(com)的笛卡尔位置

类型:

jax.Array

ximat#

刚体惯性的旋转矩阵

类型:

jax.Array

xanchor#

关节锚点的笛卡尔位置

类型:

jax.Array

xaxis#

笛卡尔关节轴

类型:

jax.Array

ten_length#

肌腱长度

类型:

jax.Array

geom_xpos#

几何体的笛卡尔位置

类型:

jax.Array

geom_xmat#

几何体的旋转矩阵

类型:

jax.Array

site_xpos#

站点的笛卡尔位置

类型:

jax.Array

site_xmat#

站点的旋转矩阵

类型:

jax.Array

cam_xpos#

相机位置

类型:

jax.Array

cam_xmat#

相机旋转矩阵

类型:

jax.Array

subtree_com#

每个子树的质心

类型:

jax.Array

cvel#

基于质心的速度

类型:

jax.Array

cdof#

基于质心的雅可比矩阵

类型:

jax.Array

cdof_dot#

cdof 的时间导数

类型:

jax.Array

qfrc_bias#

C(qpos,qvel)

类型:

jax.Array

qfrc_gravcomp#

重力补偿项

类型:

jax.Array

qfrc_fluid#

流体阻力和浮力

类型:

jax.Array

qfrc_passive#

被动力

类型:

jax.Array

qfrc_actuator#

执行器力

类型:

jax.Array

actuator_force#

执行空间中的执行器力

类型:

jax.Array

actuator_length#

执行器长度

类型:

jax.Array

qfrc_smooth#

平滑动力学力

类型:

jax.Array

qacc_smooth#

无约束情况下的加速度

类型:

jax.Array

qfrc_constraint#

约束力

类型:

jax.Array

qfrc_inverse#

逆动力学计算所需的净外力

类型:

jax.Array

bind(model: Model, obj: MjsBody | MjsFrame | MjsGeom | MjsJoint | MjsLight | MjsMaterial | MjsSite | MjsMesh | MjsSkin | MjsTexture | MjsText | MjsTuple | MjsCamera | MjsFlex | MjsHField | MjsKey | MjsNumeric | MjsPair | MjsExclude | MjsEquality | MjsTendon | MjsSensor | MjsActuator | MjsPlugin | Iterable[MjsBody | MjsFrame | MjsGeom | MjsJoint | MjsLight | MjsMaterial | MjsSite | MjsMesh | MjsSkin | MjsTexture | MjsText | MjsTuple | MjsCamera | MjsFlex | MjsHField | MjsKey | MjsNumeric | MjsPair | MjsExclude | MjsEquality | MjsTendon | MjsSensor | MjsActuator | MjsPlugin]) BindData#

将 MuJoCo 规范绑定到 MJX Data。

collision(m: Model, d: Data) Data#

执行几何体碰撞检测。

refit_bvh(m: Model, d: Data, ctx: Any)#

根据当前姿态重新拟合场景 BVH(包围体层次结构)。

make_constraint(m: Model, d: Data) Data#

创建约束雅可比矩阵及其他支持数据。

deriv_smooth_vel(m: Model, d: Data) Array | None#

平滑力相对于速度的解析导数。

euler(m: Model, d: Data) Data#

欧拉积分器,在速度上采用半隐式。

forward(m: Model, d: Data) Data#

正向动力学。

fwd_acceleration(m: Model, d: Data) Data#

累加所有非约束力,计算 qacc_smooth。

fwd_actuation(m: Model, d: Data) Data#

依赖于执行(actuation)的计算。

fwd_position(m: Model, d: Data) Data#

依赖于位置的计算。

fwd_velocity(m: Model, d: Data) Data#

依赖于速度的计算。

implicit(m: Model, d: Data) Data#

在速度上进行全隐式积分。

rungekutta4(m: Model, d: Data) Data#

四阶显式龙格-库塔(Runge-Kutta)积分器。

inverse(m: Model, d: Data) Data#

逆动力学。

create_render_context(mjm: MjModel, nworld: int, devices: Sequence[str] | None = None, **kwargs)#

创建一个渲染上下文。

参数:
  • mjm – MuJoCo 模型

  • nworld – 需要渲染的世界数量。我们必须硬编码 nworld,因为 Warp 创建的大小为 nworld 的数组不会暴露给 JAX。因此,我们无法在渲染上下文中使用像 vmap 这样的 JAX 变换。

  • devices – 可选的设备名称列表(例如 ['cuda:0', 'cuda:1'])。如果提供,渲染工作负载将分片到这些设备上。默认情况下,devices 为 None,将使用 wp.get_device(None) 的默认设备。

  • **kwargs – 转发给渲染上下文构造函数。

返回:

与 JAX 兼容的渲染上下文对象。

get_data(m: MjModel, d: Data, keepalive_refs: Dict[int, Any] | None = None) MjData | List[MjData]#

从设备获取 mjx.Data,生成 mujoco.MjData 或 List[MjData]。

get_data_into(result: MjData | List[MjData], m: MjModel, d: Data, keepalive_refs: Dict[int, Any] | None = None)#

将 mjx.Data 从设备获取到现有的 mujoco.MjData 或列表中。

get_state(m: Model, d: Data, spec: int | mjtState) Array#

从 mjx.Data 获取状态。这等同于 mujoco.mj_getState

参数:
  • m – 描述仿真的模型

  • d – 仿真的数据

  • spec – 指定要包含哪些状态组件的整数位掩码或 mjtState 枚举

返回:

状态值的平面数组

make_data(m: Model | MjModel, device: Device | None = None, impl: str | Impl | None = None, _full_compat: bool = False, nconmax: int | None = None, naconmax: int | None = None, naccdmax: int | None = None, njmax: int | None = None, keepalive_refs: Dict[int, Any] | None = None) Data#

分配并初始化 Data。

参数:
  • m – 要使用的模型

  • device – 使用哪个设备 - 如果未指定,则选择默认设备

  • impl – 要使用的实现('jax', 'warp')

  • nconmax – 为 warp 分配的所有世界的最大接触点数量。由于世界的数量在 JAX 中是预定义的,我们使用 nconmax 参数来设定所有世界中接触点数量的上限。在 MuJoCo Warp 中,类似的字段被称为 naconmax

  • naconmax – 为 warp 分配的所有世界的最大接触点数量。由于世界的数量在 JAX 中是预定义的,我们使用 naconmax 参数来设定所有世界中接触点数量的上限,而不是 MuJoCo Warp 中的 nconmax 参数。

  • naccdmax – 为所有世界的 GJK 碰撞检测分配的最大接触点数量。由于世界的数量在 JAX 中是预定义的,我们使用 naccdmax 参数来设定所有世界中接触点数量的上限,而不是 MuJoCo Warp 中的 nccdmax 参数。

  • njmax – 为 warp 分配的所有世界的最大约束数量

  • keepalive_refs – 可选字典,用于存储对基础 MuJoCo 对象的引用,防止它们被垃圾回收。当传递 types.Model 时,CPP 实现需要此项。

返回:

一个放置在设备上的已初始化 mjx.Data

引发异常:
  • ValueError – 如果模型的 impl 与 make_data 的 impl 不匹配

  • NotImplementedError – 如果尚未实现该 impl

  • DeprecationWarning – 如果使用了 nconmax

put_data(m: MjModel, d: MjData, device: Device | None = None, impl: str | Impl | None = None, nconmax: int | None = None, naconmax: int | None = None, njmax: int | None = None, dummy_arg_for_batching: Array | None = None, keepalive_refs: Dict[int, Any] | None = None) Data#

将 mujoco.MjData 放入设备,生成 mjx.Data。

参数:
  • m – 要使用的模型

  • d – 要放入设备的数据

  • device – 使用哪个设备 - 如果未指定,则选择默认设备

  • impl – 要使用的实现('jax', 'warp')

  • nconmax – 为 warp 分配的最大接触点数量

  • naconmax – 为 warp 分配的所有世界的最大接触点数量。由于世界的数量在 JAX 中是预定义的,我们使用 naconmax 参数来设定所有世界中接触点数量的上限,而不是 MuJoCo Warp 中的 nconmax 参数。

  • njmax – 为 warp 分配的最大约束数量

  • dummy_arg_for_batching – 用于 CPP 实现中批处理的虚拟参数

  • keepalive_refs – 可选字典,用于存储对基础 MuJoCo 对象的引用,防止它们被垃圾回收。

返回:

一个放置在设备上的 mjx.Data。DeprecationWarning: 如果使用了 nconmax

put_model(m: MjModel, device: Device | None = None, impl: str | Impl | None = None, graph_mode: GraphMode | None = None, keepalive_refs: Dict[int, Any] | None = None) Model#

将 mujoco.MjModel 放入设备,生成 mjx.Model。

参数:
  • m – 要放入设备并使用的模型

  • device – 使用哪个设备 - 如果未指定,则选择默认设备

  • impl – 要使用的实现

  • graph_mode – CUDA 图捕获模式(仅限 Warp)。使用 warp._src.jax_experimental.ffi 中的 GraphMode 枚举。GraphMode.WARP 是默认模式。

  • keepalive_refs – 可选字典,用于存储对基础 MuJoCo 对象的引用,防止它们被垃圾回收。CPP 实现需要此项以保持模型存活。

返回:

一个放置在设备上的 mjx.Model

引发异常:
  • ValueError – 如果不支持该 impl

  • RuntimeError – 如果 impl 为 WARP 且未安装 warp-lang

set_state(m: Model, d: Data, state: Array, spec: int | mjtState) Data[source]#

设置 mjx.Data 中的状态。这等同于 mujoco.mj_setState

参数:
  • m – 描述仿真的模型

  • d – 仿真的数据

  • state – 状态值的扁平数组

  • spec – 指定要包含哪些状态组件的整数位掩码或 mjtState 枚举

返回:

已将状态设置为所提供值的数据

state_size(m: Model, spec: int | mjtState) int[source]#

返回给定规范(spec)对应的状态向量大小。

参数:
  • m – 描述仿真的模型

  • spec – 指定要包含哪些状态组件的整数位掩码或 mjtState 枚举

返回:

状态向量的大小

passive(m: Model, d: Data) Data[source]#

添加所有被动力。

ray(m: Model, d: Data, pnt: Array, vec: Array, geomgroup: Sequence[int] = (), flg_static: bool = True, bodyexclude: Sequence[int] | int = -1) Tuple[Array, Array][source]#

返回射线与几何体相交时的几何体 ID 和距离。

参数:
  • m – MJX 模型

  • d – MJX 数据

  • pnt – 射线原点 (3,)

  • vec – 射线方向 (3,)

  • geomgroup – 组包含/排除掩码,或留空以忽略

  • flg_static – 如果为 True,则允许射线与静态几何体相交

  • bodyexclude – 忽略指定物体 ID 或物体 ID 序列上的几何体

返回:

从射线原点到几何体表面的距离(无相交时为 -1.0)以及相交几何体的 ID(无相交时为 -1)

render(m: Model, d: Data, ctx: Any) Data[source]#

渲染。

get_depth(rc: RenderContextPytree, cam_id: int, depth_data: Array, depth_scale: float) Array[source]#

提取并归一化相机的深度数据。

参数:
  • rc – RenderContextPytree。

  • cam_id – 要提取的相机索引。

  • depth_data – 原始深度输出,形状为 (…, total_pixels),类型为 float32。

  • depth_scale – 归一化深度值的比例因子。

返回:

形状为 (…, H, W, 1) 的 Float32 深度数组,钳位在 [0, 1] 之间。depth_data 中的任何前导批次轴都会被保留。

引发异常:

RuntimeError – 如果未安装 Warp。

get_rgb(rc: RenderContextPytree, cam_id: int, rgb_data: Array) Array[source]#

将 uint32 ABGR 像素数据解包为 float32 RGB。

参数:
  • rc – RenderContextPytree。

  • cam_id – 要提取的相机索引。

  • rgb_data – 打包的渲染输出,形状为 (…, total_pixels),类型为 uint32。

返回:

形状为 (…, H, W, 3) 的 Float32 RGB 数组,值在 [0, 1] 之间。rgb_data 中的任何前导批次轴都会被保留。

引发异常:

RuntimeError – 如果未安装 Warp。

sensor_acc(m: Model, d: Data) Data[source]#

计算与加速度/力相关的传感器值。

sensor_pos(m: Model, d: Data) Data[source]#

计算与位置相关的传感器值。

sensor_vel(m: Model, d: Data) Data[source]#

计算与速度相关的传感器值。

camlight(m: Model, d: Data) Data[source]#

计算相机和灯光的位置与朝向。

com_pos(m: Model, d: Data) Data[source]#

将惯性和运动自由度映射到以子树质心(CoM)为中心的全局坐标系。

com_vel(m: Model, d: Data) Data[source]#

计算 cvel 和 cdof_dot。

crb(m: Model, d: Data) Data[source]#

运行复合刚体惯性算法。

factor_m(m: Model, d: Data) Data[source]#

获取假定为对称正定(spd)的惯性矩阵 M 的分解。

kinematics(m: Model, d: Data) Data[source]#

将位置/速度从广义坐标转换为极坐标。

rne(m: Model, d: Data, flg_acc: bool = False) Data[source]#

使用递归牛顿-欧拉算法计算逆动力学。

flg_acc=False 会移除惯性项。

rne_postconstraint(m: Model, d: Data) Data[source]#

具有完整数据的 RNE:计算 cacc、cfrc_ext、cfrc_int。

subtree_vel(m: Model, d: Data) Data[source]#

子树线速度和角动量。

tendon(m: Model, d: Data) Data[source]#

计算腱长度和力矩。

tendon_armature(m: Model, d: Data) Data[source]#

将腱电枢添加到 qM。

tendon_bias(m: Model, d: Data) Data[source]#

添加由于腱电枢引起的偏置力。

transmission(m: Model, d: Data) Data[source]#

计算执行器/传动装置的长度和力矩。

solve(m: Model, d: Data) Data[source]#

使用共轭梯度下降法寻找满足约束条件的力。

apply_ft(m: Model, d: Data, force: Array, torque: Array, point: Array, body_id: Array) Array[source]#

应用笛卡尔坐标下的力和力矩。

full_m(m: Model, d: Data) Array[source]#

从 qM 重建稠密质量矩阵。

id2name(m: Model | MjModel, typ: mjtObj, i: int) str | None[source]#

获取具有指定 mjtObj 类型和 ID 的对象的名称。

有关更多信息,请参阅 mujoco.id2name。

参数:
  • m – mujoco.MjModel 或 mjx.Model

  • typ – mujoco.mjtObj 类型

  • i – ID

返回:

名称字符串,如果未找到则为 None

is_sparse(m: MjModel | Model) bool[source]#

如果此模型应创建稀疏质量矩阵,则返回 True。

参数:

m – MuJoCo 或 MJX 模型

返回:

如果提供的模型应创建稀疏质量矩阵,则返回 True

现代 TPU 拥有专门用于快速操作稀疏矩阵的硬件,而 GPU 在矩阵能放入设备内存的前提下,处理稠密矩阵的速度通常更快。因此,MJX 中的默认行为(通过 JacobianType.AUTO)是:如果 nv >= 60 或 MJX 检测到 TPU 作为默认后端,则使用稀疏矩阵,否则使用稠密矩阵。

jac(m: Model, d: Data, point: Array, body_id: Array) Tuple[Array, Array][source]#

计算附着于物体的全局点的 (NV, 3) 雅可比矩阵对。

mul_m(m: Model, d: Data, vec: Array) Array[source]#

将向量乘以惯性矩阵。

name2id(m: Model | MjModel, typ: mjtObj, name: str) int[source]#

获取具有指定 mjtObj 类型和名称的对象的 ID。

有关更多信息,请参阅 mujoco.mj_name2id。

参数:
  • m – mujoco.MjModel 或 mjx.Model

  • typ – mujoco.mjtObj 类型

  • name – 对象的名称

返回:

ID,如果未找到则为 -1

xfrc_accumulate(m: Model, d: Data) Array[source]#

将 xfrc_applied 累加到 qfrc 中。

benchmark(m: MjModel, nstep: int = 1000, batch_size: int = 1024, unroll_steps: int = 1, solver: str = 'newton', iterations: int = 1, ls_iterations: int = 4) Tuple[float, float, int][source]#

对模型进行基准测试。

class BiasType[source]#

执行器偏置类型。

NONE#

无偏置

AFFINE#

const + kp*长度 + kv*速度

MUSCLE#

由 muscle_bias 计算的肌肉被动力

class CamLightType[source]#

相机灯光类型。

FIXED#

位置和旋转固定在物体中

TRACK#

位置跟随物体,旋转固定在全局坐标系中

TRACKCOM#

位置跟随子树质心,旋转固定在物体中

TARGETBODY#

位置固定在物体中,旋转追踪目标物体

TARGETBODYCOM#

位置固定在物体中,旋转追踪目标子树质心

class ConeType[source]#

摩擦锥类型。

PYRAMIDAL#

棱锥形

ELLIPTIC#

椭圆形

class ConstraintType[source]#

约束类型。

EQUALITY#

等式约束

LIMIT_JOINT#

关节限位

LIMIT_TENDON#

腱限位

CONTACT_FRICTIONLESS#

无摩擦接触

CONTACT_PYRAMIDAL#

摩擦接触,棱锥摩擦锥

class Contact[source]#

碰撞检测函数的结果。

dist#

最近点之间的距离;负值:穿透

类型:

jax.Array

pos#

接触点位置:几何体之间的中点 (3,)

类型:

jax.Array

frame#

法线位于 [0-2] (9,)

类型:

jax.Array

includemargin#

如果 dist < includemargin = margin-gap 则包含 (1,)

类型:

jax.Array

friction#

切向 1, 2,自旋,滚动 1, 2 (5,)

类型:

jax.Array

solref#

约束求解器参考,法线方向 (mjNREF,)

类型:

jax.Array

solreffriction#

约束求解器参考,摩擦方向 (mjNREF,)

类型:

jax.Array

solimp#

约束求解器阻抗 (mjNIMP,)

类型:

jax.Array

dim#

接触空间维度:1, 3, 4 或 6

类型:

numpy.ndarray

geom1#

几何体 1 的 ID;已弃用,请使用 geom[0]

类型:

jax.Array

geom2#

几何体 2 的 ID;已弃用,请使用 geom[1]

类型:

jax.Array

geom#

几何体 ID (2,)

类型:

jax.Array

efc_address#

efc 中的地址;-1:未包含

类型:

numpy.ndarray

class ConvexMesh[source]#

凸网格的几何属性。

vert#

凸网格的顶点

类型:

jax.Array

face#

凸网格的面

类型:

jax.Array

face_normal#

面的法向量

类型:

jax.Array

edge#

凸网格中所有边的边索引

类型:

jax.Array

edge_face_normal#

edge 中与边相邻的面法线索引

类型:

jax.Array

class DataCPP[source]#

仅包含指针的最小 Data 实现。

class DataJAX[source]#

JAX 特有的数据。

class DisableBit[source]#

禁用默认功能位标志。

CONSTRAINT#

整个约束求解器

EQUALITY#

等式约束

FRICTIONLOSS#

关节和腱摩擦损耗约束

LIMIT#

关节和腱限位约束

CONTACT#

接触约束

SPRING#

被动弹簧力

DAMPER#

被动阻尼力

GRAVITY#

重力

CLAMPCTRL#

将控制限制在指定范围内

WARMSTART#

热启动约束求解器

ACTUATION#

应用驱动力

REFSAFE#

积分器安全:确保 ref[0] >= 2*timestep

SENSOR#

传感器

class DynType[source]#

执行器动力学类型。

NONE#

无内部动力学;ctrl 指定力

INTEGRATOR#

积分器:da/dt = u

FILTER#

线性滤波器:da/dt = (u-a) / tau

FILTEREXACT#

线性滤波器:da/dt = (u-a) / tau,具有精确积分

MUSCLE#

具有两个时间常数的逐段线性滤波器

class EnableBit[source]#

启用可选功能位标志。

INVDISCRETE#

离散时间逆动力学

class EqType[source]#

等式约束类型。

CONNECT#

在一个点上连接两个物体(球关节)

WELD#

固定两个物体的相对位置和朝向

JOINT#

用三次方程耦合两个标量关节的值

TENDON#

用三次方程耦合两个腱的长度

class GainType[source]#

执行器增益类型。

FIXED#

固定增益

AFFINE#

const + kp*长度 + kv*速度

MUSCLE#

由 muscle_gain 计算的肌肉 FLV 曲线

class GeomType[source]#

几何形状类型。

PLANE#

平面

HFIELD#

高度场

SPHERE#

球体 (sphere)

CAPSULE#

胶囊体

ELLIPSOID#

椭球体 (ellipsoid)

CYLINDER#

圆柱体 (cylinder)

BOX#

长方体 (box)

MESH#

mesh

SDF#

有向距离场

class Impl[source]#

要使用的实现。

class IntegratorType[source]#

积分器模式。

EULER#

半隐式欧拉

RK4#

四阶龙格-库塔

IMPLICITFAST#

速度隐式,无 RNE 导数

class JacobianType[source]#

约束雅可比矩阵类型。

DENSE#

稠密

SPARSE#

稀疏

AUTO#

如果 nv > 60 且设备是 TPU,则为稀疏,否则为稠密

class JointType[source]#

自由度类型。

FREE#

全局位置和朝向(四元数) (7,)

BALL#

相对于父级的朝向(四元数) (4,)

SLIDE#

沿物体固定轴的滑动距离 (1,)

HINGE#

绕物体固定轴的旋转角度 (弧度) (1,)

class ModelCPP[source]#

仅包含指针的最小 Model 实现。

class ModelJAX[source]#

JAX 特有的模型数据。

class ObjType[source]#

对象类型。

UNKNOWN#

未知对象类型

BODY#

body

XBODY#

主体,用于访问常规框架而不是 i-frame

GEOM#

geom

SITE#

site

CAMERA#

相机

class Option[source]#

物理选项。

class OptionJAX[source]#

JAX 特有的选项。

class PyTreeNode[source]#

应作为 JAX pytree 节点的数据类的基类。

此基类还在使用 PyType 时避免了类型检查错误。

class SensorType[source]#

传感器类型。

MAGNETOMETER#

磁力计

CAMPROJECTION#

相机投影

RANGEFINDER#

测距仪

JOINTPOS#

关节位置

TENDONPOS#

标量腱位置

ACTUATORPOS#

执行器位置

BALLQUAT#

球关节朝向

FRAMEPOS#

框架位置

FRAMEXAXIS#

框架 x 轴

FRAMEYAXIS#

框架 y 轴

FRAMEZAXIS#

框架 z 轴

FRAMEQUAT#

框架朝向,表示为四元数

SUBTREECOM#

子树质心

CLOCK#

仿真时间

VELOCIMETER#

3D 线速度,在局部坐标系中

GYRO#

3D 角速度,在局部坐标系中

JOINTVEL#

关节速度

TENDONVEL#

标量腱速度

ACTUATORVEL#

执行器速度

BALLANGVEL#

球关节角速度

FRAMELINVEL#

3D 线速度

FRAMEANGVEL#

3D 角速度

SUBTREELINVEL#

子树线速度

SUBTREEANGMOM#

子树角动量

TOUCH#

在传感器区域上求和的标量接触法向力

CONTACT#

仿真过程中发生的接触

ACCELEROMETER#

加速度计

FORCE#

force

TORQUE#

力矩

ACTUATORFRC#

标量执行器力

JOINTACTFRC#

在关节处测量的标量执行器力

TENDONACTFRC#

在腱处测量的标量执行器力

FRAMELINACC#

3D 线加速度

FRAMEANGACC#

3D 角加速度

class SolverType[source]#

约束求解器算法。

CG#

共轭梯度法(原始)

NEWTON#

牛顿法(原始)

class Statistic[source]#

模型统计信息(基于 qpos0)。

meaninertia#

平均对角惯性

类型:

jax.Array

meanmass#

平均刚体质量(未使用)

类型:

jax.Array

meansize#

平均刚体尺寸(未使用)

类型:

jax.Array

extent#

空间范围(未使用)

类型:

jax.Array

center#

模型中心(未使用)

类型:

jax.Array

class StatisticWarp[source]#

Warp 特定的模型统计信息。

class TrnType[source]#

执行器传动类型。

JOINT#

关节上的力

JOINTINPARENT#

关节上的力,以父坐标系表示

TENDON#

肌腱上的力

SITE#

位点(site)上的力

class WrapType[source]#

肌腱包裹对象类型。

JOINT#

恒定力臂

PULLEY#

用于分割肌腱的滑轮

SITE#

穿过位点(site)

SPHERE#

绕球体包裹

CYLINDER#

绕(无限)圆柱体包裹