CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

LieGroups/SO3/Quat/kinematics.mo

Download original .moGitHub source

Documentation: LieGroups.SO3.Quat.kinematics

within LieGroups.SO3.Quat;
function kinematics "Quaternion kinematics: q_dot = 0.5 * q * [0, omega]"
  input Real q[4] "Unit quaternion {w,x,y,z}";
  input Real omega[3] "Body-frame angular velocity {p,q,r}";
  output Real q_dot[4] "Time derivative of quaternion";
algorithm
  q_dot[1] := 0.5 * (-q[2]*omega[1] - q[3]*omega[2] - q[4]*omega[3]);
  q_dot[2] := 0.5 * ( q[1]*omega[1] - q[4]*omega[2] + q[3]*omega[3]);
  q_dot[3] := 0.5 * ( q[4]*omega[1] + q[1]*omega[2] - q[2]*omega[3]);
  q_dot[4] := 0.5 * (-q[3]*omega[1] + q[2]*omega[2] + q[1]*omega[3]);
end kinematics;