2014-10-16 2 views
0

У меня есть два движущихся объекта с данными положения и ориентации (углы Эйлера, кватернионы) относительно кадра координат ECI. Я хотел бы рассчитать AZ/EL из того, что я предполагаю, является «рамкой тела» первого объекта. Я попытался преобразовать оба объекта в тело кадра через матрицы вращения (последовательность вращения X-Y-Z и Z-Y-X) и вычислить целевой вектор AZ/EL таким образом, но не имел успеха. Я также попытался получить положения рамы тела и вычислить ось/углы тела и вернуться обратно к Эйлерам (относительно рамы тела). Я никогда не знаю, как оси координат системы, которые я предположительно создаю, выравниваются вдоль моего объекта.Азимут и возвышение от одного движущегося объекта к другому относительно ориентации первого объекта

Я нашел пару других вопросов, как это ответил на решения Quaternion, так что это может быть лучший путь, однако мой фон Кватерниона в лучшем случае слаб, и я не вижу, как полученные вычисления приводят к целевому вектору.

Любые советы были бы высоко оценены, и я рад поделиться своим успехом/опытом в будущем.

+0

Будет что-то вроде [this] (http://www.mathworks.nl/help/aerotbx/ug/quat2angle.html) help? Если у вас нет Aerospace Toolbox, вы можете легко найти подобные функции в Интернете. – MeMyselfAndI

+0

Я считаю, что это помогло бы, если бы у меня был кватернион относительно рамки тела между этими двумя объектами. Легко ли вычислить что-то подобное? – bottleR

ответ

1
  1. получить текущий НФИ матрицу преобразования для движущегося объекта

    вам сусло знать позицию и по крайней мере два направления из Северной, Восточной, Высота (до или высота) от перемещения объект в противном случае является вашей проблемой неразрешимый не имеет значения. Эта матрица/рама называется NEH (X = север, Y = Восток, Z = высота) или иногда также ENU (X = Восток, Y = север, Z = вверх). Посмотрите здесь transform matrix anatomy и здесь Earth's NEH construction и измените положение и радиус в соответствии с вашим движущимся объектом.

  2. новообращенный точка P0 от ГКС (глобальная система координат) в НФИ

    просто: P1=Inverse(NEH)*P0 где P1 теперь в НФИ ЛСК (локальная система координат). Оба P0,P1 в однородных координатах { x,y,z,w=1 }, чтобы умножения с 4x4 матрицы, так что вы можете вычислить Азимут и высоту непосредственно от него:

    NEH vs. Azimutal coordinates

    • Azimut=atanxy(P1.x,P1.y);
    • Elevation=atan(P1.z/sqrt((P1.x*P1.x)+(P1.y*P1.y)));

    где atanxy мой atan2 (4 квадранта atan) сначала dx затем dy. Я думаю, atan2 в Matlab имеет его в обратном порядке.

[Примечания]

Всегда визуально проверить все кадры (особенно Нех). Просто нарисуйте 3 оси в виде строк некоторой длины, чтобы проверить правильность результата. Он должен выглядеть как на изображении, просто по-разному для каждой оси. Вы можете перейти к следующей точке, только если NEH ОК!

Проверить atan2/atanxy порядок операндов, а также проверить функции гониометрических функций (rad,deg), чтобы избежать путаницы.