Massaraksh> Ну, я заодно и пытаюсь понять алгоритм определения текущей координаты объекта в зависимости от показаний "полноценной системы инерциальных датчиков".
У меня почти написана прога для МК.
Полностью написано получение направляющих косинусов из данных гироскопов.
На стр. 13 этой темы есть намёки.
Я всё считаю в абсолютной системе координат с центром в центре Земли (Земля = пуп Вселенной).
Система не вращается с Землёй, ось Z направлена на северный полюс, X — на весеннее равноденствие, Y — на 90 градусов от X, знак не помню.
Вот ракета стоит на старте — на расстоянии 6 тысяч км от начала координат, а её оси наклонены под большими углами к осям системы, и она движется со скоростью 400 м/с вместе с поверхностью Земли.
Для определения ориентации ракеты я не использую углы, а использую направляющие косинусы.
(см. например:
Направляющие косинусы вектора.)
Это позволяет не нагружать МК вычислениями тригонометрических функций.
Направление каждой из трёх осей ракеты задаётся тремя косинусами.
Итого, получается 9 величин.
Это, вообще-то, сильно избыточно. Но зато есть удобство.
Из показаний гироскопов я как раз получаю изменение этих 9 косинусов (cosX_x и другие восемь).
Чтоб получить ускорение в абсолютной системе, я беру показания акселерометра x и умножаю на три косинуса оси x. И получаю "кусочки" компонентов ускорения в абсолютной системе:
aX_x = ax * cosX_x
aY_x = ax * cosY_x
aZ_x = ax * cosZ_x
Аналогично для акселорометров y и z: aX_y, aY_y, aZ_y, aX_z, aY_z, aZ_z.
Складываю "кусочки" и получаю компоненты ускорения в абсолютной системе (с учётом поля тяжести, конечно):
aX = aX_x + aX_y + aX_z - gX
aY = aY_x + aY_y + aY_z - gY
aZ = aZ_x + aZ_y + aZ_z - gZ
Девять умножений, девять сложений, никакой тригонометрии.
Дальше примитивное интегрирование в абсолютной системе:
вектор скорости: v = v + a * dt
вектор координат: r = r + v * dt
Всё.