Skip to content

Instantly share code, notes, and snippets.

@peteroid
Last active December 16, 2017 12:30
Show Gist options
  • Select an option

  • Save peteroid/60be49c185e6e29fd04fe5254ebb47d0 to your computer and use it in GitHub Desktop.

Select an option

Save peteroid/60be49c185e6e29fd04fe5254ebb47d0 to your computer and use it in GitHub Desktop.
Get the quaternion from arduino output string with filter
// return default quat if packet is invalid
Quaternion getQuatFromString (string s, Quaternion defaultQuat) {
char[] packet = s.ToCharArray ();
string str = "";
foreach (char c in packet) {
str += (int)c + " ";
}
//Debug.Log (serialRead + str);
if (packet.Length != 19 || packet[0] != 36 || packet[18] != 13) {
return defaultQuat;
} else {
q[0] = ((packet[2] << 8) | packet[3]) / 16384f;
q[1] = ((packet[4] << 8) | packet[5]) / 16384f;
q[2] = ((packet[6] << 8) | packet[7]) / 16384f;
q[3] = ((packet[8] << 8) | packet[9]) / 16384f;
for (int i = 0; i < 4; i++) if (q[i] >= 2) q[i] = -4 + q[i];
//Debug.Log (quat.x + " " + quat.y + " " + quat.z + " " + quat.w);
return new Quaternion (q [1], q [2], q [3], q [0]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment