# Derivation of Newton-Euler Inverse Dynamics

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.

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}$$