New implicitfast integrator and sparse RNE derivatives for implicit.
PiperOrigin-RevId: 516910733 Change-Id: I29a0465c0f0b1749a73e3d7e01925200d025ddd0
This commit is contained in:
committed by
Copybara-Service
parent
056e849273
commit
8c7f6ce5a0
@@ -270,14 +270,17 @@ struct mjData_ {
|
||||
mjtNum* subtree_linvel; // linear velocity of subtree com (nbody x 3)
|
||||
mjtNum* subtree_angmom; // angular momentum about subtree com (nbody x 3)
|
||||
|
||||
// computed by mj_Euler
|
||||
// computed by mj_Euler or mj_implicit
|
||||
mjtNum* qH; // L'*D*L factorization of modified M (nM x 1)
|
||||
mjtNum* qHDiagInv; // 1/diag(D) of modified M (nv x 1)
|
||||
|
||||
// computed by mj_implicit
|
||||
// computed by mj_resetData
|
||||
int* D_rownnz; // non-zeros in each row (nv x 1)
|
||||
int* D_rowadr; // address of each row in D_colind (nv x 1)
|
||||
int* D_colind; // column indices of non-zeros (nD x 1)
|
||||
int* B_rownnz; // non-zeros in each row (nbody x 1)
|
||||
int* B_rowadr; // address of each row in B_colind (nbody x 1)
|
||||
int* B_colind; // column indices of non-zeros (nB x 1)
|
||||
|
||||
// computed by mj_implicit/mj_derivative
|
||||
mjtNum* qDeriv; // d (passive + actuator - bias) / d qvel (nD x 1)
|
||||
|
||||
@@ -125,7 +125,8 @@ typedef enum mjtTexture_ { // type of texture
|
||||
typedef enum mjtIntegrator_ { // integrator mode
|
||||
mjINT_EULER = 0, // semi-implicit Euler
|
||||
mjINT_RK4, // 4th-order Runge Kutta
|
||||
mjINT_IMPLICIT // implicit in velocity
|
||||
mjINT_IMPLICIT, // implicit in velocity
|
||||
mjINT_IMPLICITFAST // implicit in velocity, no rne derivative
|
||||
} mjtIntegrator;
|
||||
|
||||
|
||||
@@ -583,7 +584,8 @@ struct mjModel_ {
|
||||
|
||||
// sizes set after mjModel construction (only affect mjData)
|
||||
int nM; // number of non-zeros in sparse inertia matrix
|
||||
int nD; // number of non-zeros in sparse derivative matrix
|
||||
int nD; // number of non-zeros in sparse dof-dof matrix
|
||||
int nB; // number of non-zeros in sparse body-dof matrix
|
||||
int nemax; // number of potential equality-constraint rows
|
||||
int njmax; // number of available rows in constraint Jacobian
|
||||
int nconmax; // number of potential contacts in contact list
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
X( nnames_map ) \
|
||||
X( nM ) \
|
||||
X( nD ) \
|
||||
X( nB ) \
|
||||
X( nemax ) \
|
||||
X( njmax ) \
|
||||
X( nconmax ) \
|
||||
@@ -514,6 +515,9 @@
|
||||
X( int, D_rownnz, nv, 1 ) \
|
||||
X( int, D_rowadr, nv, 1 ) \
|
||||
X( int, D_colind, nD, 1 ) \
|
||||
X( int, B_rownnz, nbody, 1 ) \
|
||||
X( int, B_rowadr, nbody, 1 ) \
|
||||
X( int, B_colind, nB, 1 ) \
|
||||
X( mjtNum, qDeriv, nD, 1 ) \
|
||||
X( mjtNum, qLU, nD, 1 ) \
|
||||
X( mjtNum, actuator_force, nu, 1 ) \
|
||||
|
||||
Reference in New Issue
Block a user