AHRS Calibration Module Documentation
This module contains functions to calibrate AHRS.
Functions:
| Name | Description |
|---|---|
cal_ahrs_so3 |
Calibration of the attitude extrinsics between two AHRS systems using the Special Orthogonal Group (SO(3)) optimization. The calibration is performed by minimizing the sum of squared residuals of the error of projecting the attitude of AHRS 2 to the attitude of AHRS 1. |
cal_ahrs_so3(time_ahrs_1, time_ahrs_2, rph_ahrs_1, rph_ahrs_2, low_pass_filter=True, ignore_heading=False)
Calibration of the attitude extrinsics between two AHRS systems using the Special Orthogonal Group (SO(3)) optimization. The calibration is performed by minimizing the sum of squared residuals of the error of projecting the attitude of AHRS 2 to the attitude of AHRS 1.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
time_ahrs_1
|
Union[ndarray, List[float]]
|
Time data of AHRS 1. |
required |
time_ahrs_2
|
Union[ndarray, List[float]]
|
Time data of AHRS 2. |
required |
rph_ahrs_1
|
Union[ndarray, List[float]]
|
Roll-Pitch-Heading data of AHRS 1. |
required |
rph_ahrs_2
|
Union[ndarray, List[float]]
|
Roll-Pitch-Heading data of AHRS 2. |
required |
low_pass_filter
|
bool
|
Apply low-pass filter to the input signals. Defaults to True. |
True
|
ignore_heading
|
bool
|
If True, fit the calibration using only each AHRS's gravity direction (derived from roll/pitch), instead of the full attitude. This is immune to heading miscalibration in either AHRS -- a rotation about the vertical axis cannot change the measured gravity direction, so heading has no influence on the fit at all. Note this is NOT equivalent to zeroing the heading angle before building the full rotation matrices: roll-pitch-heading is not an orthogonal decomposition of SO(3), so that approach leaves a residual heading-dependent term entangled in the result and does not remove heading's influence. Recovering the full 3-DOF misalignment this way requires the data to have enough roll/pitch excitation (a vehicle that stays nearly level throughout the dataset under-constrains the misalignment's own heading-axis component). Defaults to False. |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
rot_1_2 |
ndarray
|
Rotation matrix of AHRS 2 with respect to AHRS 1. |
Raises:
| Type | Description |
|---|---|
TypeError
|
If the inputs are not of the correct type. |
ValueError
|
If the inputs are not of the correct dimensions. |
ValueError
|
If the data from AHRS 1 and AHRS 2 do not have the same number of measurements. |
ValueError
|
If the time_ahrs_1 is not in the time range of AHRS 2. |
Source code in navlib/cal/cal_ahrs.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | |