[Math] Transforming NED Acceleration Profile to Body Frame through Quarternions

coordinate systemsquaternionstransformation

I have an acceleration profile which is in the North-East-Down coordinate system. The moving object in question is 6 DOF, however, and frequently approaches 90 degrees in roll, pitch, and yaw, making Euler angles a poor means for the transformation. I'm very inexperienced with quaternions and having a hard time making, if not figuring out if it's even possible to do this. I'd like to have a quaternion rotation matrix that changes my velocity profile from inertial to body frame horizontal and vertical accelerations if possible. I'll take anything that might help.

Best Answer

I will assume that your local coordinate system corresponds to your global coordinate system when yaw, pitch and roll are zero. By that I mean that x = forward, y = right, z = down (SAE standard). I will also assume that yaw, pitch and roll are done with respect to local axes in that order in the right hand sense. By this I mean that first you yaw about Z (CW), then pitch about Y (Up) and then roll about X (right). You can then define a quaternion for each of these. Let $\psi = $ yaw angle, $\phi = $ =pitch angle, and $\theta =$ roll angle. Then: $$q_y = [\cos(\psi/2), (0,0,1)\sin(\psi/2)]$$ $$q_p = [\cos(\phi/2), (0,1,0)\sin(\phi/2)]$$ $$q_r = [\cos(\theta/2), (1,0,0)\sin(\theta/2)]$$

Then your composed rotation would be

$$q = q_y q_p q_r$$

in that order. You can then rotate a vector $a = [a_x, a_y, a_z]$ from the global (NED) to local frame (SAE) by using the inverse transformation

$$\bar{a} = q^*aq$$

using normal multiplication rules for quaternions. You can also work out a normal rotation matrix from $q$ if that is what you prefer. The equation is found in many places on the web like here.

I gave you just the highlights assuming that you have some familiarity with the algebra of quaternions.