Pywayne Calibration
pywayne.calibration.MagnetometerCalibrator provides magnetometer calibration using sensor data (accelerometer, gyroscope, magnetometer).
Quick Start
from pywayne.calibration import MagnetometerCalibrator
import numpy as np
# Sensor data: ts (N,), acc (N,3), gyro (N,3), mag (N,3)
calibrator = MagnetometerCalibrator(method='close_form')
Sm, h = calibrator.process(ts, acc, gyro, mag)
# Sm: Soft-iron matrix (3x3)
# h: Hard-iron offset vector (3,)
Input Data Format
Sensor data must be numpy arrays with matching sample counts:
ts # (N,) - Timestamps (seconds)
acc # (N, 3) - Accelerometer [ax, ay, az]
gyro # (N, 3) - Gyroscope [gx, gy, gz]
mag # (N, 3) - Magnetometer [mx, my, mz]
Data requirements:
- Sensor data should cover various orientations for effective calibration
- Minimum data points required (exact number depends on calibration stability)
- Arrays must be C-contiguous (auto-converted internally)
Calibration Parameters
process() returns:
| Parameter | Shape | Description |
|---|---|---|
Sm | (3, 3) | Soft-iron matrix |
h | (3,) | Hard-iron offset vector |
Usage in Application
Apply calibration to raw magnetometer readings:
# Calibrated reading
m_calibrated = Sm @ (m_raw - h)
Temporal Calibration
Temporal calibration module exists but is reserved for future expansion. Currently no functionality is implemented.
Important Notes
- Dependencies: Requires
vqf(VQF quaternion filter) andqmt(quaternion math) modules - Method: Currently only supports
close_formmethod - Orientation: Uses VQF for sensor fusion and orientation estimation during calibration
- Output: Prints calibration parameters during processing