Remove mjTIMER_ACCELERATION, add mjTIMER_ADVANCE.
- mjTIMER_ACCELERATION is not very useful, it's usually very tiny (0.5% for humanoid, 1% for 22humanoids). It basically times a single call to `mj_solveM`. - Added `mjTIMER_ADVANCE` to time `mj_Euler` and `mj_implicit` (which can be significant). - Moved `mj_transmission` to `mjTIMER_KINEMATICS` where it belongs (and used to be). PiperOrigin-RevId: 565936880 Change-Id: I26b8a067133594e5500ca1c809beb3518b4a8d9c
This commit is contained in:
committed by
Copybara-Service
parent
e76e1c72f9
commit
63fd23a934
@@ -118,9 +118,12 @@ void mj_fwdPosition(const mjModel* m, mjData* d) {
|
||||
if (mjENABLED(mjENBL_ISLAND)) {
|
||||
mj_island(m, d);
|
||||
}
|
||||
mj_transmission(m, d);
|
||||
TM_END(mjTIMER_POS_MAKE);
|
||||
|
||||
TM_RESTART;
|
||||
mj_transmission(m, d);
|
||||
TM_END(mjTIMER_POS_KINEMATICS);
|
||||
|
||||
TM_RESTART;
|
||||
mj_projectConstraint(m, d);
|
||||
TM_END(mjTIMER_POS_PROJECT);
|
||||
@@ -400,7 +403,6 @@ void mj_fwdActuation(const mjModel* m, mjData* d) {
|
||||
|
||||
// add up all non-constraint forces, compute qacc_smooth
|
||||
void mj_fwdAcceleration(const mjModel* m, mjData* d) {
|
||||
TM_START;
|
||||
mj_markStack(d);
|
||||
int nv = m->nv;
|
||||
|
||||
@@ -414,7 +416,6 @@ void mj_fwdAcceleration(const mjModel* m, mjData* d) {
|
||||
mj_solveM(m, d, d->qacc_smooth, d->qfrc_smooth, 1);
|
||||
|
||||
mj_freeStack(d);
|
||||
TM_END(mjTIMER_ACCELERATION);
|
||||
}
|
||||
|
||||
|
||||
@@ -609,6 +610,7 @@ static void mj_advance(const mjModel* m, mjData* d,
|
||||
|
||||
// Euler integrator, semi-implicit in velocity, possibly skipping factorisation
|
||||
void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
TM_START;
|
||||
int nv = m->nv, nM = m->nM;
|
||||
mj_markStack(d);
|
||||
mjtNum* qfrc = mj_stackAllocNum(d, nv);
|
||||
@@ -655,6 +657,8 @@ void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
mj_advance(m, d, d->act_dot, qacc, NULL);
|
||||
|
||||
mj_freeStack(d);
|
||||
|
||||
TM_END(mjTIMER_ADVANCE);
|
||||
}
|
||||
|
||||
|
||||
@@ -774,6 +778,7 @@ void mj_RungeKutta(const mjModel* m, mjData* d, int N) {
|
||||
|
||||
// fully implicit in velocity, possibly skipping factorization
|
||||
void mj_implicitSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
TM_START;
|
||||
int nv = m->nv;
|
||||
|
||||
mj_markStack(d);
|
||||
@@ -832,6 +837,8 @@ void mj_implicitSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
mj_advance(m, d, d->act_dot, qacc, NULL);
|
||||
|
||||
mj_freeStack(d);
|
||||
|
||||
TM_END(mjTIMER_ADVANCE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user