2
$\begingroup$

I'm currently studying from the book Modern Robotics - Mechanics, Planning, and Control, and I'm having a hard time following the derivation of the Newton-Euler inverse dynamics algorithm, particularly the expression for the acceleration of rigid link {i}.

For clarity, the notation is defined as follows:

  • $\mathcal{A}_i$: Screw axis of link frame {i}, expressed in frame-{i} coordinates
  • $\mathcal{V}_i$: Twist of link frame {i}, expressed in frame-{i} coordinates
  • $T_{i-1,i}(\theta)$: Configuration of frame {i} relative to {i-1} given the joint variable $\theta_i$
  • $[a]_\times$: Skew-symmetric representation of $a\in\mathbb{R}^3$ $$[a]_\times = \begin{bmatrix}0&-a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0\end{bmatrix}$$
  • $[Ad_{T_{i,i-1}}]$: Matrix version of adjoint representation of $T_{i,i-1}$ $$[Ad_{T_{i,i-1}}]= \begin{bmatrix}R_{i,i-1}&0 \\ [p]_{\times}R_{i,i-1}&R_{i,i-1}\end{bmatrix}$$

Now, the expression for $\mathcal{V}_i$ can be written as: $$\mathcal{V_i} = \mathcal{A}_i\dot{\theta}_i + [Ad_{T_{i,i-1}}]\mathcal{V}_{i-1}$$

Taking the derivative $\mathcal{V_i}$, we obtain... $$\dot{\mathcal{V_i}} = \mathcal{A}_i\ddot{\theta}_i + [Ad_{T_{i,i-1}}]\dot{\mathcal{V}}_{i-1} + \frac{d}{dt}\left([Ad_{T_{i,i-1}}]\right)\mathcal{V}_{i-1}$$ To simplify the derivative expression, let us focus on the final term... $$ \begin{align} \frac{d}{dt}\left([Ad_{T_{i,i-1}}]\right)\mathcal{V}_{i-1} &= \frac{d}{dt}\left(\begin{bmatrix}R_{i,i-1}&0 \\ [p]_{\times}R_{i,i-1}&R_{i,i-1}\end{bmatrix}\right)\mathcal{V}_{i-1} \\ &= \left(\begin{bmatrix}\frac{d}{dt}(R_{i,i-1}) & 0 \\ \frac{d}{dt}([p]_{\times})R_{i,i-1} + [p]_{\times}\frac{d}{dt}(R_{i,i-1}) & \frac{d}{dt}(R_{i,i-1})\end{bmatrix}\right)\mathcal{V}_{i-1} \end{align} $$

At this point of the derivation, Lynch & Park make the following claims:

  • $\frac{d}{dt}(R_{i,i-1}) = -[\omega\dot{\theta}_i]_{\times}R_{i,i-1}$
  • $\frac{d}{dt}([p]_{\times})R_{i,i-1} + [p]_{\times}\frac{d}{dt}(R_{i,i-1}) = -[v\dot{\theta}_i]_{\times}R_{i,i-1}-[\omega\dot{\theta}_i]_{\times}[p]_{\times}R_{i,i-1}$

where $\mathcal{A}_i = \begin{bmatrix} \omega \\ v \end{bmatrix}$

Now, I understand that the negative signs arise as the screw axis is defined in frame {i} while the adjoint representation is for the configuration of {i-1} relative to {i}. The part I'm struggling to understand is how Lynch & Park flipped the order of matrix multiplication in the expression for $\frac{d}{dt}([p]_{\times})R_{i,i-1} + [p]_{\times}\frac{d}{dt}(R_{i,i-1})$.

The expression I was expecting was: $$\begin{align} \frac{d}{dt}([p]_{\times})R_{i,i-1} + [p]_{\times}\frac{d}{dt}(R_{i,i-1}) &= (-[v\dot{\theta}_i]_{\times})R_{i,i-1} + [p]_{\times}(-[\omega\dot{\theta}_i]_{\times}R_{i,i-1}) \\ &= -[v\dot{\theta}_i]_{\times}R_{i,i-1} - [p]_{\times}[\omega\dot{\theta}_i]_{\times}R_{i,i-1}\end{align}$$

I tried to see if my expression is equal to the expression given in the book to no avail. I feel like I'm missing something relatively obvious, but I can't seem to figure it out. If anyone can give me some advice or direction, I would greatly appreciate it.

$\endgroup$

1 Answer 1

1
$\begingroup$

The issue is showing up as part of the simplification step. You are correct that the second term comes out to $[p]_\times \frac{d}{dt}(R_{i,i-1}) = [p]_\times (-[\omega \dot \theta_i]_\times R_{i,i-1})$. However, the issue is showing up because $\frac{d}{dt}([p]_\times) = [\dot p]_\times$ which is not the same as $-[\upsilon \dot \theta_i]_\times$. Therefore, the interim equation should actually be $$\frac{d}{dt}([p]_×)R_{i,i-1} + [p]_\times \frac{d}{dt}(R_{i,i-1}) = [\dot p]_\times R_{i,i-1} + [p]_\times (-[\omega \dot \theta_i]_\times R_{i,i-1})$$

Since the equation for $\dot p$ is actually $\dot p = (-\omega \dot \theta_i) \times p - \upsilon \dot \theta_i$, if we want to replace the reference to $\dot p$ with $\upsilon$ to make use of the twist directly, then the first term becomes $$\frac{d}{dt}([p]_×)R_{i,i-1} = [\dot p]_\times R_{i,i-1} = -\left[p \times (-\omega \dot \theta_i)\right]_\times R_{i,i-1} - [\upsilon \dot \theta_i]_\times R_{i,i-1}$$

If we use the Jacobi Identity, defined as $(a \times b) \times c = a \times (b \times c) - b \times (a \times c)$, on the second term, we can modify its form as follows (by assigning $a=p$, $b=-\omega \dot \theta_i$, and $c=R_{i,i-1}$ and rearranging the identity): $$[p]_\times ([-\omega \dot \theta_i]_\times R_{i,i-1}) = \left[p \times (-\omega \dot \theta_i)\right]_\times R_{i,i-1} - [\omega \dot \theta_i]_\times [p]_\times R_{i,i-1}$$

By dropping these two equations for each term into the interim equation from above and cancelling out the common term, we end up with Lynch & Park's result.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.