robotology / idyntree

Multibody Dynamics Library designed for Free Floating Robots
BSD 3-Clause "New" or "Revised" License
166 stars 66 forks source link

Implement the derivative of inverse dynamics #503

Open gabrielenava opened 5 years ago

gabrielenava commented 5 years ago

Given a floating base system subject to a set of rigid constraints:

\begin{equation} M \dot{\nu} + h = B\tau + J_c^\top f \\ J_c \dot{\nu} + \dot{J}_c \nu = 0 \end{equation}

It would be nice to be able to compute the derivative of Eq. (1), namely:

\begin{equation} M \ddot{\nu} + \dot{M} \dot{\nu} + \dot{h} = B\dot{\tau} + \dot{J}_c^\top f + J_c^\top \dot{f}\\ 2\dot{J}_c \dot{\nu} + J_c \ddot{\nu} + \ddot{J}_c \nu = 0 \end{equation}

in order to design control laws that uses as control input the derivative of the joint torques, which is directly related to the motor current.

In order to use Eq. (2) for control purposes, the following calculations are required:

How to proceed

  1. Write down the algorithm's pseudocode;
  2. Implement the contact constraint bias acc derivative;
  3. Implement the full inverse dynamics derivative;
  4. Discuss on how to implement $\dot{J}_c$;
  5. Tests and debugging.

I will open all the issues when I start to address this activities.

gabrielenava commented 5 years ago

Related issue: https://github.com/robotology/idyntree/issues/85