diff --git a/doc/includes/references.h b/doc/includes/references.h index 6c02494c..457dc11b 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -261,6 +261,9 @@ struct mjData_ { // computed by mj_fwdPosition/mj_transmission mjtNum* actuator_length; // actuator lengths (nu x 1) + int* moment_rownnz; // number of non-zeros in actuator_moment row (nu x 1) + int* moment_rowadr; // row start address in colind array (nu x 1) + int* moment_colind; // column indices in sparse Jacobian (nu x nv) mjtNum* actuator_moment; // actuator moments (nu x nv) // computed by mj_fwdPosition/mj_crb diff --git a/include/mujoco/mjdata.h b/include/mujoco/mjdata.h index 3a863f13..dbe05f40 100644 --- a/include/mujoco/mjdata.h +++ b/include/mujoco/mjdata.h @@ -289,6 +289,9 @@ struct mjData_ { // computed by mj_fwdPosition/mj_transmission mjtNum* actuator_length; // actuator lengths (nu x 1) + int* moment_rownnz; // number of non-zeros in actuator_moment row (nu x 1) + int* moment_rowadr; // row start address in colind array (nu x 1) + int* moment_colind; // column indices in sparse Jacobian (nu x nv) mjtNum* actuator_moment; // actuator moments (nu x nv) // computed by mj_fwdPosition/mj_crb diff --git a/include/mujoco/mjxmacro.h b/include/mujoco/mjxmacro.h index 038c6a6c..fc41b0a1 100644 --- a/include/mujoco/mjxmacro.h +++ b/include/mujoco/mjxmacro.h @@ -623,6 +623,9 @@ XMJV( int, wrap_obj, nwrap, 2 ) \ XMJV( mjtNum, wrap_xpos, nwrap, 6 ) \ X ( mjtNum, actuator_length, nu, 1 ) \ + X ( int, moment_rownnz, nu, 1 ) \ + X ( int, moment_rowadr, nu, 1 ) \ + X ( int, moment_colind, nu, MJ_M(nv) ) \ X ( mjtNum, actuator_moment, nu, MJ_M(nv) ) \ X ( mjtNum, crb, nbody, 10 ) \ X ( mjtNum, qM, nM, 1 ) \ diff --git a/introspect/structs.py b/introspect/structs.py index 96772af3..19549b89 100644 --- a/introspect/structs.py +++ b/introspect/structs.py @@ -5144,6 +5144,30 @@ STRUCTS: Mapping[str, StructDecl] = dict([ doc='actuator lengths', array_extent=('nu',), ), + StructFieldDecl( + name='moment_rownnz', + type=PointerType( + inner_type=ValueType(name='int'), + ), + doc='number of non-zeros in actuator_moment row', + array_extent=('nu',), + ), + StructFieldDecl( + name='moment_rowadr', + type=PointerType( + inner_type=ValueType(name='int'), + ), + doc='row start address in colind array', + array_extent=('nu',), + ), + StructFieldDecl( + name='moment_colind', + type=PointerType( + inner_type=ValueType(name='int'), + ), + doc='column indices in sparse Jacobian', + array_extent=('nu', 'nv'), + ), StructFieldDecl( name='actuator_moment', type=PointerType( diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index 2a594f81..adcbbd9f 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -4904,6 +4904,9 @@ public unsafe struct mjData_ { public int* wrap_obj; public double* wrap_xpos; public double* actuator_length; + public int* moment_rownnz; + public int* moment_rowadr; + public int* moment_colind; public double* actuator_moment; public double* crb; public double* qM;