Update changelog for the 3.7.0 release.

PiperOrigin-RevId: 899497703
Change-Id: Ib9ec75550615dc245bc66af60c877e8adae17e67
This commit is contained in:
Michael Moss
2026-04-14 04:09:54 -07:00
committed by Copybara-Service
parent aef0589442
commit 72cb2b210d
+47 -47
View File
@@ -2,80 +2,80 @@
Changelog Changelog
========= =========
Upcoming version (not yet released) Version 3.7.0 (April 14, 2026)
----------------------------------- ------------------------------
General General
^^^^^^^ ^^^^^^^
- Added the :ref:`dcmotor<actuator-dcmotor>` actuator for modeling DC motors. Supports optional 1. Added the :ref:`dcmotor<actuator-dcmotor>` actuator for modeling DC motors. Supports optional
electrical dynamics (inductance), cogging torque, thermal resistance variation, and LuGre friction. See the electrical dynamics (inductance), cogging torque, thermal resistance variation, and LuGre friction. See the
`technical note <_static/dcmotor.pdf>`__ for more details. `technical note <_static/dcmotor.pdf>`__ for more details.
- Actuators with joint or tendon transmissions can now contribute 2. Actuators with joint or tendon transmissions can now contribute
:ref:`damping<actuator-general-damping>` and :ref:`armature<actuator-general-armature>` to their transmission target. :ref:`damping<actuator-general-damping>` and :ref:`armature<actuator-general-armature>` to their transmission target.
These are applied during the passive force and inertia computations, respectively, and are scaled by gear\ :sup:`2` These are applied during the passive force and inertia computations, respectively, and are scaled by gear\ :sup:`2`
("reflected" damping/inertia). ("reflected" damping/inertia).
.. youtube:: aKa3ZlEF9_Y .. youtube:: aKa3ZlEF9_Y
:align: right :align: right
:width: 35% :width: 35%
- Stiffness in :ref:`joints<body-joint-stiffness>` and :ref:`tendons<tendon-spatial-stiffness>` and damping in 3. Stiffness in :ref:`joints<body-joint-stiffness>` and :ref:`tendons<tendon-spatial-stiffness>` and damping in
:ref:`joints<body-joint-damping>` and :ref:`tendons<tendon-spatial-damping>` now support nonlinear polynomial :ref:`joints<body-joint-damping>` and :ref:`tendons<tendon-spatial-damping>` now support nonlinear polynomial
:ref:`force profiles<gePolynomial>`. New ``mjModel`` arrays (``jnt_stiffnesspoly``, ``tendon_stiffnesspoly``, :ref:`force profiles<gePolynomial>`. New ``mjModel`` arrays (``jnt_stiffnesspoly``, ``tendon_stiffnesspoly``,
``dof_dampingpoly``, ``tendon_dampingpoly``) hold higher-order coefficients. The existing scalar arrays ``dof_dampingpoly``, ``tendon_dampingpoly``) hold higher-order coefficients. The existing scalar arrays
(``jnt_stiffness``, ``dof_damping``, etc.) continue to hold the linear coefficient and are unchanged. (``jnt_stiffness``, ``dof_damping``, etc.) continue to hold the linear coefficient and are unchanged.
The polynomial order is defined by the new constant :ref:`mjNPOLY<glNumericSizes>`. A future breaking C-API change The polynomial order is defined by the new constant :ref:`mjNPOLY<glNumericSizes>`. A future breaking C-API change
may unify the linear and higher-order coefficients into a single array. may unify the linear and higher-order coefficients into a single array.
- Added :ref:`midpoint integration<geMidpoint>` for standalone free bodies in ``implicit`` and ``implicitfast`` 4. Added :ref:`midpoint integration<geMidpoint>` for standalone free bodies in ``implicit`` and ``implicitfast``
:ref:`integrators<geIntegrators>`. This applies the implicit midpoint rule to the rotational dynamics of free bodies :ref:`integrators<geIntegrators>`. This applies the implicit midpoint rule to the rotational dynamics of free bodies
with no children, conserving kinetic energy to machine precision in the absence of external torques. The with no children, conserving kinetic energy to machine precision in the absence of external torques. The
:ref:`invdiscrete<option-flag-invdiscrete>` flag now also disables midpoint integration, providing an opt-out :ref:`invdiscrete<option-flag-invdiscrete>` flag now also disables midpoint integration, providing an opt-out
mechanism. mechanism.
- Added the centripetal/Coriolis acceleration term :math:`\dot{J}v` to the constraint solver bias for 5. Added the centripetal/Coriolis acceleration term :math:`\dot{J}v` to the constraint solver bias for
:ref:`connect<equality-connect>` and :ref:`weld<equality-weld>` equality constaints. This significantly improves the :ref:`connect<equality-connect>` and :ref:`weld<equality-weld>` equality constaints. This significantly improves the
stability of constrained mechanisms like four-bar linkages. See :ref:`Dual problem<soDual>` for details. stability of constrained mechanisms like four-bar linkages. See :ref:`Dual problem<soDual>` for details.
- Introduced :ref:`mjpEncoder`, the counterpart to :ref:`mjpDecoder` for encoding of :ref:`mjSpec` and :ref:`mjModel` 6. Introduced :ref:`mjpEncoder`, the counterpart to :ref:`mjpDecoder` for encoding of :ref:`mjSpec` and :ref:`mjModel`
into :ref:`mjResource`. into :ref:`mjResource`.
- Added :ref:`mj_encode`, :ref:`mjp_registerEncoder`, :ref:`mjp_defaultEncoder`, and :ref:`mjp_findEncoder`. 7. Added :ref:`mj_encode`, :ref:`mjp_registerEncoder`, :ref:`mjp_defaultEncoder`, and :ref:`mjp_findEncoder`.
.. admonition:: Breaking API changes .. admonition:: Breaking API changes
:class: attention :class: attention
- The ``mjs`` layer fields ``stiffness`` and ``damping`` in :ref:`mjsJoint` and :ref:`mjsTendon` have 8. The ``mjs`` layer fields ``stiffness`` and ``damping`` in :ref:`mjsJoint` and :ref:`mjsTendon` have
been widened from ``mjtNum`` scalars to ``mjtNum[mjNPOLY+1]`` arrays. The first element is the linear coefficient been widened from ``mjtNum`` scalars to ``mjtNum[mjNPOLY+1]`` arrays. The first element is the linear coefficient
(previously the scalar), and subsequent elements are the higher-order :ref:`polynomial<gePolynomial>` coefficients. (previously the scalar), and subsequent elements are the higher-order :ref:`polynomial<gePolynomial>` coefficients.
**Migration:** Replace assignments like ``joint.stiffness = val`` with ``joint.stiffness[0] = val``. **Migration:** Replace assignments like ``joint.stiffness = val`` with ``joint.stiffness[0] = val``.
- ``.obj`` and ``.stl`` decoders are now included as source when building MuJoCo with CMake. This fixes the 9. ``.obj`` and ``.stl`` decoders are now included as source when building MuJoCo with CMake. This fixes the
behaviour from the previous release where it required downstream code to load these plugins explicitly. behaviour from the previous release where it required downstream code to load these plugins explicitly.
- The ``vertcollide`` field in :ref:`mjsFlex` has been removed. It is no longer required since 10. The ``vertcollide`` field in :ref:`mjsFlex` has been removed. It is no longer required since
:doc:`MuJoCo Warp <mjwarp/index>` supports native flex collisions. :doc:`MuJoCo Warp <mjwarp/index>` supports native flex collisions.
- :ref:`mjPLUGIN_LIB_INIT` macro now requires a name argument to avoid initialization function name collisions. 11. :ref:`mjPLUGIN_LIB_INIT` macro now requires a name argument to avoid initialization function name collisions.
When building with MSVC, we now use the C runtime initialization section to initialize plugins instead of When building with MSVC, we now use the C runtime initialization section to initialize plugins instead of
``DllMain``. See :ref:`plugin registration<exRegistration>` for more details. ``DllMain``. See :ref:`plugin registration<exRegistration>` for more details.
- The :ref:`mjtWarning` enum value ``mjWARN_VGEOMFULL`` is removed. Exhaustion of visual geoms is now handled 12. The :ref:`mjtWarning` enum value ``mjWARN_VGEOMFULL`` is removed. Exhaustion of visual geoms is now handled
internally by the :ref:`mjvScene`. internally by the :ref:`mjvScene`.
- URDF parsing no longer hardcodes :ref:`strippath<compiler-strippath>` to "true". The setting is now respected and 13. URDF parsing no longer hardcodes :ref:`strippath<compiler-strippath>` to "true". The setting is now respected and
the default is "false". Setting this is attribute is now the responsibility of the user. the default is "false". Setting this is attribute is now the responsibility of the user.
**Migration:** Set :ref:`strippath<compiler-strippath>` to "true" in MJCF or programmatically using **Migration:** Set :ref:`strippath<compiler-strippath>` to "true" in MJCF or programmatically using
.. code-block:: python .. code-block:: python
spec = mujoco.MjSpec.from_file("path/to/model.urdf") spec = mujoco.MjSpec.from_file("path/to/model.urdf")
spec.compiler.strippath = True spec.compiler.strippath = True
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
- The compiler now correctly accounts for negative scaling when loading user specified mesh data. 14. The compiler now correctly accounts for negative scaling when loading user specified mesh data.
Version 3.6.0 (March 10, 2026) Version 3.6.0 (March 10, 2026)
------------------------------ ------------------------------