Add algorithm to compute the Jacobian derivative of a link #169
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new RBDA to compute the derivative of the free-floating Jacobian$\dot{J}_{W,L}$ . If:
we first compute the following full Jacobian derivative (with all columns filled, similarly to what was done in #121):
and then mask the joint-related columns using the support parent array$\kappa(i)$ of the i-th link associated to the frame $L$ :
The mask in practice sets to zero all the joint-related columns corresponding to the chains not supporting the link$L$ , i.e. not in the path $\pi_B(L)$ .
All of this is computed with the new
jaxsim.rbda.jacobian.jacobian_derivative_full_doubly_left
function.This is not enough, since we are interested to compute quantities like$\dot{J} \boldsymbol{\nu}$ . Note that in this specific case, we already have this product computed by #127, it's only an use-case example. Though, we also need to change the output and input velocity representations to something else in order to support body-fixed, mixed, and inertial-fixed variants. Therefore, we need to properly convert ${}^B \dot{J}_{W,L/B}$ to a generic ${}^O \dot{J}_{W,L/I}$ .
The most generic formulation of the change of representations of the free-floating Jacobian is the following1:
Therefore, if we want the derivative${}^O \dot{J}_{W,L/I}$ , we need to also consider the derivatives of the different $\mathbf{X}$ matrices. The
jaxsim.api.link.jacobian_derivative
accounts for them. For this, we can use the following relation:Finally:
where$I \in \{W, \, B,\, B[W]\}$ and $O \in \{W, \, L,\, L[W] \}$ .
📚 Documentation preview 📚: https://jaxsim--169.org.readthedocs.build//169/
Footnotes
Diego Ferigo, Eq (2.28) pag. 67, Simulation Architectures for Reinforcement Learning applied to Robotics, Ph.D. thesis, URL. ↩