@@ -5531,16 +5531,23 @@ specify them independently.
55315531
55325532:at: `joint `: :at-val: `string, optional `
55335533 This and the next four attributes determine the type of actuator transmission. All of them are optional, and exactly
5534- one of them must be specified. If this attribute is specified, the actuator acts on the given joint. For **hinge **
5535- and **slide ** joints, the actuator length equals the joint position/angle times the first element of :at: `gear `. For
5536- **ball ** joints, the first three elements of gear define a 3d rotation axis in the child frame around which the
5534+ one of them must be specified. If this attribute is specified, the actuator acts on the given joint.
5535+
5536+ For **hinge ** and **slide ** joints, the actuator length equals the joint position/angle times the first element of
5537+ :at: `gear `.
5538+
5539+ For **ball ** joints, the first three elements of gear define a 3d rotation axis in the child frame around which the
55375540 actuator produces torque. The actuator length is defined as the dot-product between this gear axis and the angle-axis
55385541 representation of the joint quaternion, and is in units of radian if :at: `gear ` is normalized (generally scaled by
5539- by the norm of :at: `gear `). Note that after total rotation of more than :math: `\pi `, the length will wrap to :math: `-
5540- \pi `, and vice-versa. Therefore :el: `position ` servos for ball joints should generally use tighter limits which
5541- prevent this wrapping. For **free ** joints, gear defines a 3d translation axis in the world frame followed by a 3d
5542- rotation axis in the child frame. The actuator generates force and torque relative to the specified axes. The
5543- actuator length for free joints is defined as zero (so it should not be used with position servos).
5542+ the norm of :at: `gear `). Note that the length is defined on a circle: after total rotation of more than :math: `\pi `
5543+ it wraps to :math: `-\pi `, and vice-versa. :ref: `position<actuator-position> ` and
5544+ :ref: `intvelocity<actuator-intvelocity> ` servos on such transmissions interpret their setpoint on the circle, driving
5545+ towards the nearest representative of the target, so targets can be wound continuously through any number of turns
5546+ and no control limits are required to prevent wrapping.
5547+
5548+ For **free ** joints, gear defines a 3d translation axis in the world frame followed by a 3d rotation axis in the
5549+ child frame. The actuator generates force and torque relative to the specified axes. The actuator length for free
5550+ joints is defined as zero (so cannot be used with position servos).
55445551
55455552.. _actuator-general-jointinparent :
55465553
@@ -5570,13 +5577,14 @@ specify them independently.
55705577 When using a :at: `site ` transmission, measure the translation and rotation w.r.t the frame of the :at: `refsite `. In
55715578 this case the actuator *does * have length and :el: `position ` actuators can be used to directly control an end
55725579 effector, see `refsite.xml
5573- <https://github.com/google-deepmind/mujoco/tree/main/test/engine/testdata/actuation/refsite.xml> `__ example
5574- model. As above, the length is the dot product of the :at: `gear ` vector and the frame difference. So ``gear="0 1 0 0
5575- 0 0" `` means "Y-offset of :at: `site ` in the :at: `refsite ` frame", while ``gear="0 0 0 0 0 1" `` means rotation "Z-
5576- rotation of :at: `site ` in the :at: `refsite ` frame". It is recommended to use a normalized :at: `gear ` vector with
5577- nonzeros in only the first 3 *or * the last 3 elements of :at: `gear `, so the actuator length will be in either length
5578- units or radians, respectively. As with ball joints (see :at: `joint ` above), for rotations which exceed a total angle
5579- of :math: `\pi ` will wrap around, so tighter limits are recommended.
5580+ <https://github.com/google-deepmind/mujoco/tree/main/test/engine/testdata/actuation/refsite.xml> `__ example model. As
5581+ above, the length is the dot product of the :at: `gear ` vector and the frame difference. So ``gear="0 1 0 0 0 0" ``
5582+ means "Y-offset of :at: `site ` in the :at: `refsite ` frame", while ``gear="0 0 0 0 0 1" `` means rotation "Z- rotation
5583+ of :at: `site ` in the :at: `refsite ` frame". It is recommended to use a normalized :at: `gear ` vector with nonzeros in
5584+ only the first 3 *or * the last 3 elements of :at: `gear `, so the actuator length will be in either length units or
5585+ radians, respectively. As with ball joints (see :ref: `general/joint<actuator-general-joint> ` above), rotational
5586+ lengths are defined on a circle and servo setpoints are interpreted on it; control limits are not required to prevent
5587+ wrapping.
55805588
55815589.. _actuator-general-body :
55825590
@@ -5794,6 +5802,7 @@ gaintype fixed gainprm kp 0 0
57945802biastype affine biasprm 0 -kp -kv
57955803========= =================== ========= =============
57965804
5805+ On purely rotational transmissions, setpoints are interpreted on the circle; see :ref: `gear<actuator-general-gear> `.
57975806
57985807This element has one custom attribute in addition to the common attributes:
57995808
@@ -5989,14 +5998,18 @@ This element creates an integrated-velocity servo. For more information, see the
59895998:ref: `Activation clamping <CActRange >` section of the Modeling chapter. The underlying
59905999:el: `general ` attributes are set as follows:
59916000
5992- ========== =========== ========= =========
5993- Attribute Setting Attribute Setting
5994- ========== =========== ========= =========
5995- dyntype integrator dynprm 1 0 0
5996- gaintype fixed gainprm kp 0 0
5997- biastype affine biasprm 0 -kp -kv
5998- actlimited true
5999- ========== =========== ========= =========
6001+ ========= =========== ========= =========
6002+ Attribute Setting Attribute Setting
6003+ ========= =========== ========= =========
6004+ dyntype integrator dynprm 1 0 0
6005+ gaintype fixed gainprm kp 0 0
6006+ biastype affine biasprm 0 -kp -kv
6007+ ========= =========== ========= =========
6008+
6009+ Activation clamping is controlled by :at: `actlimited ` and :at: `actrange `, like any stateful actuator. On purely
6010+ rotational transmissions, setpoints are interpreted on the circle, as for :ref: `position<actuator-position> `; the
6011+ integrated setpoint is re-anchored to a bounded representative at each timestep, so clamping is not required for
6012+ winding targets.
60006013
60016014This element has one custom attribute in addition to the common attributes:
60026015
@@ -6016,6 +6029,8 @@ This element has one custom attribute in addition to the common attributes:
60166029
60176030.. _actuator-intvelocity-forcelimited :
60186031
6032+ .. _actuator-intvelocity-actlimited :
6033+
60196034.. _actuator-intvelocity-ctrlrange :
60206035
60216036.. _actuator-intvelocity-forcerange :
@@ -6049,9 +6064,10 @@ This element has one custom attribute in addition to the common attributes:
60496064.. _actuator-intvelocity-armature :
60506065
60516066.. |actuator/intvelocity attrib list | replace ::
6052- :at: `name`, :at:`class`, :at:`group`, :at:`delay`, :at:`ctrllimited`, :at:`forcelimited`, :at:`ctrlrange`,
6053- :at: `forcerange`, :at:`actrange`, :at:`lengthrange`, :at:`gear`, :at:`cranklength`, :at:`joint`, :at:`jointinparent`,
6054- :at: `tendon`, :at:`cranksite`, :at:`slidersite`, :at:`site`, :at:`refsite`, :at:`user`, :at:`damping`, :at:`armature`
6067+ :at: `name`, :at:`class`, :at:`group`, :at:`delay`, :at:`ctrllimited`, :at:`forcelimited`, :at:`actlimited`,
6068+ :at: `ctrlrange`, :at:`forcerange`, :at:`actrange`, :at:`lengthrange`, :at:`gear`, :at:`cranklength`, :at:`joint`,
6069+ :at: `jointinparent`, :at:`tendon`, :at:`cranksite`, :at:`slidersite`, :at:`site`, :at:`refsite`, :at:`user`,
6070+ :at: `damping`, :at:`armature`
60556071
60566072|actuator/intvelocity attrib list |
60576073 Same as in actuator/ :ref: `general <actuator-general >`.
@@ -9990,6 +10006,8 @@ refsite, tendon, slidersite, cranksite.
999010006
999110007.. _default-intvelocity-forcelimited :
999210008
10009+ .. _default-intvelocity-actlimited :
10010+
999310011.. _default-intvelocity-ctrlrange :
999410012
999510013.. _default-intvelocity-forcerange :
0 commit comments