# Virtual work (generalized forces) for rotation with Euler angles

Here is what we know from virtual work: \begin{equation} \delta W=\sum_{i=1}^N{\vec F_i\cdot\delta\vec r_{i}} \end{equation} Where $N$ is the number of bodies in the system. I am considering a quadcopter, modeled as a rigid body so it is just one body and we have: $$\delta W=\vec F\cdot\delta\vec r$$ My question concerns only rotational dynamics, so let's focus on just the torques. Let us rename $\vec F$ to $\vec M$ just to make it clear that we are talking about torques (moments): $$\delta W=\vec M \cdot \delta\vec r$$ Expressed in the quadcopter frame (call it frame $B$), the moments exerted by the propellers on the quadcopter are, generally: $$\vec M=\begin{bmatrix} \tau_x^B \\ \tau_y^B \\ \tau_z^B \end{bmatrix}$$ Because we are talking about moments, the "position" vector $\vec r$ actually holds the rotations expressed in the same frame as $\vec M$. Because I express $\vec M$ in the $B$ frame, I need to express the rotations in the $B$ frame. I am using the Tait-Bryan Euler angle convention. Starting from the inertial frame $I$ then:

1. Yaw by $\psi$ around $z_I$, the result is the $\{x',y',z'\}$ frame
• Corresponding rotation matrix is $R_\psi$
2. Pitch by $\theta$ around $y'$, the result is the $\{x'',y'',z''\}$ frame
• Corresponding rotation matrix is $R_\theta$
3. Roll by $\phi$ around $x''$, the result is the $\{x_B,y_B,z_B\}$ frame
• Corresponding rotation matrix is $R_\phi$

You see that each Euler angle is in a different frame: $\psi$ is in the $I$ frame, $\theta$ is in the $(')$ frame and $\phi$ is in the $('')$ frame. From what I know, we transform between angular rates in the $B$ frame and the Euler angle time derivatives using:

$$\omega=R_\phi\begin{bmatrix}\dot\phi\\0\\0\end{bmatrix}+ R_\phi R_\theta\begin{bmatrix}0\\\dot\theta\\0\end{bmatrix}+ R_\phi R_\theta R_\psi\begin{bmatrix}0\\0\\\dot\psi\end{bmatrix}$$

However, $\omega$ is not integrable (see sub-section 3.17 of http://people.mech.kuleuven.be/~bruyninc/tmp/HermanBruyninckx-robotics.pdf). Therefore angles in the body frame as such do not exist and I cannot simply write:

$$\vec r=R_\phi\begin{bmatrix}\phi\\0\\0\end{bmatrix}+ R_\phi R_\theta\begin{bmatrix}0\\\theta\\0\end{bmatrix}+ R_\phi R_\theta R_\psi\begin{bmatrix}0\\0\\\psi\end{bmatrix}$$

Where $\vec r$ is our "position" vector in the virtual work equation containing three angles in the $B$ frame identifying the quad-copter's attitude. The end motivation is to apply the generalized force relation: $$Q_j=\sum_{i=1}^N{\vec F_i \cdot \frac{\partial \vec r_i}{\partial q_j}}$$ Where $q_j$ are the generalized coordinates, for me these are:

• $q_1=\phi$
• $q_2=\theta$
• $q_3=\psi$

I really appreciate your help for my question: find the expression for the generalized forces $Q_j$ (well, generalized torque really in this case).

• Did you mean $\dot{\omega}=$ or ${\omega}=$ ? Angular velocity is $\omega=f(\dot{\phi},\ldots)$ and angular acceleration is $\dot{\omega}=f(\dot{\phi},\ddot{\phi},\ldots)$ – John Alexiou Jul 29 '15 at 18:09
• You are correct, the dot is wrong – space_voyager Jul 29 '15 at 18:17

## 1 Answer

The velocity jacobian is $\vec{\omega}_B = J\, \dot{q}$ with $q=(\phi,\theta,\psi)$. This is used to transform between the generalized forces/torques $Q$ and the vector torques $\vec{M}_B=(\tau_x^B,\tau_y^B,\tau_z^B)$

$$Q = J^\intercal \vec{M}_B$$

The power through the joint is

$$Q \cdot \dot{q} = Q^\intercal \dot{q} = \left(J^\intercal \vec{M}_B\right)^\intercal \dot{q} = \vec{M}_B^\intercal J \dot{q} = \vec{M}_B^\intercal \vec{\omega} =\vec{M}_B \cdot \vec{\omega} \hphantom{MMM} \checkmark$$