/** * Record the actuation quantities. */ int Actuation:: record(const SimTK::State& s) { if (_model == NULL) return(-1); // MAKE SURE ALL ACTUATION QUANTITIES ARE VALID _model->getMultibodySystem().realize(s, SimTK::Stage::Dynamics); // TIME NORMALIZATION double tReal = s.getTime(); // FORCE const Set<Actuator>& fSet = _model->getActuators(); for (int i = 0, iact = 0; i<fSet.getSize(); i++) { ScalarActuator* act = dynamic_cast<ScalarActuator*>(&fSet[i]); if (!fSet.get(i).get_isDisabled()) _fsp[iact++] = act->getActuation(s); } _forceStore->append(tReal, _na, _fsp); // SPEED for (int i = 0, iact = 0; i<fSet.getSize(); i++) { ScalarActuator* act = dynamic_cast<ScalarActuator*>(&fSet[i]); if (!fSet.get(i).get_isDisabled()) _fsp[iact++] = act->getSpeed(s); } _speedStore->append(tReal, _na, _fsp); // POWER for (int i = 0, iact = 0; i<fSet.getSize(); i++) { if (!fSet.get(i).get_isDisabled()) _fsp[iact++] = fSet.get(i).getPower(s); } _powerStore->append(tReal, _na, _fsp); return(0); }