Ориентация от показаний магнитометра и акселерометра
возвращает orientation
= ecompass(accelerometerReading
,magnetometerReading
)quaternion
который может вращать величины из родительской (NED) системы координат в дочернюю (sensor) систему координат.
задает формат ориентации следующим orientation
= ecompass(accelerometerReading
,magnetometerReading
,orientationFormat
)quaternion
или матрица вращения.
также позволяет вам задать систему координат orientation
= ecompass(accelerometerReading
,magnetometerReading
,orientationFormat
,'ReferenceFrame'
,RF)RF
от orientation
выход. Задайте RF
как 'NED'
(Северо-Восток-Даун) или 'ENU'
(Восток-Север-Вверх). Значение по умолчанию 'NED'
.
ecompass
функция возвращает кватернион или матрицу вращения, которая может вращать величины от родительского элемента (NED для примера) система координат к дочернему (датчику) система координат. Для обоих выходов форматов ориентации оператор поворота определяется вычислением матрицы поворота.
Матрица вращения сначала вычисляется с помощью посредника:
а затем нормированный столбчатый. a и m являются accelerometerReading
вход и magnetometerReading
вход, соответственно.
Чтобы понять вычисление матрицы вращения, рассмотрите произвольную точку на Земле и ее соответствующая локальная система координат. Предположим, что каркас кузова датчика [x, y, z] с тем же источником.
Напомним, что ориентация тела датчика определяется как оператор вращения (матрица вращения или кватернион), необходимый для поворота величины из родительской (NED) системы координат в дочернюю (тело датчика) систему координат:
где
R - матрица вращения 3 на 3, которая может быть интерпретирована как ориентация дочерней системы координат.
p родительский элемент является вектором 3 на 1 в родительской системе координат.
p дочерний элемент является вектором 3 на 1 в дочерней системе координат.
Для стабильного тела датчика акселерометр возвращает ускорение за счет силы тяжести. Если тело датчика идеально выровнено с системой координат NED, все ускорения из-за силы тяжести расположены вдоль оси z, и акселерометр читает [0 0 1]. Рассмотрим матрицу поворота, необходимую для поворота величины из системы координат NED в величину, указанную акселерометром.
Третий столбец матрицы вращения соответствует показанию акселерометра:
Показания магнитометра указывают на магнитный север и находятся в плоскости N - D. Снова рассмотрим каркас кузова датчика, выровненную с системой координат NED.
По определению E - ось перпендикулярна N - D самолет, поэтому <reservedrangesplaceholder7> ⨯ <reservedrangesplaceholder6> = E, в рамках некоторого амплитудного масштабирования. Если каркас кузова датчика выровнен с NED, вектор ускорения от акселерометра и вектор магнитного поля от магнитометра лежат в плоскости N - D. Поэтому m ⨯ a = y, снова с некоторым амплитудным масштабированием.
Рассмотрим матрицу вращения, необходимую для поворота NED в дочернюю систему координат [x y z].
Второй столбец матрицы вращения соответствует перекрестному продукту показания акселерометра и показанию магнитометра:
По определению матрицы поворота столбец 1 является перекрестным продуктом столбцов 2 и 3:
Наконец, матрица вращения нормирована по столбцам:
Примечание
ecompass
алгоритм использует магнитный север, а не истинный север для системы координат NED.
[1] Комплексирование датчиков с открытым исходным кодом. https://github.com/memsindustrygroup/Open-Source-Sensor-Fusion/tree/master/docs