Системы координат: земная и связанная

Чтобы управлять аппаратом, нужно договориться, относительно чего меряем «вверх», «вперёд» и «вбок».

Связанная система координат жёстко привязана к корпусу аппарата (нос, правое крыло, низ), а земная — к земле (север, восток, вниз).

Две системы

В авиации часто используют земную систему NED (North-East-Down): ось X на север, Y на восток, Z вниз. И связанную систему: ось вперёд (по носу), ось вправо, ось вниз относительно корпуса. Когда аппарат наклоняется, связанные оси поворачиваются вместе с ним, а земные остаются на месте.

Зачем две? Датчики (гироскоп, акселерометр) меряют в связанной системе — «что чувствует корпус». А маршрут и сила тяжести заданы в земной. Управление — это постоянный перевод между ними.

Поворот на плоскости

Простейший случай — поворот вектора на угол $\theta$ вокруг вертикали (рыскание). Координаты пересчитываются так:

$$ \begin{cases} x' = x\cos\theta - y\sin\theta \\ y' = x\sin\theta + y\cos\theta \end{cases} $$

import math
# Вектор "вперёд" аппарата в связанной системе: (1, 0)
# Аппарат повёрнут на 30 градусов по рысканию.
theta = math.radians(30)
x, y = 1.0, 0.0
x2 = x * math.cos(theta) - y * math.sin(theta)
y2 = x * math.sin(theta) + y * math.cos(theta)
print("Направление носа в земной СК:")
print("x =", round(x2, 3), "y =", round(y2, 3))
print("Длина вектора:", round(math.hypot(x2, y2), 3))

Вывод:

Направление носа в земной СК:
x = 0.866 y = 0.5
Длина вектора: 1.0

Нос, повёрнутый на 30°, смотрит на $(\cos 30°, \sin 30°)=(0{,}866,\,0{,}5)$. Длина сохранилась — поворот не меняет длину вектора, это важное свойство корректной матрицы поворота.

Как работает под капотом

В трёх измерениях поворот задаётся матрицей $3\times 3$. Полный переход из связанной системы в земную — это перемножение трёх таких матриц (по числу углов). Автопилот вычисляет эту матрицу каждый цикл, чтобы, например, понять, куда в земных координатах направлен вектор тяги наклонённого коптера.

Частые ошибки

  • Путать, в какой системе заданы показания датчика: гироскоп — в связанной, GPS — в земной.
  • Брать синусы и косинусы от градусов вместо радиан (в Python функции ждут радианы).
  • Использовать «матрицу поворота», у которой не сохраняется длина вектора, — признак ошибки.

Итог

  • Земная система (NED) неподвижна; связанная вращается с корпусом.
  • Датчики меряют в связанной СК, маршрут задан в земной — нужен перевод.
  • Поворот сохраняет длину вектора; в 3D — матрица из трёх углов.
Проверьте себя
1. В какой системе координат измеряет показания бортовой гироскоп?
AВ земной (NED)
BВ связанной с корпусом аппарата
CВ системе GPS-спутников
DВо всех сразу
2. Какое свойство обязательно сохраняет корректная матрица поворота?
AЗнак координат
BДлину вектора
CНулевую координату Z
DСкорость вращения