Pywayne AHRS Tools
This module provides quaternion-based AHRS (Attitude and Heading Reference System) utilities.
Quick Start
from pywayne.ahrs.tools import quaternion_decompose, quaternion_roll_pitch_compensate
import numpy as np
# Quaternion decomposition
q = np.array([0.70710678, 0, 0, 0.707962]) # w, x, y, z
angle_all, angle_heading, angle_inclination = quaternion_decompose(q)
# Roll/pitch compensation
q_comp = quaternion_roll_pitch_compensate(q)
Quaternion Decomposition
from pywayne.ahrs.tools import quaternion_decompose
import numpy as np
# Input quaternion (w, x, y, z)
q = np.array([w, x, y, z])
# Decompose into angles
angle_all, angle_heading, angle_inclination = quaternion_decompose(q)
# angle_all: Rotation angles around all axes (vertical + horizontal)
# angle_heading: Angle around vertical axis (inclination)
# angle_inclination: Angle around horizontal axis (bank)
Roll/Pitch Compensation
from pywayne.ahrs.tools import quaternion_roll_pitch_compensate
import numpy as np
# Input quaternion (w, x, y, z)
q = np.array([0.989893, -0.099295, 0.024504, -0.098242])
# Compensate pitch and roll to zero
q_comp = quaternion_roll_pitch_compensate(q)
Requirements
numpy- Array operationsqmt- OpenCV's quaternion module for conversions
Notes
- Decomposition returns both angles (in radians) and heading/inclination
angle_allis computed using 2*arccos/abs(quaternion_z)angle_headingusesarctan2(np.abs(quaternion_xy))angle_inclinationuses2*arcsin(np.abs(quaternion_xy))- Roll/pitch compensation sets pitch and roll of q_comp to zero by using inverse rotation