Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кватернион в углы Эйлера 
:(
    Опции темы
GreyBeholder
Дата 22.5.2012, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.11.2011

Репутация: нет
Всего: нет



Цитата(baldina @ 22.5.2012,  18:13)
а отчего он должен измениться?

от изменения входного диапазона на -180 - 180
PM MAIL   Вверх
baldina
Дата 22.5.2012, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



поглядите http://codepad.org/vSwYh8I4
может наведет на мысли smile

Добавлено через 5 минут и 26 секунд
кстати, прост любопытно: зачем вам углы эйлера? ось поворота+угол вроде удобнее
PM MAIL   Вверх
GreyBeholder
Дата 23.5.2012, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.11.2011

Репутация: нет
Всего: нет



Цитата(baldina @ 22.5.2012,  23:17)
поглядите http://codepad.org/vSwYh8I4
может наведет на мысли smile

Добавлено @ 23:23
кстати, прост любопытно: зачем вам углы эйлера? ось поворота+угол вроде удобнее

Всеравно потом искать 3 угла поврота вокруг XYZ.
Это связано с особенностями расположния приводов в манипуляторе.

Все работает если углы в диапазонах:
x - -180...180
y - -90...90
z - -180...180
В том числе и это  - http://codepad.org/vSwYh8I4
Как только хоть один выскакивает из диапазона, 2 остальных тоже переворачиваются.
Думаю теперь что делать с диапазонами, а точнее с "У" т.к. он -90...90 (маловато).

PM MAIL   Вверх
baldina
Дата 23.5.2012, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(GreyBeholder @  23.5.2012,  18:04 Найти цитируемый пост)
Думаю теперь что делать с диапазонами, а точнее с "У" т.к. он -90...90 (маловато).

таков арксинус)))

Добавлено через 32 секунды
Цитата(GreyBeholder @  23.5.2012,  18:04 Найти цитируемый пост)
Как только хоть один выскакивает из диапазона, 2 остальных тоже переворачиваются

так сделайте что б не "выскакивал"
данный вам пример ведь работает

Добавлено через 54 секунды
причем входные углы 0..360, как вы и хотели
PM MAIL   Вверх
GreyBeholder
Дата 23.5.2012, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.11.2011

Репутация: нет
Всего: нет



Цитата(baldina @ 23.5.2012,  18:29)
Цитата(GreyBeholder @  23.5.2012,  18:04 Найти цитируемый пост)
Думаю теперь что делать с диапазонами, а точнее с "У" т.к. он -90...90 (маловато).

таков арксинус)))

Добавлено @ 18:30
Цитата(GreyBeholder @  23.5.2012,  18:04 Найти цитируемый пост)
Как только хоть один выскакивает из диапазона, 2 остальных тоже переворачиваются

так сделайте что б не "выскакивал"
данный вам пример ведь работает

Добавлено @ 18:30
причем входные углы 0..360, как вы и хотели

Пример, так же как и мой код, работает в тех же диапазонах (ниче удивительного). сдвинуть диапазон - не проблема.
Вся путаница была во влиянии одного угла на другой, ну и в диапазонах.
PM MAIL   Вверх
baldina
Дата 23.5.2012, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(GreyBeholder @  23.5.2012,  20:31 Найти цитируемый пост)
Вся путаница была во влиянии одного угла на другой

они влияют, конечно. по определению. и есть такой забавный эффект - gimbal lock
PM MAIL   Вверх
tn17
Дата 2.10.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2013

Репутация: нет
Всего: нет



Всех приветствую!

Уважаемые, а что делать, если тангаж +- 90 градусов?

Формулы 
atan2 (2*(q1*q2+q3*q4),1-2*(q2*q2+q3*q3))
asin (2*(q1*q3-q4*q2))
atan2 (2*(q1*q4+q2*q3),1-2*(q3*q3+q4*q4))

тогда не работают - atan2 начинают делить случайные (из-за ошибок вычислений) малые числа и результат (крен и курс) непредсказуем? На индикацию что выводить? А ситуация вполне реальна: ракета стартует или самолет мертвую петлю делает...


И еще один вопрос: эти формулы для какой системы координат? У русских принято: ось Х - вперед (в нос), Y - вверх, Z - вправо. Тут так?
PM MAIL   Вверх
baldina
Дата 2.10.2013, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(tn17 @  2.10.2013,  11:00 Найти цитируемый пост)
У русских принято

это в математике принято  smile 

Цитата(tn17 @  2.10.2013,  11:00 Найти цитируемый пост)
atan2 начинают делить случайные (из-за ошибок вычислений) малые числа

atan2(0,x) даёт 0
atan2(x,0) даёт pi/2 или -pi/2 в зависимости от знака x.
так что его результат корректен и предсказуем, даже когда значения q1*q2+q3*q4 малы.

если же дело в погрешности вычислений, надо разбираться с кодом, где эти погрешности накапливаются, а не с углами.
PM MAIL   Вверх
tn17
  Дата 3.10.2013, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2013

Репутация: нет
Всего: нет



1. к сожалению - нет. Полно источников, где ось Z направлена вверх или вниз. Еще в англоязычном источнике (в этой теме на стр.1) курс измеряется от оси Z против часовой стрелки...  smile  

2. при Тангаже=+-90 +-1 градус, не только q1*q2+q3*q4 ~ 0, но и 1-2*(q2*q2+q3*q3)~ 0, и 1-2*(q3*q3+q4*q4)~ 0, и q1*q4+q2*q3 ~ 0, т.ч. речь идет о ситуации ~0 / ~0,  где эти ~0 - порядка ошибки вычисления sin и cos.
Переход к long double особо ситуацию не спасает...
 Пока делаю так: если и числитель, и знаменатель по абс. величине больше 0.001, то считаю курс и крен 
через atan2. Иначе просто выдаю на индикацию последние вычисленные значения курса и крена.

3. По поводу http://codepad.org/vSwYh8I4. Не понял следующего: угол Эйлера Х - это курс или крен? По формулам из кода: угол Y  - это Тангаж. Правильно? Тогда логично предположить, что угол Х - курс.  
PM MAIL   Вверх
baldina
Дата 3.10.2013, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



логично smile
PM MAIL   Вверх
Pavia
Дата 3.10.2013, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(tn17 @  3.10.2013,  11:08 Найти цитируемый пост)
 угол Эйлера Х - это курс или крен?

Курс, крен и тангаж это углы поворот для летательного аппарата и с углами Эйлера они не имеют ничего общего. Удивительно, что многие их путают.

Это сообщение отредактировал(а) Pavia - 3.10.2013, 14:01
PM MAIL   Вверх
tn17
Дата 3.10.2013, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2013

Репутация: нет
Всего: нет



Цитата(baldina @ 3.10.2013,  13:25)
логично smile

я так понял, что по п.2 возражений нет?

Добавлено через 8 минут и 59 секунд
Цитата(Pavia @ 3.10.2013,  13:45)
Цитата(tn17 @  3.10.2013,  11:08 Найти цитируемый пост)
 угол Эйлера Х - это курс или крен?

Курс, крен и тангаж это углы поворот для летательного аппарата и с углами Эйлера они не имеют ничего общего. Удивительно, что многие их путают.

Это написано в русских ;-) учебниках по динамике полета и по навигации... Про поворот связанной СК относительно нормальной земной (ось Х - на север, Z - на восток, Y  - по нормали вверх).

А в чем собственно отличие и как  это сказывается на записи компонент кватерниона через эти углы "Эйлера" (курс, тангаж, крен) ?

Как вариант: может есть книга про кватернионы в приложении к навигации по русским стандартам - см. выше?

С кватернионами вообще много "непоняток", например, часто скаляный компонент Qw записывают через квад. корень. А то, что это верно с точностью до знака не пишут.
PM MAIL   Вверх
baldina
Дата 4.10.2013, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
А в чем собственно отличие 

навигация это повороты в локальной системе координат, углы эйлера - в глобальной.

Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
как  это сказывается

никаких тонкостей и проблем вычисления углов эйлера по кватерниону и наоборот нет. 
сложности возникают при ошибочном выборе инструмента.

Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
может есть книга про кватернионы в приложении к навигации по русским стандартам

подозреваю, что в данном вопросе  "навигация по русским стандартам" сводится к определению понятий "тангаж", "крен", "рыскание" (их определение в локальной системе координат тривиально), а теория кватернионов - к формулам преобразования оси и угла поворота к кватерниону и обратно.
какая задача решается и в чем затруднения?
PM MAIL   Вверх
tn17
  Дата 4.10.2013, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2013

Репутация: нет
Всего: нет



Цитата(baldina @ 4.10.2013,  00:48)
Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
А в чем собственно отличие 

навигация это повороты в локальной системе координат, углы эйлера - в глобальной.

Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
как  это сказывается

никаких тонкостей и проблем вычисления углов эйлера по кватерниону и наоборот нет. 
сложности возникают при ошибочном выборе инструмента.

Цитата(tn17 @  3.10.2013,  17:28 Найти цитируемый пост)
может есть книга про кватернионы в приложении к навигации по русским стандартам

подозреваю, что в данном вопросе  "навигация по русским стандартам" сводится к определению понятий "тангаж", "крен", "рыскание" (их определение в локальной системе координат тривиально), а теория кватернионов - к формулам преобразования оси и угла поворота к кватерниону и обратно.
какая задача решается и в чем затруднения?

1.  с моей точки зрения - углы Эйлера это углы поворота локальной СК (связанной с ЛА) относительно глобальной (связанной с Землей), что вполне соответствует учебникам по навигации. При этом "глобальная" СК может быть мегаглобальной  smile (Гаусса-Крюгера, например), а может  - просто глобальной (с нулем в точке старта).  Я хочу определять углы "Эйлера" относительно стартовой прямоугольной правой СК.

2. О проблемах я уже писал: проблема в том, что существует множество вариантов записи начального кватерниона (qw, qx, qy, qz) ориентации (начального его значения) через углы Эйлера. Есть вариант с записью qw через квад. корень, с последующим делением на 4*qw (при вычислении qx, qy, qz). Есть варианты (разные ?!) с записью через sin и cos половинных углов - это, скорее всего, связано с использованием разных СК, у кого левая, у других правая и т.д. 
Сейчас сижу и привожу все эти варианты к "русской" (математической  smile см. выше) СК. И все равно, начальный кватернион получается разным  smile  в зависимости от выбранного варианта! Например, у некоторых qw = cos Курс/2 * cos Тангаж/2 *  cos Крен/2 + sin Курс/2 * sin Тангаж/2 *  sin Крен/2, а у других qw = cos Курс/2 * cos Тангаж/2 *  cos Крен/2 - sin Курс/2 * sin Тангаж/2 *  sin Крен/2. При этом в обоих случаях это правая СК  smile 

3. Инструмент С++ (фактически С),  переменные типа long double. Ситуации типа ~0 / ~0 перехватываю так, как описано выше.

4. Задача - вычислять текущую ориентацию ЛА при известных начальных углах (Курс, Тангаж, Крен) относительно стартовой прямоугольной правой СК и при известных текущих угловых скоростях (Wx, Wy, Wz) в связанной правой СК, путем их интегрирования. 

5. Лучшее, что удалось пока получить - объект вращается правильно, но вокруг другой оси  smile , т.е. Wx!=0, Wy=0, Wz=0, а крутимся  вокруг оси Z.  В общем smile интегрирования вращения ЛА при "русских" (математических  smile ) соглашениях об осях, углах, направлениях ...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.