Add actuatorgravcomp joint attribute, to treat gravity compensation forces as applied by actuators, rather than passive buoyancy.
PiperOrigin-RevId: 620049593 Change-Id: I2c8a9dc152c087b408e4f904838034271a7dd910
This commit is contained in:
committed by
Copybara-Service
parent
d258d5e152
commit
47ba72ea59
+41
-27
@@ -2354,24 +2354,6 @@ rotations as unit quaternions.
|
||||
joint inertia in the model reference configuration. Note that the format is the same as the solref parameter of the
|
||||
constraint solver.
|
||||
|
||||
.. _body-joint-limited:
|
||||
|
||||
:at:`limited`: :at-val:`[false, true, auto], "auto"`
|
||||
This attribute specifies if the joint has limits. It interacts with the range attribute below. If this attribute
|
||||
is "false", joint limits are disabled. If this attribute is "true", joint limits are enabled. If this
|
||||
attribute is "auto", and :at:`autolimits` is set in :ref:`compiler <compiler>`, joint limits will be enabled
|
||||
if range is defined.
|
||||
|
||||
.. _body-joint-actuatorfrclimited:
|
||||
|
||||
:at:`actuatorfrclimited`: :at-val:`[false, true, auto], "auto"`
|
||||
This attribute specifies whether actuator forces acting on the joint should be clamped. See :ref:`CForceRange` for
|
||||
details. It is available only for scalar joints (hinge and slider) and ignored for ball and free joints. |br| This
|
||||
attribute interacts with the actuatorfrcrange attribute below. If this attribute is "false", actuator force
|
||||
clamping is disabled. If it is "true", actuator force clamping is enabled. If this attribute is "auto", and
|
||||
:at:`autolimits` is set in :ref:`compiler <compiler>`, actuator force clamping will be enabled if actuatorfrcrange
|
||||
is defined.
|
||||
|
||||
.. _body-joint-solreflimit:
|
||||
|
||||
.. _body-joint-solimplimit:
|
||||
@@ -2400,16 +2382,44 @@ rotations as unit quaternions.
|
||||
joints, the limit is imposed on the angle of rotation (relative to the reference configuration) regardless of the
|
||||
axis of rotation. Only the second range parameter is used for ball joints; the first range parameter should be set to
|
||||
0. See the :ref:`Limit <coLimit>` section in the Computation chapter for more information.
|
||||
|br| Setting this attribute without specifying :at:`limited` is an error, unless :at:`autolimits` is set in
|
||||
|br| Setting this attribute without specifying :at:`limited` is an error if :at:`autolimits` is "false" in
|
||||
:ref:`compiler <compiler>`.
|
||||
|
||||
.. _body-joint-limited:
|
||||
|
||||
:at:`limited`: :at-val:`[false, true, auto], "auto"`
|
||||
This attribute specifies if the joint has limits. It interacts with the range attribute below. If this attribute
|
||||
is "false", joint limits are disabled. If this attribute is "true", joint limits are enabled. If this
|
||||
attribute is "auto", and :at:`autolimits` is set in :ref:`compiler <compiler>`, joint limits will be enabled
|
||||
if range is defined.
|
||||
|
||||
.. _body-joint-actuatorfrcrange:
|
||||
|
||||
:at:`actuatorfrcrange`: :at-val:`real(2), "0 0"`
|
||||
Range for clamping total actuator forces acting on this joint. See :ref:`CForceRange` for details. It is available
|
||||
only for scalar joints (hinge and slider) and ignored for ball and free joints. |br| The compiler expects the first
|
||||
value to be smaller than the second value. |br| Setting this attribute without specifying :at:`actuatorfrclimited`
|
||||
is an error, unless :at:`compiler-autolimits` is set.
|
||||
is an error if :at:`compiler-autolimits` is "false".
|
||||
|
||||
.. _body-joint-actuatorfrclimited:
|
||||
|
||||
:at:`actuatorfrclimited`: :at-val:`[false, true, auto], "auto"`
|
||||
This attribute specifies whether actuator forces acting on the joint should be clamped. See :ref:`CForceRange` for
|
||||
details. It is available only for scalar joints (hinge and slider) and ignored for ball and free joints. |br| This
|
||||
attribute interacts with the actuatorfrcrange attribute below. If this attribute is "false", actuator force
|
||||
clamping is disabled. If it is "true", actuator force clamping is enabled. If this attribute is "auto", and
|
||||
:at:`autolimits` is set in :ref:`compiler <compiler>`, actuator force clamping will be enabled if
|
||||
:at:`actuatorfrcrange` is defined.
|
||||
|
||||
.. _body-joint-actuatorgravcomp:
|
||||
|
||||
:at:`actuatorgravcomp`: :at-val:`[false, true], "false"`
|
||||
If this flag is enabled, gravity compensation applied to this joint is added to actuator forces
|
||||
(``mjData.qfrc_actuator``) rather than passive forces (``mjData.qfrc_passive``). Notionally, this means that gravity
|
||||
compensation is the result of a control system rather than natural buoyancy. In practice, enabling this flag is
|
||||
useful when joint-level actuator force clamping is used. In this case, the total actuation force applied on a joint,
|
||||
including gravity compensation, is guaranteed to not exceeed the specified limits. See :ref:`CForceRange` and
|
||||
:ref:`actuatorfrcrange<body-joint-actuatorfrcrange>` for more details on this type of force limit.
|
||||
|
||||
.. _body-joint-margin:
|
||||
|
||||
@@ -5096,14 +5106,14 @@ specify them independently.
|
||||
|
||||
:at:`ctrlrange`: :at-val:`real(2), "0 0"`
|
||||
Range for clamping the control input. The first value must be smaller than the second value.
|
||||
|br| Setting this attribute without specifying :at:`ctrllimited` is an error, unless :at:`autolimits` is set in
|
||||
|br| Setting this attribute without specifying :at:`ctrllimited` is an error if :at:`autolimits` is "false" in
|
||||
:ref:`compiler <compiler>`.
|
||||
|
||||
.. _actuator-general-forcerange:
|
||||
|
||||
:at:`forcerange`: :at-val:`real(2), "0 0"`
|
||||
Range for clamping the force output. The first value must be no greater than the second value.
|
||||
|br| Setting this attribute without specifying :at:`forcelimited` is an error, unless :at:`autolimits` is set in
|
||||
|br| Setting this attribute without specifying :at:`forcelimited` is an error if :at:`autolimits` is "false" in
|
||||
:ref:`compiler <compiler>`.
|
||||
|
||||
.. _actuator-general-actrange:
|
||||
@@ -5111,7 +5121,7 @@ specify them independently.
|
||||
:at:`actrange`: :at-val:`real(2), "0 0"`
|
||||
Range for clamping the activation state. The first value must be no greater than the second value.
|
||||
See the :ref:`Activation clamping <CActRange>` section for more details.
|
||||
|br| Setting this attribute without specifying :at:`actlimited` is an error, unless :at:`autolimits` is set in
|
||||
|br| Setting this attribute without specifying :at:`actlimited` is an error if :at:`autolimits` is "false" in
|
||||
:ref:`compiler <compiler>`.
|
||||
|
||||
.. _actuator-general-lengthrange:
|
||||
@@ -6489,10 +6499,12 @@ arms determined by the transmission). This sensor can be attached to any actuato
|
||||
:el-prefix:`sensor/` |-| **jointactuatorfrc** (*)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This element creates an actuator force sensor, measured at a joint. The quantity being sensed is the
|
||||
generalized force contributed by all actuators to a single scalar joint (hinge or slider). This type of sensor is
|
||||
important when multiple actuators act on a single joint or when a single actuator act on multiple joints. See
|
||||
:ref:`CForceRange` for details.
|
||||
This element creates an actuator force sensor, measured at a joint. The quantity being sensed is the generalized force
|
||||
contributed by all actuators to a single scalar joint (hinge or slider). If the joint's
|
||||
:ref:`actuatorgravcomp<body-joint-actuatorgravcomp>` attribute is "true", this sensor will also measure contributions by
|
||||
gravity compensation forces (which are added directly to the joint and would *not* register in the
|
||||
:ref:`actuatorfrc<sensor-actuatorfrc>`) sensor. This type of sensor is important when multiple actuators act on a single
|
||||
joint or when a single actuator act on multiple joints. See :ref:`CForceRange` for details.
|
||||
|
||||
|
||||
.. _sensor-jointactuatorfrc-name:
|
||||
@@ -7386,6 +7398,8 @@ if omitted.
|
||||
|
||||
.. _default-joint-actuatorfrclimited:
|
||||
|
||||
.. _default-joint-actuatorgravcomp:
|
||||
|
||||
.. _default-joint-solreflimit:
|
||||
|
||||
.. _default-joint-solimplimit:
|
||||
|
||||
Reference in New Issue
Block a user