You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Inverting the mass matrix $M \in \mathbb{R}^{(6+n)\times(6+n)}$ is a operation commonly used in model-based control. Also for simulation purpose, it can be used to compute the forward dynamics without relying on ABA, like we do in:
we can exploit the known topology of the kinematic tree defined by the parent array $\lambda(i)$ to speed up the inversion of $M_{ss} \in \mathbb{R}^{n \times n}$.
Enhancing the performance of this inversion could enable downstream users to implement alternative forward dynamics beyond our ABA and CRB implementations, for example including second-order dynamics like advanced motor dynamics (e.g. #62) or musculoskeletal models. If performance are not too far from ABA, it could be a great alternative of include these effects in ABA since it might be a daunting task.
Note that the code from Featherstone only inverts $M_{ss}$. We can exploit the following property to extend the result to the free-floating mass matrix:
A while ago I started playing a bit around with this type of inversion, but I couldn't get any better performance than calling jax.numpy.linalg.inv. I came up to the conclusion that the best approach to get the inverse of the mass matrix is to implement a new RBDA that directly provides $M(\mathbf{q})^{-1}$:
Carpentier J., Analytical Inverse of the Joint Space Inertia Matrix, URL.
Inverting the mass matrix$M \in \mathbb{R}^{(6+n)\times(6+n)}$ is a operation commonly used in model-based control. Also for simulation purpose, it can be used to compute the forward dynamics without relying on ABA, like we do in:
jaxsim/src/jaxsim/api/model.py
Line 667 in 4fd2032
If we decompose the free-floating as follows:
we can exploit the known topology of the kinematic tree defined by the parent array$\lambda(i)$ to speed up the inversion of $M_{ss} \in \mathbb{R}^{n \times n}$ .
Enhancing the performance of this inversion could enable downstream users to implement alternative forward dynamics beyond our ABA and CRB implementations, for example including second-order dynamics like advanced motor dynamics (e.g. #62) or musculoskeletal models. If performance are not too far from ABA, it could be a great alternative of include these effects in ABA since it might be a daunting task.
Some references:
CRBA.pdf
from https://royfeatherstone.org/teaching/CompuRobDyn2022.zipNote that the code from Featherstone only inverts$M_{ss}$ . We can exploit the following property to extend the result to the free-floating mass matrix:
https://www.wikiwand.com/en/Block_matrix#Block_matrix_inversion
The text was updated successfully, but these errors were encountered: