@@ -189,7 +189,7 @@ change at runtime. In that case there is still a fixed enumeration order (corres
189189elements appear in ``mjModel ``) but any inactive constraints are omitted.
190190
191191The number of position coordinates :math: `n_Q` is larger than the number of degrees of freedom :math: `n_V` whenever
192- quaternions are used to represent 3D orientations. This occurs when the model contains ball joints or free joints (i.e.
192+ quaternions are used to represent 3D orientations. This occurs when the model contains ball joints or free joints (i.e.,
193193in most models). In that case :math: `\dot {q}` does not equal :math: `v`, at least not in the usual sense. Instead one has
194194to consider the group of rigid body orientations :math: `SO(3 )` - which has the geometry of a unit sphere in 4D space.
195195Velocities live in the 3D tangent space to this sphere. This is taken into account by all internal computations. For
@@ -326,7 +326,7 @@ Passive forces
326326Passive forces are defined as forces that depend only on position and velocity, and not on control in forward dynamics
327327or acceleration in inverse dynamics. As a result, such forces are inputs to both the forward and inverse dynamics
328328computations, and are identical in both cases. They are stored in ``mjData.qfrc_passive ``. The passive forces computed
329- by MuJoCo are also passive in the sense of physics, i.e. they do not increase energy, however the user can install the
329+ by MuJoCo are also passive in the sense of physics, i.e., they do not increase energy, however the user can install the
330330callback :ref: `mjcb_passive ` and add forces to ``mjData.qfrc_passive `` that may increase energy. This will not interfere
331331with MuJoCo's operation as long as such user forces depend only on position and velocity.
332332
@@ -460,7 +460,7 @@ constraint contributes :math:`\dim(r)` elements to the total constraint count :m
460460properties of quaternions, differentiation with respect to :math: `q` produces vectors of size :math: `n_V` rather than
461461:math: `n_Q`.
462462
463- Among other applications, equality constraints can be used to create "loop joints", i.e. joints that cannot be modeled
463+ Among other applications, equality constraints can be used to create "loop joints", i.e., joints that cannot be modeled
464464via the kinematic tree. Gaming engines represent all joints in this way. The same can be done in MuJoCo but is not
465465recommended - because it leads to both slower and less accurate simulation, effectively turning MuJoCo into a gaming
466466engine. The only reason to represent joints with equality constraints would be to model soft joints - which can be done
@@ -562,7 +562,7 @@ with a 1 at the joint address. For tendons this is known as the moment arm vecto
562562 spatial tendons this could be used to model friction between the tendon and the surfaces it wraps around. Such
563563 friction will be load-independent though. To construct a more detailed model of this phenomenon, create several small
564564 floating spheres and connect them with tendons in series. Then the contacts between the spheres and the surrounding
565- surfaces will have load-dependent (i.e. Coulomb) friction, but this is less efficient to simulate.
565+ surfaces will have load-dependent (i.e., Coulomb) friction, but this is less efficient to simulate.
566566
567567.. _coLimit :
568568
@@ -588,7 +588,7 @@ because solving for equality constraint forces is generally faster.
588588``joint `` : 1 or 2
589589 Limits can be defined for scalar joints (hinge and slide) as well as for ball joints. Scalar joints are treated as
590590 described above. Ball joint limits are applied to the exponential-map or angle-axis representation of the joint
591- quaternion, i.e. the vector :math: `(\theta x, \theta y, \theta z)` where :math: `\theta ` is the rotation angle and
591+ quaternion, i.e., the vector :math: `(\theta x, \theta y, \theta z)` where :math: `\theta ` is the rotation angle and
592592 :math: `(x, y, z)` is the unit vector corresponding to the rotation axis. The limit is applied to the absolute value
593593 of the rotation angle :math: `\theta `. At runtime the limit is determined by the larger of the two range parameters.
594594 For semantic clarity however, one should use the second range parameter to specify the limit and set the first range
@@ -1022,7 +1022,7 @@ compute it.
10221022
10231023Note that the quadratic term in the inverse problem is weighted by :math: `R` instead of :math: `A+R`. This tells us two
10241024things. First, in the limit :math: `R \to 0 ` corresponding to hard constraints the inverse is no longer defined, as one
1025- would expect. Second and more useful, the inverse problem is diagonal, i.e. it decouples into independent optimization
1025+ would expect. Second and more useful, the inverse problem is diagonal, i.e., it decouples into independent optimization
10261026problems over the individual constraint forces. The only remaining coupling is due to the constraint set :math: `\Omega `,
10271027but that set is also decoupled over the conceptual constraints discussed earlier. It turns out that all these
10281028independent optimization problems can be solved analytically. The only non-trivial case is the elliptic friction cone
@@ -1110,7 +1110,7 @@ Substituting :math:`f^+` in the constraint dynamics :eq:`eq:identity` and rearra
11101110
11111111 Thus the constrained acceleration interpolates between the unconstrained and the reference acceleration. In particular,
11121112in the limit :math: `R \to 0 ` we have a hard constraint and :math: `a^1 = a^*`, while in the limit :math: `R \to \infty ` we
1113- have have an infinitely soft constraint (i.e. no constraint) and :math: `a^1 = a^0 `. It is then natural to introduce a
1113+ have have an infinitely soft constraint (i.e., no constraint) and :math: `a^1 = a^0 `. It is then natural to introduce a
11141114model parameter which directly controls the interpolation. We call this parameter *impedance * and denote it :math: `d`.
11151115It is a vector with dimensionality :math: `n_C` satisfying :math: `0 <d<1 ` element-wise. Once it is specified, we compute
11161116the diagonal elements of the regularizer as
0 commit comments