Preparation for MIMO actuators: split actuator counts: nu (inputs), nactuator (objects), nout (outputs).
An actuator now owns a block of consecutive controls (actuator_ctrladr/ctrlnum, width defined by the actuator type) and a block of consecutive force outputs (actuator_outadr/outnum, width defined by the transmission type). Force outputs are the scalars of actuation space: one force, length, velocity and moment row each. nout = dim(actuator_force) is derived from transmission types; all current types have width 1, so all three counts coincide for every existing model and behavior is bit-exact. Array re-keying: ctrlrange/ctrllimited by nu; forcerange/forcelimited/gear/ acc0/length0/lengthrange and the moment row structure by nout; everything else per actuator. The mjModel actuator block is re-sorted by size key. Layout-breaking, not behavior-breaking: saved .mjb files are invalidated (size list changed) and recompilation is required. PiperOrigin-RevId: 948351772 Change-Id: Icbc196ffa083cb1eaa6f1a3710869c89d8f62540
This commit is contained in:
committed by
Copybara-Service
parent
06f12a9372
commit
d507e92198
+20
-20
@@ -1266,24 +1266,24 @@ class Model:
|
||||
actuator_dyntype: dynamics type (DynType) (nu,)
|
||||
actuator_gaintype: gain type (GainType) (nu,)
|
||||
actuator_biastype: bias type (BiasType) (nu,)
|
||||
actuator_trnid: transmission id: joint, tendon, site (nu, 2)
|
||||
actuator_actadr: first activation address; -1: stateless (nu,)
|
||||
actuator_actnum: number of activation variables (nu,)
|
||||
actuator_trnid: transmission id: joint, tendon, site (nu, 2)
|
||||
actuator_cranklength: crank length for slider-crank (*, nu)
|
||||
actuator_dynprm: dynamics parameters (*, nu, mjNDYN)
|
||||
actuator_gainprm: gain parameters (*, nu, mjNGAIN)
|
||||
actuator_biasprm: bias parameters (*, nu, mjNBIAS)
|
||||
actuator_actlimited: is activation limited (nu,)
|
||||
actuator_actrange: range of activations (*, nu, 2)
|
||||
actuator_actearly: step activation before force (nu,)
|
||||
actuator_history: history buffer sizes (nu, 2)
|
||||
actuator_historyadr: history buffer address (nu,)
|
||||
actuator_delay: delay in seconds (nu,)
|
||||
actuator_ctrllimited: is control limited (nu,)
|
||||
actuator_forcelimited: is force limited (nu,)
|
||||
actuator_actlimited: is activation limited (nu,)
|
||||
actuator_dynprm: dynamics parameters (*, nu, mjNDYN)
|
||||
actuator_gainprm: gain parameters (*, nu, mjNGAIN)
|
||||
actuator_biasprm: bias parameters (*, nu, mjNBIAS)
|
||||
actuator_actearly: step activation before force (nu,)
|
||||
actuator_ctrlrange: range of controls (*, nu, 2)
|
||||
actuator_forcerange: range of forces (*, nu, 2)
|
||||
actuator_actrange: range of activations (*, nu, 2)
|
||||
actuator_gear: scale length and transmitted force (*, nu, 6)
|
||||
actuator_cranklength: crank length for slider-crank (*, nu)
|
||||
actuator_forcelimited: is force limited (nu,)
|
||||
actuator_forcerange: range of forces (*, nu, 2)
|
||||
actuator_acc0: acceleration from unit force in qpos0 (*, nu)
|
||||
actuator_lengthrange: feasible actuator length range (*, nu, 2)
|
||||
sensor_type: sensor type (SensorType) (nsensor,)
|
||||
@@ -1749,24 +1749,24 @@ class Model:
|
||||
actuator_dyntype: array("nu", int)
|
||||
actuator_gaintype: array("nu", int)
|
||||
actuator_biastype: array("nu", int)
|
||||
actuator_trnid: array("nu", wp.vec2i)
|
||||
actuator_actadr: array("nu", int)
|
||||
actuator_actnum: array("nu", int)
|
||||
actuator_trnid: array("nu", wp.vec2i)
|
||||
actuator_cranklength: array("*", "nu", float)
|
||||
actuator_dynprm: array("*", "nu", vec10f)
|
||||
actuator_gainprm: array("*", "nu", vec10f)
|
||||
actuator_biasprm: array("*", "nu", vec10f)
|
||||
actuator_actlimited: array("nu", bool)
|
||||
actuator_actrange: array("*", "nu", wp.vec2)
|
||||
actuator_actearly: array("nu", bool)
|
||||
actuator_history: array("nu", wp.vec2i)
|
||||
actuator_historyadr: array("nu", int)
|
||||
actuator_delay: array("nu", float)
|
||||
actuator_ctrllimited: array("nu", bool)
|
||||
actuator_forcelimited: array("nu", bool)
|
||||
actuator_actlimited: array("nu", bool)
|
||||
actuator_dynprm: array("*", "nu", vec10f)
|
||||
actuator_gainprm: array("*", "nu", vec10f)
|
||||
actuator_biasprm: array("*", "nu", vec10f)
|
||||
actuator_actearly: array("nu", bool)
|
||||
actuator_ctrlrange: array("*", "nu", wp.vec2)
|
||||
actuator_forcerange: array("*", "nu", wp.vec2)
|
||||
actuator_actrange: array("*", "nu", wp.vec2)
|
||||
actuator_gear: array("*", "nu", wp.spatial_vector)
|
||||
actuator_cranklength: array("*", "nu", float)
|
||||
actuator_forcelimited: array("nu", bool)
|
||||
actuator_forcerange: array("*", "nu", wp.vec2)
|
||||
actuator_acc0: array("*", "nu", float)
|
||||
actuator_lengthrange: array("*", "nu", wp.vec2)
|
||||
sensor_type: array("nsensor", int)
|
||||
|
||||
Reference in New Issue
Block a user