Add filterexact and actearly options to MuJoCo.
When filterexact is a new dyntype which is just like the existing `filter`, but the activation state is integrated with exact integration, instead of simple Euler integration. When actearly is specified on a general actuator, `qfrc_actuator` is computed using the next timestep's `act` value, instead of the current value. PiperOrigin-RevId: 554438423 Change-Id: If901e4988fa6b518d6f3097f149770665a189a4b
This commit is contained in:
committed by
Copybara-Service
parent
f0f535ed04
commit
2c3297b3e7
@@ -194,6 +194,7 @@ typedef enum mjtDyn_ { // type of actuator dynamics
|
||||
mjDYN_NONE = 0, // no internal dynamics; ctrl specifies force
|
||||
mjDYN_INTEGRATOR, // integrator: da/dt = u
|
||||
mjDYN_FILTER, // linear filter: da/dt = (u-a) / tau
|
||||
mjDYN_FILTEREXACT, // linear filter: da/dt = (u-a) / tau, with exact integration
|
||||
mjDYN_MUSCLE, // piece-wise linear filter with two time constants
|
||||
mjDYN_USER // user-defined dynamics type
|
||||
} mjtDyn;
|
||||
@@ -903,6 +904,7 @@ struct mjModel_ {
|
||||
mjtNum* actuator_dynprm; // dynamics parameters (nu x mjNDYN)
|
||||
mjtNum* actuator_gainprm; // gain parameters (nu x mjNGAIN)
|
||||
mjtNum* actuator_biasprm; // bias parameters (nu x mjNBIAS)
|
||||
mjtByte* actuator_actearly; // step activation before force (nu x 1)
|
||||
mjtNum* actuator_ctrlrange; // range of controls (nu x 2)
|
||||
mjtNum* actuator_forcerange; // range of forces (nu x 2)
|
||||
mjtNum* actuator_actrange; // range of activations (nu x 2)
|
||||
|
||||
@@ -387,6 +387,7 @@
|
||||
X ( mjtNum, actuator_dynprm, nu, mjNDYN ) \
|
||||
X ( mjtNum, actuator_gainprm, nu, mjNGAIN ) \
|
||||
X ( mjtNum, actuator_biasprm, nu, mjNBIAS ) \
|
||||
X ( mjtByte, actuator_actearly, nu, 1 ) \
|
||||
XMJV( mjtNum, actuator_ctrlrange, nu, 2 ) \
|
||||
X ( mjtNum, actuator_forcerange, nu, 2 ) \
|
||||
XMJV( mjtNum, actuator_actrange, nu, 2 ) \
|
||||
|
||||
Reference in New Issue
Block a user