I am trying to simulate and implement the controller of the paper Geometric Tracking Control of a Quadrotor UAV on SE(3). To do this I need to first implement the dynamics of the quadrotor. According to the paper, the whole control structure looks as follows:

And the equations of motion are:

Now according to the setup given f and M as input I need to calculate the equations numbered 2 to 5. I see how we can calculate equation 2 and 3 and that is by calculating the acceleration and integrating over dt to get velocity and integrating again to get the position. But I don't understand how to calculate equations 4 and 5. In 5 I can calculate the angular acceleration from 5 by manipulating it but I don't know the angular velocity omega. Similarly in 4 I don't know the angular velocity omega to calculate R_dot. How do I calculate omega given just f and M? Is there a flaw in my understanding? Am I missing some piece of information? The link to the paper is here. Thanks in advance

If you want to compute the quadrotor dynamics you just need to plug M and f in (5) and (3) to get the accelerations, then you integrate the accelerations to get the velocities and you integrate the velocities to get the position/attitude. You will need to initialize the velocities and position/attitude to their initial values (typically zero velocity and initial position/attitude).
Note that $\hat{.}$ is a skew symmetric operator, and retrieving the roll pitch yaw angle from $\mathbf{R}$ an be done easily based on the expression of some of its components. The tricky part is integrating the $\dot{\mathbf{R}}$
• Hi, This is really helpful. I have implemented the dynamics except for equation (4) which i completely fail to understand. According to the paper R is the rotation matrix from body to the inertial frame. I fail to see what R_dot is? Since we are multiplying omega with R(Rotation matrix) then does R_dot represent the angular velocity in the body frame? But its a 3x3 matrix. My code thus far is here – danny Nov 21 '17 at 2:38
• The $\dot{R}$ is the time derivative of the rotation matrix, it's integration shall give you the possibility to retrieve the rotation angles used to generate the rotation matrix. – N. Staub Nov 21 '17 at 9:03
• ok. Can you explain why we have to multiply it with omega to get it's time derivative or point me to a resource where I could read about it? Also, what I'm trying to do in my code is integrate over angular velocity to get the euler angles and then I can get the new rotation matrix R from it. I feel that it's an easier way to get the euler angles. I think it's correct but I need a second opinion it. Do you think if this is a good strategy? This has been really helpful. Thanks again. – danny Nov 21 '17 at 16:40
• you do not multiply it by $\Omega$ but by this skew symmetric matrix of the vector of your rotational velocity, This is the formula you get if you write down the derivation of the rotation matrix w.r.t. time. In general one prefer to use rotation matrix in order to avoid singularities (gimbal lock) and the dozen of conventions all called "Euler angles". Moreover angular velocity are given around 'fixed' axes of teh body frame, while Euler angles are successive rotation along intermediate frame axes. – N. Staub Nov 22 '17 at 10:43
I think what you're missing is initial conditions; you need to define $\Omega$ at $t=0$. Give that angular velocity, you can then easily solve (4) for $\dot{R}$ and (5) for $\dot{\Omega}$. From that point forward you always know what $\Omega$ is at the start of the timestep so can continue to solve in the same manner.