MuJoCo Warp API#

MJWarp 的公共 API。

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

推进模拟。

class Model[source]#

模型定义和参数。

nq#

广义坐标数量

类型:

int

nv#

自由度数量

类型:

int

nu#

执行器/控制器数量

类型:

int

na#

激活状态数量

类型:

int

nbody#

刚体数量

类型:

int

noct#

所有网格中的八叉树单元总数

类型:

int

njnt#

关节数量

类型:

int

nM#

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

类型:

int

nC#

稀疏刚体-自由度矩阵中的非零元素数量

类型:

int

ngeom#

几何体数量

类型:

int

nsite#

位点数量

类型:

int

ncam#

相机数量

类型:

int

nlight#

光源数量

类型:

int

nflex#

柔性体数量

类型:

int

nflexvert#

所有柔性体中的顶点数量

类型:

int

nflexedge#

所有柔性体中的边数量

类型:

int

nflexelem#

所有柔性体中的元素数量

类型:

int

nflexelemdata#

所有柔性体中的元素顶点 ID 数量

类型:

int

nflexelemedge#

所有柔性体中的元素边 ID 数量

类型:

int

nmesh#

网格数量

类型:

int

nmeshvert#

所有网格的顶点数量

类型:

int

nmeshnormal#

所有网格中的法线数量

类型:

int

nmeshface#

所有网格的面数量

类型:

int

nmeshgraph#

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

类型:

int

nmeshpoly#

所有网格中的多边形数量

类型:

int

nmeshpolyvert#

所有多边形中的顶点数量

类型:

int

nmeshpolymap#

顶点图中的多边形数量

类型:

int

nhfield#

高度场数量

类型:

int

nhfielddata#

高程数据大小

类型:

int

nmat#

材质数量

类型:

int

npair#

预定义几何体对数量

类型:

int

nexclude#

排除的几何体对数量

类型:

int

neq#

等式约束数量

类型:

int

ntendon#

筋腱数量

类型:

int

nwrap#

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

类型:

int

nsensor#

传感器数量

类型:

int

nmocap#

动作捕捉刚体数量

类型:

int

nplugin#

插件实例数量

类型:

int

ngravcomp#

具有非零 gravcomp 的刚体数量

类型:

int

nsensordata#

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

类型:

int

opt#

物理选项

类型:

mujoco_warp._src.types.Option

stat#

模型统计信息

类型:

mujoco_warp._src.types.Statistic

qpos0#

默认姿态下的 qpos 值 (*, nq)

类型:

array(ndim=2, dtype=float32)

qpos_spring#

弹簧的参考姿态 (*, nq)

类型:

array(ndim=2, dtype=float32)

body_parentid#

刚体的父级 ID (nbody,)

类型:

array(ndim=1, dtype=int32)

body_rootid#

刚体上方的根 ID (nbody,)

类型:

array(ndim=1, dtype=int32)

body_weldid#

该刚体焊接到的刚体 ID (nbody,)

类型:

array(ndim=1, dtype=int32)

body_mocapid#

动作捕捉数据 ID;-1: 无 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_jntnum#

该刚体的关节数量 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_jntadr#

关节的起始地址;-1: 无关节 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_dofnum#

运动自由度数量 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_dofadr#

自由度的起始地址;-1: 无自由度 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_geomnum#

几何体数量 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_geomadr#

几何体的起始地址;-1: 无几何体 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_pos#

相对于父刚体的位置偏移 (*, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

body_quat#

相对于父刚体的方向偏移 (*, nbody, 4)

类型:

array(ndim=2, dtype=quatf)

body_ipos#

质心的局部位置 (*, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

body_iquat#

惯性椭球的局部方向 (*, nbody, 4)

类型:

array(ndim=2, dtype=quatf)

body_mass#

质量 (*, nbody,)

类型:

array(ndim=2, dtype=float32)

body_subtreemass#

从该刚体开始的子树质量 (*, nbody,)

类型:

array(ndim=2, dtype=float32)

body_inertia#

ipos/iquat 坐标系中的对角惯性 (*, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

body_invweight0#

qpos0 中的平均逆惯性 (trn, rot) (*, nbody, 2)

类型:

array(ndim=2, dtype=vec2f)

body_gravcomp#

反重力,以刚体重量为单位 (*, nbody)

类型:

array(ndim=2, dtype=float32)

body_contype#

所有几何体 contype 的 OR 运算结果 (nbody,)

类型:

array(ndim=1, dtype=int32)

body_conaffinity#

所有几何体 conaffinity 的 OR 运算结果 (nbody,)

类型:

array(ndim=1, dtype=int32)

oct_child#

八叉树子节点 (noct, 8)

类型:

array(ndim=1, dtype=vector(length=8, dtype=int32))

oct_aabb#

八叉树轴对齐包围盒 (noct, 2, 3)

类型:

array(ndim=2, dtype=vec3f)

oct_coeff#

八叉树插值系数 (noct, 8)

类型:

array(ndim=1, dtype=vector(length=8, dtype=float32))

jnt_type#

关节类型 (JointType) (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_qposadr#

关节数据在 ‘qpos’ 中的起始地址 (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_dofadr#

关节数据在 ‘qvel’ 中的起始地址 (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_bodyid#

关节所属刚体的 ID (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_limited#

关节是否有约束 (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_actfrclimited#

关节是否有执行器力约束 (njnt,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

jnt_actgravcomp#

重力补偿力是否通过执行器施加 (njnt,)

类型:

array(ndim=1, dtype=int32)

jnt_solref#

约束求解器参考:约束 (*, njnt, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

jnt_solimp#

约束求解器阻抗:约束 (*, njnt, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

jnt_pos#

局部锚点位置 (*, njnt, 3)

类型:

array(ndim=2, dtype=vec3f)

jnt_axis#

局部关节轴 (*, njnt, 3)

类型:

array(ndim=2, dtype=vec3f)

jnt_stiffness#

刚度系数 (*, njnt)

类型:

array(ndim=2, dtype=float32)

jnt_range#

关节约束 (*, njnt, 2)

类型:

array(ndim=2, dtype=vec2f)

jnt_actfrcrange#

总执行器力的范围 (*, njnt, 2)

类型:

array(ndim=2, dtype=vec2f)

jnt_margin#

用于约束检测的最小距离 (*, njnt)

类型:

array(ndim=2, dtype=float32)

dof_bodyid#

自由度所属刚体的 ID (nv,)

类型:

array(ndim=1, dtype=int32)

dof_jntid#

自由度所属关节的 ID (nv,)

类型:

array(ndim=1, dtype=int32)

dof_parentid#

自由度的父级 ID;-1: 无 (nv,)

类型:

array(ndim=1, dtype=int32)

dof_Madr#

M-对角线中的自由度地址 (nv,)

类型:

array(ndim=1, dtype=int32)

dof_solref#

约束求解器参考:摩擦损失 (*, nv, NREF)

类型:

array(ndim=2, dtype=vec2f)

dof_solimp#

约束求解器阻抗:摩擦损失 (*, nv, NIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

dof_frictionloss#

自由度摩擦损失 (*, nv)

类型:

array(ndim=2, dtype=float32)

dof_armature#

自由度电枢惯性/质量 (*, nv)

类型:

array(ndim=2, dtype=float32)

dof_damping#

阻尼系数 (*, nv)

类型:

array(ndim=2, dtype=float32)

dof_invweight0#

qpos0 中的对角逆惯性 (*, nv)

类型:

array(ndim=2, dtype=float32)

geom_type#

几何类型 (GeomType) (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_contype#

几何体接触类型 (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_conaffinity#

几何体接触亲和性 (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_condim#

接触维度 (1, 3, 4, 6) (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_bodyid#

几何体所属刚体的 ID (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_dataid#

几何体网格/高度场的 ID;-1: 无 (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_matid#

用于渲染的材质 ID (*, ngeom,)

类型:

array(ndim=2, dtype=int32)

geom_group#

geom_group#

类型:

array(ndim=1, dtype=int32)

geom_priority#

几何体接触优先级 (ngeom,)

类型:

array(ndim=1, dtype=int32)

geom_solmix#

几何体对中 solref/imp 的混合系数 (*, ngeom,)

类型:

array(ndim=2, dtype=float32)

geom_solref#

约束求解器参考:接触 (*, ngeom, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

geom_solimp#

约束求解器阻抗:接触 (*, ngeom, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

geom_size#

几何体特定的尺寸参数 (*, ngeom, 3)

类型:

array(ndim=2, dtype=vec3f)

geom_aabb#

包围盒, (中心, 尺寸) (*, ngeom, 2, 3)

类型:

array(ndim=3, dtype=vec3f)

geom_rbound#

包围球半径 (*, ngeom,)

类型:

array(ndim=2, dtype=float32)

geom_pos#

相对于刚体的局部位置偏移 (*, ngeom, 3)

类型:

array(ndim=2, dtype=vec3f)

geom_quat#

相对于刚体的局部方向偏移 (*, ngeom, 4)

类型:

array(ndim=2, dtype=quatf)

geom_friction#

(滑动、自旋、滚动) 的摩擦系数 (*, ngeom, 3)

类型:

array(ndim=2, dtype=vec3f)

geom_margin#

如果 dist

类型:

array(ndim=2, dtype=float32)

geom_gap#

如果 dist

类型:

array(ndim=2, dtype=float32)

geom_fluid#

流体相互作用参数 (ngeom, mjNFLUID)

类型:

array(ndim=2, dtype=float32)

geom_rgba#

未指定材质时的 rgba (*, ngeom, 4)

类型:

array(ndim=2, dtype=vec4f)

site_type#

用于渲染的几何体类型 (GeomType) (nsite,)

类型:

array(ndim=1, dtype=int32)

site_bodyid#

位点所属刚体的 ID (nsite,)

类型:

array(ndim=1, dtype=int32)

site_size#

用于渲染的几何体尺寸 (nsite, 3)

类型:

array(ndim=1, dtype=vec3f)

site_pos#

相对于刚体的局部位置偏移 (*, nsite, 3)

类型:

array(ndim=2, dtype=vec3f)

site_quat#

相对于刚体的局部方向偏移 (*, nsite, 4)

类型:

array(ndim=2, dtype=quatf)

cam_mode#

相机跟踪模式 (CamLightType) (ncam,)

类型:

array(ndim=1, dtype=int32)

cam_bodyid#

相机所属刚体的 ID (ncam,)

类型:

array(ndim=1, dtype=int32)

cam_targetbodyid#

目标刚体的 ID;-1: 无 (ncam,)

类型:

array(ndim=1, dtype=int32)

cam_pos#

相对于刚体坐标系的位置 (*, ncam, 3)

类型:

array(ndim=2, dtype=vec3f)

cam_quat#

相对于刚体坐标系的方向 (*, ncam, 4)

类型:

array(ndim=2, dtype=quatf)

cam_poscom0#

qpos0 中相对于子质心的全局位置 (*, ncam, 3)

类型:

array(ndim=2, dtype=vec3f)

cam_pos0#

qpos0 中相对于刚体的全局位置 (*, ncam, 3)

类型:

array(ndim=2, dtype=vec3f)

cam_mat0#

qpos0 中的全局方向 (*, ncam, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

cam_fovy#

y 视场 (正交投影 ? 长度 : 角度) (ncam,)

类型:

array(ndim=1, dtype=float32)

cam_resolution#

分辨率: 像素 [宽度, 高度] (ncam, 2)

类型:

array(ndim=1, dtype=vec2i)

cam_sensorsize#

传感器尺寸: 长度 [宽度, 高度] (ncam, 2)

类型:

array(ndim=1, dtype=vec2f)

cam_intrinsic#

[焦距; 主点] (ncam, 4)

类型:

array(ndim=1, dtype=vec4f)

light_mode#

光源跟踪模式 (CamLightType) (nlight,)

类型:

array(ndim=1, dtype=int32)

light_bodyid#

光源所属刚体的 ID (nlight,)

类型:

array(ndim=1, dtype=int32)

light_targetbodyid#

目标刚体的 ID;-1: 无 (nlight,)

类型:

array(ndim=1, dtype=int32)

light_type#

聚光灯、平行光等 (mjtLightType) (*, nlight)

类型:

array(ndim=2, dtype=int32)

light_castshadow#

光源是否投射阴影 (*, nlight)

类型:

array(ndim=2, dtype=warp._src.types.bool)

light_active#

光源是否激活 (*, nlight)

类型:

array(ndim=2, dtype=warp._src.types.bool)

light_pos#

相对于刚体坐标系的位置 (*, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

light_dir#

相对于刚体坐标系的方向 (*, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

light_poscom0#

qpos0 中相对于子质心的全局位置 (*, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

light_pos0#

qpos0 中相对于刚体的全局位置 (*, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

light_dir0#

qpos0 中的全局方向 (*, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

flex_dim#

1: 线, 2: 三角形, 3: 四面体 (nflex,)

类型:

array(ndim=1, dtype=int32)

flex_vertadr#

第一个顶点地址 (nflex,)

类型:

array(ndim=1, dtype=int32)

flex_vertnum#

顶点数量 (nflex,)

类型:

array(ndim=1, dtype=int32)

flex_edgeadr#

第一条边地址 (nflex,)

类型:

array(ndim=1, dtype=int32)

flex_elemedgeadr#

第一个元素地址 (nflex,)

类型:

array(ndim=1, dtype=int32)

flex_vertbodyid#

顶点刚体 ID (nflexvert,)

类型:

array(ndim=1, dtype=int32)

flex_edge#

边顶点 ID (每条边 2 个) (nflexedge, 2)

类型:

array(ndim=1, dtype=vec2i)

flex_edgeflap#

相邻顶点 ID (仅 dim=2) (nflexedge, 2)

类型:

array(ndim=1, dtype=vec2i)

flex_elem#

元素顶点 ID (每个元素 dim+1 个) (nflexelemdata,)

类型:

array(ndim=1, dtype=int32)

flex_elemedge#

元素边 ID (nflexelemedge,)

类型:

array(ndim=1, dtype=int32)

flexedge_length0#

qpos0 中的边长 (nflexedge,)

类型:

array(ndim=1, dtype=float32)

flex_stiffness#

有限元刚度矩阵 (nflexelem, 21)

类型:

array(ndim=2, dtype=float32)

flex_bending#

弯曲刚度 (nflexedge, 17)

类型:

array(ndim=2, dtype=float32)

flex_damping#

瑞利阻尼系数 (nflex,)

类型:

array(ndim=1, dtype=float32)

mesh_vertadr#

第一个顶点地址 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_vertnum#

顶点数量 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_faceadr#

第一个面地址 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_normaladr#

第一个法线地址 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_graphadr#

图形数据地址;-1: 无图形 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_vert#

所有网格的顶点位置 (nmeshvert, 3)

类型:

array(ndim=1, dtype=vec3f)

mesh_normal#

所有网格的法线 (nmeshnormal, 3)

类型:

array(ndim=1, dtype=vec3f)

mesh_face#

所有网格的面索引 (nface, 3)

类型:

array(ndim=1, dtype=vec3i)

mesh_graph#

凸图数据 (nmeshgraph,)

类型:

array(ndim=1, dtype=int32)

mesh_quat#

应用于资源顶点的旋转 (nmesh, 4)

类型:

array(ndim=1, dtype=quatf)

mesh_polynum#

每个网格的多边形数量 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_polyadr#

每个网格的第一个多边形地址 (nmesh,)

类型:

array(ndim=1, dtype=int32)

mesh_polynormal#

所有多边形法线 (nmeshpoly, 3)

类型:

array(ndim=1, dtype=vec3f)

mesh_polyvertadr#

多边形顶点起始地址 (nmeshpoly,)

类型:

array(ndim=1, dtype=int32)

mesh_polyvertnum#

每个多边形的顶点数量 (nmeshpoly,)

类型:

array(ndim=1, dtype=int32)

mesh_polyvert#

所有多边形顶点 (nmeshpolyvert,)

类型:

array(ndim=1, dtype=int32)

mesh_polymapadr#

每个顶点的第一个多边形地址 (nmeshvert,)

类型:

array(ndim=1, dtype=int32)

mesh_polymapnum#

每个顶点的多边形数量 (nmeshvert,)

类型:

array(ndim=1, dtype=int32)

mesh_polymap#

顶点到多边形的映射 (nmeshpolymap,)

类型:

array(ndim=1, dtype=int32)

hfield_size#

(x, y, z_top, z_bottom) (nhfield, 4)

类型:

array(ndim=1, dtype=vec4f)

hfield_nrow#

网格中的行数 (nhfield,)

类型:

array(ndim=1, dtype=int32)

hfield_ncol#

网格中的列数 (nhfield,)

类型:

array(ndim=1, dtype=int32)

hfield_adr#

hfield_data 中的起始地址 (nhfield,)

类型:

array(ndim=1, dtype=int32)

hfield_data#

高程数据 (nhfielddata,)

类型:

array(ndim=1, dtype=float32)

mat_texid#

用于渲染的纹理 ID (nmat, mjNTEXROLE)

类型:

array(ndim=2, dtype=int32)

mat_texrepeat#

用于渲染的纹理重复 (*, nmat, 2)

类型:

array(ndim=2, dtype=vec2f)

mat_rgba#

rgba (*, nmat, 4)

类型:

array(ndim=2, dtype=vec4f)

pair_dim#

接触维度 (npair,)

类型:

array(ndim=1, dtype=int32)

pair_geom1#

几何体1 的 ID (npair,)

类型:

array(ndim=1, dtype=int32)

pair_geom2#

几何体2 的 ID (npair,)

类型:

array(ndim=1, dtype=int32)

pair_solref#

求解器参考:接触法线 (*, npair, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

pair_solreffriction#

求解器参考:接触摩擦 (*, npair, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

pair_solimp#

求解器阻抗:接触 (*, npair, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

pair_margin#

如果 dist

类型:

array(ndim=2, dtype=float32)

pair_gap#

如果 dist

类型:

array(ndim=2, dtype=float32)

pair_friction#

tangent1, 2, spin, roll1, 2 (*, npair, 5)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

exclude_signature#

body1 << 16 + body2 (nexclude,)

类型:

array(ndim=1, dtype=int32)

eq_type#

约束类型 (EqType) (neq,)

类型:

array(ndim=1, dtype=int32)

eq_obj1id#

对象 1 的 ID (neq,)

类型:

array(ndim=1, dtype=int32)

eq_obj2id#

对象 2 的 ID (neq,)

类型:

array(ndim=1, dtype=int32)

eq_objtype#

两个对象的类型 (ObjType) (neq,)

类型:

array(ndim=1, dtype=int32)

eq_active0#

初始启用/禁用约束状态 (neq,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

eq_solref#

约束求解器参考 (*, neq, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

eq_solimp#

约束求解器阻抗 (*, neq, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

eq_data#

约束的数值数据 (*, neq, mjNEQDATA)

类型:

array(ndim=2, dtype=vector(length=11, dtype=float32))

tendon_adr#

筋腱路径中第一个对象的地址 (ntendon,)

类型:

array(ndim=1, dtype=int32)

tendon_num#

筋腱路径中的对象数量 (ntendon,)

类型:

array(ndim=1, dtype=int32)

tendon_limited#

筋腱是否有长度限制 (ntendon,)

类型:

array(ndim=1, dtype=int32)

tendon_actfrclimited#

筋腱是否有执行器力限制 (ntendon,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

tendon_solref_lim#

约束求解器参考:限制 (*, ntendon, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

tendon_solimp_lim#

约束求解器阻抗:限制 (*, ntendon, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

tendon_solref_fri#

约束求解器参考:摩擦 (*, ntendon, mjNREF)

类型:

array(ndim=2, dtype=vec2f)

tendon_solimp_fri#

约束求解器阻抗:摩擦 (*, ntendon, mjNIMP)

类型:

array(ndim=2, dtype=vector(length=5, dtype=float32))

tendon_range#

筋腱长度限制 (*, ntendon, 2)

类型:

array(ndim=2, dtype=vec2f)

tendon_actfrcrange#

总执行器力的范围 (*, ntendon, 2)

类型:

array(ndim=2, dtype=vec2f)

tendon_margin#

用于限制检测的最小距离 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_stiffness#

刚度系数 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_damping#

阻尼系数 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_armature#

与筋腱速度相关的惯性 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_frictionloss#

由摩擦引起的损失 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_lengthspring#

弹簧静息长度范围 (*, ntendon, 2)

类型:

array(ndim=2, dtype=vec2f)

tendon_length0#

qpos0 中的筋腱长度 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

tendon_invweight0#

qpos0 中的逆权重 (*, ntendon)

类型:

array(ndim=2, dtype=float32)

wrap_type#

包裹对象类型 (WrapType) (nwrap,)

类型:

array(ndim=1, dtype=int32)

wrap_objid#

对象 ID: geom, site, joint (nwrap,)

类型:

array(ndim=1, dtype=int32)

wrap_prm#

除数、关节系数或位点 ID (nwrap,)

类型:

array(ndim=1, dtype=float32)

actuator_trntype#

传动类型 (TrnType) (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_dyntype#

动力学类型 (DynType) (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_gaintype#

增益类型 (GainType) (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_biastype#

偏置类型 (BiasType) (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_trnid#

传动 ID: joint, tendon, site (nu, 2)

类型:

array(ndim=1, dtype=vec2i)

actuator_actadr#

第一个激活地址;-1: 无状态 (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_actnum#

激活变量数量 (nu,)

类型:

array(ndim=1, dtype=int32)

actuator_ctrllimited#

控制是否受限 (nu,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

actuator_forcelimited#

力是否受限 (nu,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

actuator_actlimited#

激活是否受限 (nu,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

actuator_dynprm#

动力学参数 (*, nu, mjNDYN)

类型:

array(ndim=2, dtype=vector(length=10, dtype=float32))

actuator_gainprm#

增益参数 (*, nu, mjNGAIN)

类型:

array(ndim=2, dtype=vector(length=10, dtype=float32))

actuator_biasprm#

偏置参数 (*, nu, mjNBIAS)

类型:

array(ndim=2, dtype=vector(length=10, dtype=float32))

actuator_actearly#

在力之前步进激活 (nu,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

actuator_ctrlrange#

控制范围 (*, nu, 2)

类型:

array(ndim=2, dtype=vec2f)

actuator_forcerange#

力范围 (*, nu, 2)

类型:

array(ndim=2, dtype=vec2f)

actuator_actrange#

激活范围 (*, nu, 2)

类型:

array(ndim=2, dtype=vec2f)

actuator_gear#

缩放长度和传递的力 (*, nu, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

actuator_cranklength#

滑块-曲柄的曲柄长度 (nu,)

类型:

array(ndim=1, dtype=float32)

actuator_acc0#

qpos0 中单位力的加速度 (nu,)

类型:

array(ndim=1, dtype=float32)

actuator_lengthrange#

可行的执行器长度范围 (nu, 2)

类型:

array(ndim=1, dtype=vec2f)

sensor_type#

传感器类型 (SensorType) (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_datatype#

数值数据类型 (DataType) (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_objtype#

传感器化对象的类型 (ObjType) (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_objid#

传感器化对象的 ID (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_reftype#

参考坐标系的类型 (ObjType) (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_refid#

参考坐标系的 ID;-1: 全局坐标系 (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_intprm#

传感器参数 (nsensor, mjNSENS)

类型:

array(ndim=2, dtype=int32)

sensor_dim#

标量输出数量 (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_adr#

传感器阵列中的地址 (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_cutoff#

实数和正数的截止值;0: 忽略 (nsensor,)

类型:

array(ndim=1, dtype=float32)

plugin#

全局注册的插件槽号 (nplugin,)

类型:

array(ndim=1, dtype=int32)

plugin_attr#

几何体插件的配置属性 (nplugin, 3)

类型:

array(ndim=1, dtype=vec3f)

M_rownnz#

qM 每行中的非零元素数量 (nv,)

类型:

array(ndim=1, dtype=int32)

M_rowadr#

qM 中每行的索引 (nv,)

类型:

array(ndim=1, dtype=int32)

M_colind#

qM 中非零元素的列索引 (nM,)

类型:

array(ndim=1, dtype=int32)

mapM2M#

从 M (旧版) 到 M (CSR) 的索引映射 (nC)

类型:

array(ndim=1, dtype=int32)

nacttrnbody#

具有刚体传动的执行器数量

类型:

int

nsensorcollision#

几何体距离传感器的唯一碰撞数量

类型:

int

nsensortaxel#

所有触觉传感器中的触觉像素数量

类型:

int

nsensorcontact#

接触传感器数量

类型:

int

nrangefinder#

测距仪传感器数量

类型:

int

nmaxcondim#

几何体的最大 condim

类型:

int

nmaxpyramid#

金字塔方向的最大数量

类型:

int

nmaxpolygon#

每个多边形的最大顶点数

类型:

int

nmaxmeshdeg#

每个顶点的最大多边形数

类型:

int

has_sdf_geom#

模型是否包含 SDF 几何体

类型:

bool

block_dim#

块维度选项

类型:

mujoco_warp._src.types.BlockDim

body_tree#

按树级别排列的刚体 ID 列表

类型:

tuple[array(ndim=1, dtype=int32), …]

mocap_bodyid#

动作捕捉的刚体 ID (nmocap,)

类型:

array(ndim=1, dtype=int32)

body_fluid_ellipsoid#

刚体是否使用椭球流体 (nbody,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

jnt_limited_slide_hinge_adr#

受限/滑动/铰链 jntadr

类型:

array(ndim=1, dtype=int32)

jnt_limited_ball_adr#

受限/球 jntadr

类型:

array(ndim=1, dtype=int32)

dof_tri_row#

自由度下三角行 (用于求解器)

类型:

array(ndim=1, dtype=int32)

dof_tri_col#

自由度下三角列 (用于求解器)

类型:

array(ndim=1, dtype=int32)

nxn_geom_pair#

碰撞对几何体 ID [-2, ngeom-1]

类型:

array(ndim=1, dtype=vec2i)

nxn_geom_pair_filtered#

有效碰撞对几何体 ID [-1, ngeom - 1]

类型:

array(ndim=1, dtype=vec2i)

nxn_pairid#
接触对 ID,如果未预定义则为 -1,

如果跳过则为 -2

碰撞 ID,否则为 -1

类型:

array(ndim=1, dtype=vec2i)

nxn_pairid_filtered#

nxn_pairid 的活动子集

类型:

array(ndim=1, dtype=vec2i)

geom_pair_type_count#

每种潜在碰撞的最大数量计数

类型:

tuple[int, …]

geom_plugin_index#

插件数组中的几何体索引 (ngeom,)

类型:

array(ndim=1, dtype=int32)

eq_connect_adr#

类型为 CONNECT 的 eq_* 地址

类型:

array(ndim=1, dtype=int32)

eq_wld_adr#

类型为 WELD 的 eq_* 地址

类型:

array(ndim=1, dtype=int32)

eq_jnt_adr#

类型为 JOINT 的 eq_* 地址

类型:

array(ndim=1, dtype=int32)

eq_ten_adr#

类型为 TENDON 的 eq_* 地址

类型:

array(ndim=1, dtype=int32)

tendon_jnt_adr#

关节筋腱地址

类型:

array(ndim=1, dtype=int32)

tendon_site_pair_adr#

位点对筋腱地址

类型:

array(ndim=1, dtype=int32)

tendon_geom_adr#

几何体筋腱地址

类型:

array(ndim=1, dtype=int32)

tendon_limited_adr#

受限筋腱的地址

类型:

array(ndim=1, dtype=int32)

ten_wrapadr_site#

位点的包裹对象起始地址

类型:

array(ndim=1, dtype=int32)

ten_wrapnum_site#

每个筋腱的位点包裹对象数量

类型:

array(ndim=1, dtype=int32)

wrap_jnt_adr#

关节筋腱包裹对象的地址

类型:

array(ndim=1, dtype=int32)

wrap_site_adr#

位点筋腱包裹对象的地址

类型:

array(ndim=1, dtype=int32)

wrap_site_pair_adr#

位点包裹对的第一个地址

类型:

array(ndim=1, dtype=int32)

wrap_geom_adr#

几何体筋腱包裹对象的地址

类型:

array(ndim=1, dtype=int32)

wrap_pulley_scale#

滑轮缩放 (nwrap,)

类型:

array(ndim=1, dtype=float32)

actuator_trntype_body_adr#

具有刚体传动的执行器地址

类型:

array(ndim=1, dtype=int32)

sensor_pos_adr#

位置传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_limitpos_adr#

极限位置传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_vel_adr#

速度传感器的地址 (不包括极限速度传感器)

类型:

array(ndim=1, dtype=int32)

sensor_limitvel_adr#

极限速度传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_acc_adr#

加速度传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_rangefinder_adr#

测距仪传感器的地址

类型:

array(ndim=1, dtype=int32)

rangefinder_sensor_adr#

将传感器 ID 映射到测距仪 ID (不包括触摸传感器) (不包括极限力传感器)

类型:

array(ndim=1, dtype=int32)

sensor_collision_start_adr#

传感器在碰撞中的第一个项目的地址

类型:

array(ndim=1, dtype=int32)

collision_sensor_adr#

将传感器 ID 映射到碰撞 ID (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_touch_adr#

触摸传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_limitfrc_adr#

极限力传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_e_potential#

评估 energy_pos

类型:

bool

sensor_e_kinetic#

评估 energy_vel

类型:

bool

sensor_tendonactfrc_adr#

tendonactfrc 传感器的地址

类型:

array(ndim=1, dtype=int32)

sensor_subtree_vel#

评估 subtree_vel

类型:

bool

sensor_contact_adr#

接触传感器的地址 (nsensorcontact,)

类型:

array(ndim=1, dtype=int32)

sensor_adr_to_contact_adr#

将传感器地址映射到接触地址 (nsensor,)

类型:

array(ndim=1, dtype=int32)

sensor_rne_postconstraint#

评估 rne_postconstraint

类型:

bool

sensor_rangefinder_bodyid#

测距仪的 bodyid (nrangefinder,)

类型:

array(ndim=1, dtype=int32)

taxel_vertadr#

触觉传感器顶点地址 (nsensortaxel,)

类型:

array(ndim=1, dtype=int32)

taxel_sensorid#

触觉传感器的地址

类型:

array(ndim=1, dtype=int32)

qM_tiles#

分块配置

类型:

tuple[mujoco_warp._src.types.TileSet, …]

qLD_updates#

用于稀疏分解的索引三元组元组

类型:

tuple[array(ndim=1, dtype=vec3i), …]

qM_fullm_i#

稀疏质量矩阵寻址

类型:

array(ndim=1, dtype=int32)

qM_fullm_j#

稀疏质量矩阵寻址

类型:

array(ndim=1, dtype=int32)

qM_mulm_i#

稀疏矩阵乘法寻址

类型:

array(ndim=1, dtype=int32)

qM_mulm_j#

稀疏矩阵乘法寻址

类型:

array(ndim=1, dtype=int32)

qM_madr_ij#

稀疏矩阵乘法寻址

类型:

array(ndim=1, dtype=int32)

class Data[source]#

每步更新的动态状态。

solver_niter#

求解器迭代次数 (nworld,)

类型:

array(ndim=1, dtype=int32)

ne#

等式约束数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

nf#

摩擦约束数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

nl#

极限约束数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

nefc#

约束数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

time#

模拟时间 (nworld,)

类型:

array(ndim=1, dtype=float32)

energy#

势能、动能 (nworld, 2)

类型:

array(ndim=1, dtype=vec2f)

qpos#

位置 (nworld, nq)

类型:

array(ndim=2, dtype=float32)

qvel#

速度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

act#

执行器激活 (nworld, na)

类型:

array(ndim=2, dtype=float32)

qacc_warmstart#

用于热启动的加速度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

ctrl#

控制 (nworld, nu)

类型:

array(ndim=2, dtype=float32)

qfrc_applied#

施加的广义力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

xfrc_applied#

施加的笛卡尔力/扭矩 (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

eq_active#

启用/禁用约束 (nworld, neq)

类型:

array(ndim=2, dtype=warp._src.types.bool)

mocap_pos#

动作捕捉刚体的位置 (nworld, nmocap, 3)

类型:

array(ndim=2, dtype=vec3f)

mocap_quat#

动作捕捉刚体的方向 (nworld, nmocap, 4)

类型:

array(ndim=2, dtype=quatf)

qacc#

加速度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

act_dot#

执行器激活的时间导数 (nworld, na)

类型:

array(ndim=2, dtype=float32)

sensordata#

传感器数据数组 (nworld, nsensordata,)

类型:

array(ndim=2, dtype=float32)

xpos#

刚体坐标系的笛卡尔位置 (nworld, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

xquat#

物体框架的笛卡尔方向 (nworld, nbody, 4)

类型:

array(ndim=2, dtype=quatf)

xmat#

物体框架的笛卡尔方向 (nworld, nbody, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

xipos#

物体质心的笛卡尔位置 (nworld, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

ximat#

物体惯性的笛卡尔方向 (nworld, nbody, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

xanchor#

关节锚点的笛卡尔位置 (nworld, njnt, 3)

类型:

array(ndim=2, dtype=vec3f)

xaxis#

笛卡尔关节轴 (nworld, njnt, 3)

类型:

array(ndim=2, dtype=vec3f)

geom_xpos#

几何体的笛卡尔位置 (nworld, ngeom, 3)

类型:

array(ndim=2, dtype=vec3f)

geom_xmat#

几何体的笛卡尔方向 (nworld, ngeom, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

site_xpos#

站点的笛卡尔位置 (nworld, nsite, 3)

类型:

array(ndim=2, dtype=vec3f)

site_xmat#

站点的笛卡尔方向 (nworld, nsite, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

cam_xpos#

相机的笛卡尔位置 (nworld, ncam, 3)

类型:

array(ndim=2, dtype=vec3f)

cam_xmat#

相机的笛卡尔方向 (nworld, ncam, 3, 3)

类型:

array(ndim=2, dtype=mat33(f))

light_xpos#

光源的笛卡尔位置 (nworld, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

light_xdir#

光源的笛卡尔方向 (nworld, nlight, 3)

类型:

array(ndim=2, dtype=vec3f)

subtree_com#

每个子树的质心 (nworld, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

cdof#

每个自由度的基于质心的运动轴 (旋转:线性) (nworld, nv, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

cinert#

基于质心的物体惯性和质量 (nworld, nbody, 10)

类型:

array(ndim=2, dtype=vector(length=10, dtype=float32))

flexvert_xpos#

柔性顶点的笛卡尔位置 (nworld, nflexvert, 3)

类型:

array(ndim=2, dtype=vec3f)

flexedge_length#

柔性边的长度 (nworld, nflexedge, 1)

类型:

array(ndim=2, dtype=float32)

ten_wrapadr#

肌腱路径的起始地址 (nworld, ntendon)

类型:

array(ndim=2, dtype=int32)

ten_wrapnum#

路径中包裹点的数量 (nworld, ntendon)

类型:

array(ndim=2, dtype=int32)

ten_J#

肌腱雅可比矩阵 (nworld, ntendon, nv)

类型:

array(ndim=3, dtype=float32)

ten_length#

肌腱长度 (nworld, ntendon)

类型:

array(ndim=2, dtype=float32)

wrap_obj#

geomid;-1: site;-2: pulley (nworld, nwrap, 2)

类型:

array(ndim=2, dtype=vec2i)

wrap_xpos#

所有路径中的笛卡尔 3D 点 (nworld, nwrap, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

actuator_length#

执行器长度 (nworld, nu)

类型:

array(ndim=2, dtype=float32)

actuator_moment#

执行器力矩 (nworld, nu, nv)

类型:

array(ndim=3, dtype=float32)

crb#

基于质心的复合惯性和质量 (nworld, nbody, 10)

类型:

array(ndim=2, dtype=vector(length=10, dtype=float32))

qM#

总惯性 (nworld, nv, nv) 如果是稠密矩阵 (nworld, 1, nM) 如果是稀疏矩阵

类型:

array(ndim=3, dtype=float32)

qLD#

M 的 L’*D*L 分解 (nworld, nv, nv) 如果是稠密矩阵 (nworld, 1, nC) 如果是稀疏矩阵

类型:

array(ndim=3, dtype=float32)

qLDiagInv#

1/diag(D) (nworld, nv)

类型:

array(ndim=2, dtype=float32)

flexedge_velocity#

柔性边的速度 (nworld, nflexedge,)

类型:

array(ndim=2, dtype=float32)

ten_velocity#

肌腱速度 (nworld, ntendon)

类型:

array(ndim=2, dtype=float32)

actuator_velocity#

执行器速度 (nworld, nu)

类型:

array(ndim=2, dtype=float32)

cvel#

基于质心的速度 (旋转:线性) (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

cdof_dot#

cdof 的时间导数 (旋转:线性) (nworld, nv, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

qfrc_bias#

C(qpos,qvel) (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_spring#

被动弹簧力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_damper#

被动阻尼力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_gravcomp#

被动重力补偿力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_fluid#

被动流体力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_passive#

总被动力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

subtree_linvel#

子树质心的线速度 (nworld, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

subtree_angmom#

关于子树质心的角动量 (nworld, nbody, 3)

类型:

array(ndim=2, dtype=vec3f)

actuator_force#

驱动空间中的执行器力 (nworld, nu)

类型:

array(ndim=2, dtype=float32)

qfrc_actuator#

执行器力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_smooth#

净无约束力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qacc_smooth#

无约束加速度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_constraint#

约束力 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

qfrc_inverse#

净外力;应等于:(nworld, nv) qfrc_applied + J.T @ xfrc_applied + qfrc_actuator

类型:

array(ndim=2, dtype=float32)

cacc#

基于质心的加速度 (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

cfrc_int#

与父物体之间基于质心的相互作用力 (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

cfrc_ext#

作用在物体上的基于质心的外力 (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

contact#

接触数据

类型:

mujoco_warp._src.types.Contact

efc#

约束数据

类型:

mujoco_warp._src.types.Constraint

nworld#

世界数量

类型:

int

naconmax#

最大接触数(所有世界共享)

类型:

int

njmax#

每个世界的最大约束数

类型:

int

nacon#

检测到的接触数(所有世界总和)(1,)

类型:

array(ndim=1, dtype=int32)

ne_connect#

连接等式约束的数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

ne_weld#

焊接等式约束的数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

ne_jnt#

关节等式约束的数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

ne_ten#

肌腱等式约束的数量 (nworld,)

类型:

array(ndim=1, dtype=int32)

nsolving#

未收敛的世界数量 (1,)

类型:

array(ndim=1, dtype=int32)

subtree_bodyvel#

子树物体速度 (角速度, 线速度) (nworld, nbody, 6)

类型:

array(ndim=2, dtype=vector(length=6, dtype=float32))

collision_pair#

来自宽相检测的碰撞对 (naconmax, 2)

类型:

array(ndim=1, dtype=vec2i)

collision_pairid#

来自宽相检测的 ID (naconmax, 2)

类型:

array(ndim=1, dtype=vec2i)

collision_worldid#

来自宽相检测的碰撞世界 ID (naconmax,)

类型:

array(ndim=1, dtype=int32)

ncollision#

来自宽相检测的碰撞计数 (1,)

类型:

array(ndim=1, dtype=int32)

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

运行完整的碰撞检测流程。

此函数协调宽相和窄相碰撞检测阶段。它首先使用宽相算法(基于 m.opt.broadphase 的 N-平方或扫描裁剪算法)识别潜在的碰撞对。然后,对每个潜在的对,执行窄相碰撞检测以计算详细的接触信息,如距离、位置和框架。

结果用于填充 d.contact 数组,并且总接触数存储在 d.nacon 中。如果 d.nacon 大于 d.naconmax,则发生溢出,剩余的接触将被跳过。如果发生这种情况,请在 io.make_dataio.put_data 中提高 nconmax 参数。

如果通过 m.opt.disableflags 禁用了碰撞检测,或者如果 d.nacon 为 0,此函数除了将数组清零外,将不执行任何操作。

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

使用暴力 N-平方方法运行宽相碰撞检测。

此函数迭代预过滤的所有可能几何体对的列表,并执行快速的包围球检查以识别潜在的碰撞。

对于每个通过球体检查的对,它会填充 d 中的碰撞数组(d.collision_paird.collision_pairid 等),这些数组随后由窄相检测使用。

初始对列表在模型创建时进行过滤,以排除基于 contype/conaffinity、父子关系和显式 <exclude> 标签的对。

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

使用扫描裁剪 (SAP) 算法运行宽相碰撞检测。

对于大量物体,此方法比 N-平方方法更高效。它的工作原理是将所有几何体的包围球投影到单个轴上并进行排序。然后它沿着该轴扫描,仅检查投影彼此接近的几何体之间的重叠。

对于扫描识别出的每个可能碰撞的对,会执行更精确的包围球检查。如果此检查通过,该对将被添加到 d 中的碰撞数组,以供窄相阶段使用。

支持两种排序策略,由 m.opt.broadphase 控制

  • SAP_TILE: 使用基于瓦片的排序。

  • SAP_SEGMENTED: 使用分段排序。

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

对宽相检测期间发现的原始几何体对进行碰撞检测。

此函数处理在宽相阶段识别出的涉及原始形状的碰撞对。它计算详细的接触信息,如距离、位置和框架,并填充 d.contact 数组。

原始几何体类型:PLANESPHERECAPSULECYLINDERBOX

此外,还包括平面和凸包之间的碰撞。

为了提高性能,它会动态构建并启动一个针对模型中存在的特定原始碰撞类型量身定制的内核,从而避免对不存在的碰撞对进行不必要的检查。

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

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

deriv_smooth_vel(m: Model, d: Data, qDeriv: array(ndim=2, dtype=float32))[source]#

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

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • qDeriv – 平滑力关于速度的解析导数。

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

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

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

正向动力学。

fwd_acceleration(m: Model, d: Data, factorize: bool = False)[source]#

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

参数:
  • m – 包含运动学和动力学信息的模型。

  • d – 包含当前状态和输出数组的数据对象。

  • factorize – 是否分解惯性矩阵的标志。

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

与驱动相关的计算。

fwd_position(m: Model, d: Data, factorize: bool = True)[source]#

与位置相关的计算。

参数:
  • m – 包含运动学和动力学信息的模型。

  • d – 包含当前状态和输出数组的数据对象。

  • factorize – 是否分解惯性矩阵的标志。

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

与速度相关的计算。

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

对速度进行完全隐式积分。

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

龙格-库塔 4 阶显式积分器。

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

分两个阶段推进仿真:在用户设置输入之前。

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

分两个阶段推进仿真:在用户设置输入之后。

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

逆向动力学。

get_data_into(result: MjData, mjm: MjModel, d: Data, world_id: int = 0)[source]#

将设备端的数据获取到现有的 mujoco.MjData 中。

参数:
  • result – 包含当前状态和输出数组的数据对象(主机端)。

  • mjm – 包含运动学和动力学信息的模型(主机端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • world_id – 要获取数据的世界的 ID。

make_data(mjm: MjModel, nworld: int = 1, nconmax: int | None = None, njmax: int | None = None, naconmax: int | None = None) Data[source]#

在设备端创建一个数据对象。

参数:
  • mjm – 包含运动学和动力学信息的模型(主机端)。

  • nworld – 世界的数量。

  • nconmax – 为每个世界分配的接触数。接触存在于大型异构数组中:一个世界可能拥有超过 nconmax 个接触。

  • njmax – 为每个世界分配的约束数。约束数组按世界分批处理:任何世界都不能有超过 njmax 个约束。

  • naconmax – 为所有世界分配的接触总数。覆盖 nconmax。

返回:

包含当前状态和输出数组的数据对象(设备端)。

put_data(mjm: MjModel, mjd: MjData, nworld: int = 1, nconmax: int | None = None, njmax: int | None = None, naconmax: int | None = None) Data[source]#

将数据从主机移动到设备。

参数:
  • mjm – 包含运动学和动力学信息的模型(主机端)。

  • mjd – 包含当前状态和输出数组的数据对象(主机端)。

  • nworld – 世界的数量。

  • nconmax – 为每个世界分配的接触数。接触存在于大型异构数组中:一个世界可能拥有超过 nconmax 个接触。

  • njmax – 为每个世界分配的约束数。约束数组按世界分批处理:任何世界都不能有超过 njmax 个约束。

  • naconmax – 为所有世界分配的接触总数。覆盖 nconmax。

返回:

包含当前状态和输出数组的数据对象(设备端)。

put_model(mjm: MjModel) Model[source]#

在设备端创建一个模型。

参数:

mjm – 包含运动学和动力学信息的模型(主机端)。

返回:

包含运动学和动力学信息的模型(设备端)。

reset_data(m: Model, d: Data, reset: array | None = None)[source]#

清除数据,设置默认值;可选择按世界进行。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • reset – 每个世界的位掩码。如果为 True 则重置。

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

累加所有被动力。

ray(m: Model, d: Data, pnt: array(ndim=2, dtype=vec3f), vec: array(ndim=2, dtype=vec3f), geomgroup: vec6f | None = None, flg_static: bool = True, bodyexclude: int = -1) Tuple[array, array][source]#

返回射线与原始几何体相交的距离。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • pnt – 射线原点。

  • vec – 射线方向。

  • geomgroup – 组包含/排除掩码。如果全部为 wp.inf,则忽略。

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

  • bodyexclude – 忽略指定物体 ID 上的几何体(-1 表示禁用)。

返回:

从射线原点到几何体表面的距离以及相交几何体的 ID(如果没有则为 -1)。

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

与位置相关的能量(势能)。

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

与速度相关的能量(动能)。

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

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

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

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

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

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

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

计算相机和光源的位置和方向。

更新模型中所有相机和光源的全局位置和方向,包括对跟踪和目标模式的特殊处理。

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

计算子树质心位置。

将惯性和运动转换到以子树质心为中心的全局坐标系。沿运动学树向上累加质量加权位置,除以总质量,并计算子树质心坐标系中的复合惯性和运动自由度。

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

计算所有物体的空间速度 (cvel) 和导数 cdof_dot

沿运动学树向下传播速度,更新每个物体的空间速度和导数。

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

计算每个物体的复合刚体惯性以及关节空间惯性矩阵。

沿运动学树向上累加复合刚体惯性,并根据模型选项计算稀疏或稠密格式的关节空间惯性矩阵。

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

分解类惯性矩阵 M,假设为对称正定矩阵。

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

为所有物体、站点、几何体和柔性元素计算正向运动学。

此函数根据当前关节位置和任何附加的动捕物体,更新所有物体的全局位置和方向,以及几何体、站点和柔性元素的派生位置和方向。

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

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

计算当前状态的偏置力 (qfrc_bias) 和内力 (cfrc_int),包括重力和可选的关节加速度的影响。

参数:
  • m – 包含运动学和动力学信息的模型。

  • d – 包含当前状态和输出数组的数据对象。

  • flg_acc – 如果为 True,则在计算中包含关节加速度。

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

在施加约束后计算递归牛顿-欧拉算法。

计算 cacccfrc_extcfrc_int,包括施加的力、等式约束和接触的影响。

solve_m(m: Model, d: Data, x: array(ndim=2, dtype=float32), y: array(ndim=2, dtype=float32))[source]#

计算回代:x = qLD * y。

参数:
  • m – 包含惯性和分解信息的模型。

  • d – 包含分解结果的数据对象。

  • x – 解的输出数组。

  • y – 右侧输入数组。

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

计算子树线速度和角动量。

计算每个子树的线动量和角动量,并沿运动学树向上累加贡献。

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

计算肌腱长度和力矩。

更新模型中所有肌腱的肌腱长度和力矩数组,包括关节、站点和几何体肌腱。

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

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

更新模型中所有执行器的执行器长度和力矩,包括关节和肌腱传动装置。

contact_force(m: Model, d: Data, contact_ids: array(ndim=1, dtype=int32), to_world_frame: bool, force: array(ndim=1, dtype=vector(length=6, dtype=float32)))[source]#

计算 Data 中接触点的力。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • contact_ids – 每个接触点的 ID。

  • to_world_frame – 如果为 True,则将力从接触坐标系映射到世界坐标系。

  • force – 接触力。

get_state(m: Model, d: Data, state: array(ndim=2, dtype=float32), sig: int, active: array | None = None)[source]#

将 sig 指定的拼接状态分量从 Data 复制到 state 中。

整数 sig 的位对应于 State 的元素字段。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出信息的数据对象(设备端)。

  • state – 状态分量的拼接。

  • sig – 指定状态分量的位标志。

  • active – 用于获取状态的每个世界的位掩码。

mul_m(m: Model, d: Data, res: array(ndim=2, dtype=float32), vec: array(ndim=2, dtype=float32), skip: array | None = None, M: array | None = None)[source]#

将向量与惯性矩阵相乘;可选择性地对每个世界跳过计算。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • res – 结果:qM @ vec。

  • vec – 要与 qM 相乘的输入向量。

  • skip – 用于跳过计算输出的每个世界的位掩码。

  • M – 输入矩阵:M @ vec。

set_state(m: Model, d: Data, state: array(ndim=2, dtype=float32), sig: int, active: array | None = None)[source]#

将 sig 指定的拼接状态分量从 state 复制到 Data 中。

整数 sig 的位对应于 State 的元素字段。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出信息的数据对象(设备端)。

  • state – 状态分量的拼接。

  • sig – 指定状态分量的位标志。

  • active – 用于设置状态的每个世界的位掩码。

xfrc_accumulate(m: Model, d: Data, qfrc: array(ndim=2, dtype=float32))[source]#

通过雅可比矩阵将施加在每个物体上的力映射到自由度空间并累加。

参数:
  • m – 包含运动学和动力学信息的模型(设备端)。

  • d – 包含当前状态和输出数组的数据对象(设备端)。

  • qfrc – 映射到自由度空间的总施加力。

class BiasType[source]#

执行器偏置类型。

NONE#

无偏置

AFFINE#

常数 + kp*长度 + kv*速度

MUSCLE#

由 muscle_bias 计算的肌肉被动力

class BroadphaseFilter[source]#

指定在宽相期间运行哪些碰撞函数的位掩码。

PLANE#

包围球与平面之间的碰撞

SPHERE#

包围球之间的碰撞

AABB#

轴对齐包围盒之间的碰撞

OBB#

定向包围盒之间的碰撞

class BroadphaseType[source]#

宽相算法的类型。

NXN#

检查所有对的宽相

SAP_TILE#

使用分块排序的扫描裁剪宽相

SAP_SEGMENTED#

使用分段排序的扫描裁剪宽相

class ConeType[source]#

摩擦锥的类型。

PYRAMIDAL#

棱锥形

ELLIPTIC#

椭圆形

class Constraint[source]#

约束数据。

type#

约束类型 (ConstraintType) (nworld, njmax)

类型:

array(ndim=2, dtype=int32)

id#

特定类型对象的 ID (nworld, njmax)

类型:

array(ndim=2, dtype=int32)

J#

约束雅可比矩阵 (nworld, njmax_pad, nv_pad)

类型:

array(ndim=3, dtype=float32)

pos#

约束位置(等式,接触)(nworld, njmax)

类型:

array(ndim=2, dtype=float32)

margin#

包含边距(接触)(nworld, njmax)

类型:

array(ndim=2, dtype=float32)

D#

约束质量 (nworld, njmax_pad)

类型:

array(ndim=2, dtype=float32)

vel#

约束空间中的速度:J*qvel (nworld, njmax)

类型:

array(ndim=2, dtype=float32)

aref#

参考伪加速度 (nworld, njmax)

类型:

array(ndim=2, dtype=float32)

frictionloss#

摩擦损失(摩擦)(nworld, njmax)

类型:

array(ndim=2, dtype=float32)

force#

约束空间中的约束力 (nworld, njmax)

类型:

array(ndim=2, dtype=float32)

Jaref#

Jac*qacc - aref (nworld, njmax)

类型:

array(ndim=2, dtype=float32)

Ma#

M*qacc (nworld, nv)

类型:

array(ndim=2, dtype=float32)

grad#

主成本函数的梯度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

cholesky_L_tmp#

Cholesky 因子的临时变量 (nworld, nv, nv)

类型:

array(ndim=3, dtype=float32)

cholesky_y_tmp#

Cholesky 求解的临时变量 (nworld, nv

类型:

array(ndim=2, dtype=float32)

grad_dot#

dot(grad, grad) (nworld,)

类型:

array(ndim=1, dtype=float32)

Mgrad#

M / grad (nworld, nv)

类型:

array(ndim=2, dtype=float32)

search#

线搜索向量 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

search_dot#

dot(search, search) (nworld,)

类型:

array(ndim=1, dtype=float32)

gauss#

高斯成本 (nworld,)

类型:

array(ndim=1, dtype=float32)

cost#

约束 + 高斯成本 (nworld,)

类型:

array(ndim=1, dtype=float32)

prev_cost#

上一次迭代的成本 (nworld,)

类型:

array(ndim=1, dtype=float32)

state#

约束状态 (nworld, njmax_pad)

类型:

array(ndim=2, dtype=int32)

mv#

qM @ search (nworld, nv)

类型:

array(ndim=2, dtype=float32)

jv#

efc_J @ search (nworld, njmax)

类型:

array(ndim=2, dtype=float32)

quad#

二次成本系数 (nworld, njmax, 3)

类型:

array(ndim=2, dtype=vec3f)

quad_gauss#

二次成本高斯系数 (nworld, 3)

类型:

array(ndim=1, dtype=vec3f)

h#

Hessian 矩阵 (nworld, nv_pad, nv_pad)

类型:

array(ndim=3, dtype=float32)

alpha#

线搜索步长 (nworld,)

类型:

array(ndim=1, dtype=float32)

prev_grad#

上一次的梯度 (nworld, nv)

类型:

array(ndim=2, dtype=float32)

prev_Mgrad#

上一次的 Mgrad (nworld, nv)

类型:

array(ndim=2, dtype=float32)

beta#

Polak-Ribiere beta (nworld,)

类型:

array(ndim=1, dtype=float32)

done#

求解器完成 (nworld,)

类型:

array(ndim=1, dtype=warp._src.types.bool)

class Contact[source]#

接触数据。

dist#

最近点之间的距离;负值表示穿透 (naconmax,)

类型:

array(ndim=1, dtype=float32)

pos#

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

类型:

array(ndim=1, dtype=vec3f)

frame#

法线在 [0-2] 范围内,从 geom[0] 指向 geom[1] (naconmax, 3, 3)

类型:

array(ndim=1, dtype=mat33(f))

includemargin#

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

类型:

array(ndim=1, dtype=float32)

friction#

切线1、2,自旋,滚动1、2 (naconmax, 5)

类型:

array(ndim=1, dtype=vector(length=5, dtype=float32))

solref#

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

类型:

array(ndim=1, dtype=vec2f)

solreffriction#

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

类型:

array(ndim=1, dtype=vec2f)

solimp#

约束求解器阻抗 (naconmax, 5)

类型:

array(ndim=1, dtype=vector(length=5, dtype=float32))

dim#

接触空间维度:1、3、4 或 6 (naconmax,)

类型:

array(ndim=1, dtype=int32)

geom#

几何体 ID;-1 表示 flex (naconmax, 2)

类型:

array(ndim=1, dtype=vec2i)

efc_address#

在 efc 中的地址;-1:不包含 (naconmax, nmaxpyramid)

类型:

array(ndim=2, dtype=int32)

worldid#

世界 ID (naconmax,)

类型:

array(ndim=1, dtype=int32)

type#

ContactType (naconmax,)

类型:

array(ndim=1, dtype=int32)

geomcollisionid#

为 geom 生成的第 i 个接触 (naconmax,) 有助于在为 geom 对生成多个接触时唯一标识接触

类型:

array(ndim=1, dtype=int32)

class DisableBit[source]#

禁用默认功能的位标志。

CONSTRAINT#

整个约束求解器

EQUALITY#

等式约束

FRICTIONLOSS#

关节和肌腱的摩擦损失约束

LIMIT#

关节和肌腱的限制约束

CONTACT#

接触约束

SPRING#

被动弹簧力

DAMPER#

被动阻尼力

GRAVITY#

重力

CLAMPCTRL#

将控制限制在指定范围内

WARMSTART#

约束求解器的热启动

FILTERPARENT#

禁用父子物体之间的碰撞

ACTUATION#

施加驱动力

REFSAFE#

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

SENSOR#

传感器

EULERDAMP#

欧拉积分的隐式阻尼

NATIVECCD#

原生凸包碰撞检测(在 MJWarp 中被忽略)

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]#

启用可选功能的位标志。

ENERGY#

能量计算

INVDISCRETE#

离散时间逆动力学

class GainType[source]#

执行器增益类型。

FIXED#

固定增益

AFFINE#

常数 + kp*长度 + kv*速度

MUSCLE#

由 muscle_gain 计算的肌肉 FLV 曲线

class GeomType[source]#

几何体类型。

PLANE#

平面

HFIELD#

高度场

SPHERE#

球体 (sphere)

CAPSULE#

胶囊体

ELLIPSOID#

椭球体 (ellipsoid)

CYLINDER#

圆柱体 (cylinder)

BOX#

长方体 (box)

MESH#

mesh

SDF#

有向距离场 (SDF)

class IntegratorType[source]#

积分器模式。

EULER#

半隐式欧拉法

RK4#

四阶龙格-库塔法

IMPLICITFAST#

速度隐式,无 rne 导数

class JointType[source]#

自由度类型。

FREE#

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

BALL#

相对于父对象的方向(四元数)(4,)

SLIDE#

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

HINGE#

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

class Option[source]#

物理选项。

timestep#

仿真时间步长

类型:

array(ndim=1, dtype=float32)

impratio#

摩擦接触阻抗与法向接触阻抗之比

类型:

array(ndim=1, dtype=float32)

tolerance#

主求解器容差

类型:

array(ndim=1, dtype=float32)

ls_tolerance#

CG/Newton 线搜索容差

类型:

array(ndim=1, dtype=float32)

ccd_tolerance#

凸包碰撞检测容差

类型:

array(ndim=1, dtype=float32)

density#

介质密度

类型:

array(ndim=1, dtype=float32)

viscosity#

介质粘度

类型:

array(ndim=1, dtype=float32)

gravity#

重力加速度

类型:

array(ndim=1, dtype=vec3f)

wind#

风(用于升力、阻力和粘度)

类型:

array(ndim=1, dtype=vec3f)

magnetic#

全局磁通量

类型:

array(ndim=1, dtype=vec3f)

integrator#

积分模式 (IntegratorType)

类型:

int

cone#

摩擦锥类型 (ConeType)

类型:

int

solver#

求解器算法 (SolverType)

类型:

int

iterations#

主求解器迭代次数

类型:

int

ls_iterations#

CG/Newton 线搜索的最大迭代次数

类型:

int

ccd_iterations#

凸包碰撞检测中的迭代次数

类型:

int

disableflags#

用于禁用标准功能的位标志

类型:

int

enableflags#

用于启用可选功能的位标志

类型:

int

sdf_initpoints#

梯度下降的起始点数

类型:

int

sdf_iterations#

梯度下降的最大迭代次数

类型:

int

is_sparse#

是否使用稀疏表示

类型:

bool

ls_parallel#

并行评估引擎求解器步长

类型:

bool

ls_parallel_min_step#

求解器线搜索的最小步长

类型:

float

has_fluid#

如果在 put_model 时风、密度或粘度不为零,则为 True

类型:

bool

broadphase#

宽相类型 (BroadphaseType)

类型:

mujoco_warp._src.types.BroadphaseType

broadphase_filter#

宽相过滤器位标志 (BroadphaseFilter)

类型:

mujoco_warp._src.types.BroadphaseFilter

graph_conditional#

使用 cuda graph 条件的标志

类型:

bool

run_collision_detection#

如果为 False,则跳过碰撞检测并允许用户在物理步骤中填充接触点(与 DisableBit.CONTACT 不同,后者在每个步骤中显式将接触点清零)

类型:

bool

contact_sensor_maxmatch#

接触传感器匹配标准所考虑的最大接触数,超过此值后匹配的接触将被忽略

类型:

int

class SolverType[source]#

约束求解器算法。

CG#

共轭梯度法(原始)

NEWTON#

牛顿法(原始)

class State[source]#

作为整数位标志的状态分量元素。

包括这些标志的几个方便组合。

TIME#

时间

QPOS#

位置

QVEL#

速度

ACT#

执行器激活

WARMSTART#

用于热启动的加速度

CTRL#

控制

QFRC_APPLIED#

施加的广义力

XFRC_APPLIED#

施加的笛卡尔力/扭矩

EQ_ACTIVE#

启用/禁用约束

MOCAP_POS#

动作捕捉物体的位置

MOCAP_QUAT#

动作捕捉物体的方向

NSTATE#

状态元素数量

PHYSICS#

QPOS | QVEL | ACT

FULLPHYSICS#

TIME | PHYSICS | PLUGIN

USER#

CTRL | QFRC_APPLIED | XFRC_APPLIED | EQ_ACTIVE | MOCAP_POS | MOCAP_QUAT | USERDATA

INTEGRATION#

FULLPHYSICS | USER | WARMSTART

class Statistic[source]#

模型统计数据(在 qpos0 中)。

meaninertia#

平均对角线惯量

类型:

float

class TrnType[source]#

执行器传动类型。

JOINT#

作用于关节的力

JOINTINPARENT#

作用于关节的力,在父坐标系中表示

SLIDERCRANK#

通过滑块曲柄连杆机构施加的力

TENDON#

作用于肌腱的力

BODY#

作用于物体几何体的附着力

SITE#

作用于站点的力