From feccf7ec967bd3ea3fc90f48857c92e4931b3f7a Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 8 Apr 2024 06:48:11 -0700 Subject: [PATCH] Document `mj_fwdPosition` in pipeline docs, fix ordering error. PiperOrigin-RevId: 622829902 Change-Id: I2f1da9939aac38e4a662757f5c4bccf38a51e3da --- doc/computation/index.rst | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/computation/index.rst b/doc/computation/index.rst index 2256b49e..8db4d378 100644 --- a/doc/computation/index.rst +++ b/doc/computation/index.rst @@ -22,8 +22,8 @@ been described elsewhere. .. _Motivation: -Motivation for soft contact model ---------------------------------- +Soft contact model +------------------ Robots as well as humans interact with their environment primarily through physical contact. Given the increasing importance of physics modeling in robotics, machine learning, animation, virtual reality, biomechanics and other fields, @@ -1557,8 +1557,10 @@ Forward dynamics ~~~~~~~~~~~~~~~~ The source file `engine_forward.c `__ -contains the high-level forward dynamics pipeline: +contains the high-level forward dynamics pipeline. +Top level +^^^^^^^^^ - The top-level function :ref:`mj_step` invokes the entire sequence of computations below. - :ref:`mj_forward` invokes only stages **2-22**, computing the continuous-time forward dynamics, ending with the acceleration ``mjData.qacc``. @@ -1566,7 +1568,10 @@ contains the high-level forward dynamics pipeline: distinct phases. This allows the user to write controllers that depend on quantities derived from the positions and velocities (but not forces, since those have not yet been computed). Note that the :ref:`mj_step1` → :ref:`mj_step2` pipeline does not support the Runge Kutta integrator. +- :ref:`mj_fwdPosition` invokes stages **2-11**, the position-dependent part of the pipeline. +Stages +^^^^^^ 1. Check the positions and velocities for invalid or unacceptably large real values indicating divergence. If divergence is detected, the state is automatically reset and the corresponding warning is raised: :ref:`mj_checkPos`, :ref:`mj_checkVel` @@ -1581,9 +1586,9 @@ contains the high-level forward dynamics pipeline: 8. Construct the list of active contacts. This includes both broad-phase and near-phase collision detection: :ref:`mj_collision` 9. Construct the constraint Jacobian and compute the constraint residuals: :ref:`mj_makeConstraint` -10. Compute the matrices and vectors needed by the constraint solvers: :ref:`mj_projectConstraint` -11. Compute the tendon lengths and moment arms. This includes the computation of minimal-length paths for spatial +10. Compute the tendon lengths and moment arms. This includes the computation of minimal-length paths for spatial tendons: :ref:`mj_transmission` +11. Compute the matrices and vectors needed by the constraint solvers: :ref:`mj_projectConstraint` 12. Compute sensor data that only depends on position, and the potential energy if enabled: :ref:`mj_sensorPos`, :ref:`mj_energyPos` 13. Compute the tendon, flex edge and actuator velocities: :ref:`mj_fwdVelocity`