реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Кватернионы и реальная механика, Вопрос синхронизации
alexPec
сообщение Apr 25 2018, 18:55
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Всем доброго дня. Неожиданно столкнулся с такой проблемой.

Есть механика, на рисунке. Внутренняя рамка С может поворачиваться вокруг осей Х и У относительно рамки А моторами М1 и М2. Вся система располагается в море, на корабле. Рамка А прикреплена жестко к кораблю. Задача - стабилизировать рамку С, так чтобы ее нормаль (g) совпадала с вектором гравитации.
Допустим, устанавливаю на рамку С гироскоп и акселерометр (трехосевые). При старте все хорошо - я точно знаю, как располагается подвижная система координат и точно знаю, что угол поворота вокруг оси Х я могу компенсировать мотором М1, а вокруг У- мотором М2. Гироскопы неизбежно плывут - с этим ничего не поделать. И если уплывания по осям Х и У можно компенсировать, зная вектор гравитации (измеряю акселерометром), то уплывание по оси g пока не вижу способа компенсировать. Да и компенсировать собственно не надо, проблема в том, что из-за этого уплывания со временем, когда уплывание достигнет например, 90 градусов, то мотором М1 я уже буду крутить кватернион вокруг оси Y, а мотором М1 - вокруг Х. Как-то бы привязать кватернион по оси g к рамке А.
Привязывать отдельно рамку А и отдельно кватернион к одной глобальной системе координат (например, по компасу) нет возможности.

Вопрос такой: как-то можно определить, каким мотором крутить, чтобы компенсировать появившийся крен рамки С? Т.е. крен -то я из кватерниона вытащу и разложу на составляющие по осям Х и У, а как определить, как сейчас расположены оси Х и У подвижной системы координат относительно осей моторов?

PS охота именно комплексно, через кватернионы решить задачу, а не отдельно по каждой оси мерить и компенсировать угловые скорости.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 19:08
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 189
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(alexPec @ Apr 25 2018, 21:55) *
а как определить, как сейчас расположены оси Х и У подвижной системы координат относительно осей моторов?

Так надо ввести некую процедуру начальной установки, когда вы точно знаете как и что ориентировано, а потом стартуете и в течении всей работы отслеживаете эти углы.
Кстати как вы собираетесь управлять моторам напрямую по кватернионам?
Там же вроде как надо пересчитать их в углы Тайт-Брайна
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 25 2018, 19:28
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(AlexandrY @ Apr 25 2018, 23:08) *
Так надо ввести некую процедуру начальной установки, когда вы точно знаете как и что ориентировано, а потом стартуете и в течении всей работы отслеживаете эти углы.
Кстати как вы собираетесь управлять моторам напрямую по кватернионам?
Там же вроде как надо пересчитать их в углы Тайт-Брайна


Да отследить - то отслежу, но они же плывут. К примеру: кладем на стол всю эту конструкцию (рамки А В С с моторами). Рассматриваем только ось g - остальные компенсирую по гравитации. При старте - да, знаю что как ориентировано. Но гироскопы плывут, соответственно при неподвижной механической конструкции кватернион будет вращаться (быстро ли, медленно ли - зависит от гироскопов, калибровки, но вращаться точно будет). Да, я отслежу что через некоторое время кватернион якобы повернулся на 90 градусов, а механика при этом лежит неподвижно. И в этом случае (когда механика лежит на столе) я знаю, что это кватернион уплыл, а не механика повернулась. А на корабле в море? Откуда мне знать, гироскоп это плывет или корабль медленно поворачивается? И через некоторое время я уже не смогу определить, на сколько повернулась механика, а на сколько уплыл кватернион.

По кватерниону, если он будет по оси g синхронизирован с углом поворота рамки А, то очень просто. Не знаю, как там эти углы называются, я просто вычисляю проекции на неподвижную систему координат и высчитываю нужный угол.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 20:01
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 189
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(alexPec @ Apr 25 2018, 22:28) *
И через некоторое время я уже не смогу определить, на сколько повернулась механика, а на сколько уплыл кватернион.

Да не сможете. Известный эффект.
Решается магнитометром или другими дополнительными средствами.
Неужели гугле вам об этом еще не сообщил?
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 26 2018, 05:47
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(AlexandrY @ Apr 26 2018, 00:01) *
Да не сможете. Известный эффект.
Решается магнитометром или другими дополнительными средствами.
Неужели гугле вам об этом еще не сообщил?

Да как-то можно, мне же не надо уплывание остановить - пусть плывет, но надо чтобы и механика "плыла" за кватернионом. Т.е. пусть плывет, но с механикой вместе. Мне не надо сделать не плывущий гироскоп, мне надо определить как механика относительно кватерниона расположена.
Рассуждения примерно такие: при повороте рамки С я имею информацию о повороте кватерниона и о повороте осей механики плюсом отдельно. И думается мне, что имея поворот кватерниона и разложение этого поворота по осям (с гироскопов, жестко связанных с механикой), можно определить как кватернион расположен относительно осей. Тем более что поворот кватерниона и формируется этими гироскопами, т.е. вроде как можно определить с математической точностью.
Поправьте если я ошибаюсь в своих рассуждениях.
Go to the top of the page
 
+Quote Post
тау
сообщение Apr 26 2018, 05:50
Сообщение #6


.
******

Группа: Участник
Сообщений: 2 418
Регистрация: 25-12-08
Пользователь №: 42 757



Цитата(alexPec @ Apr 25 2018, 22:55) *
Задача - стабилизировать рамку С, так чтобы ее нормаль (g) совпадала с вектором гравитации.


почему нельзя решить задачу без гироскопа? прикрепите к рамке С груз внизу на жестком подвесе. Груз чувствует g и никуда не "плывет" в отличие от гироскопа. Груз все время будет ориентировать правильно рамку С , а вместо моторов поставьте энкодеры, чтобы снимать показания по крену. При разгоне корабля появится небольшая ошибка , но ее можно будет нейтрализовать по данным акселерометра.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 26 2018, 05:59
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(тау @ Apr 26 2018, 09:50) *
почему нельзя решить задачу без гироскопа? прикрепите к рамке С груз внизу на жестком подвесе. Груз чувствует g и никуда не "плывет" в отличие от гироскопа. Груз все время будет ориентировать правильно рамку С , а вместо моторов поставьте энкодеры, чтобы снимать показания по крену. При разгоне корабля появится небольшая ошибка , но ее можно будет нейтрализовать по данным акселерометра.

Груз будет раскачиваться, чувствуя ускорения при качке. С помощь связки гироскоп + акселерометр (тот же электронный груз) можно фильтровать акселерометр с достаточно большой постоянной времени, но не такой большой, чтобы уплывание гироскопов за это время было бы значительным. При этом "качку", т.е. достаточно быстрые повороты, можно как раз компенсировать по данным гироскопов. Медленные уходы гироскопов компенсировать по акселерометру.

Добавлено: при качке вся система испытывает и линейные ускорения, т.к. находится не в центре вращения корабля.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 26 2018, 06:11
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 189
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(alexPec @ Apr 26 2018, 08:47) *
Да как-то можно, мне же не надо уплывание остановить - пусть плывет, но надо чтобы и механика "плыла" за кватернионом. Т.е. пусть плывет, но с механикой вместе. Мне не надо сделать не плывущий гироскоп, мне надо определить как механика относительно кватерниона расположена.
Рассуждения примерно такие: при повороте рамки С я имею информацию о повороте кватерниона и о повороте осей механики плюсом отдельно. И думается мне, что имея поворот кватерниона и разложение этого поворота по осям (с гироскопов, жестко связанных с механикой), можно определить как кватернион расположен относительно осей. Тем более что поворот кватерниона и формируется этими гироскопами, т.е. вроде как можно определить с математической точностью.
Поправьте если я ошибаюсь в своих рассуждениях.

Думаю у вас что-то не то с представлением о кватернионах.
Кватернион разлагаем на углы Тайт-Брайна (они же навигационные).
И тут вы увидите что углы тангажа и крена у вас стабильны и никуда не уходят.
А плавает только угол рысканья, и ничего с этим средствами дешевого 3D гироскопа-акселерометра не сделать.
Т.е. рамку C на вашем рисунке вы способны держать строго вертикально, но вот ее поворот по вертикальной оси относительно начального положения вы точно знать через некоторое время уже не сможете (уже через минуту).
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 26 2018, 06:41
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(AlexandrY @ Apr 26 2018, 10:11) *
Думаю у вас что-то не то с представлением о кватернионах.
Кватернион разлагаем на углы Тайт-Брайна (они же навигационные).
И тут вы увидите что углы тангажа и крена у вас стабильны и никуда не уходят.
А плавает только угол рысканья, и ничего с этим средствами дешевого 3D гироскопа-акселерометра не сделать.
Т.е. рамку C на вашем рисунке вы способны держать строго вертикально, но вот ее поворот по вертикальной оси относительно начального положения вы точно знать через некоторое время уже не сможете (уже через минуту).

Как раз при качке, когда рамка С поворачивается на малый угол da вокруг Х или У или их комбинации (это чувствуют гироскопы, связанные с механикой), кватернион при пересчете повернется на угол db, но повернется он уже по-другому. И в случае кватерниона это чисто математический поворот, поэтому думаю можно после вычисления кватерниона произвести расчет соотношений поворота кватерниона и гироскопов. Хоть по крену это и очень малые повороты, но поскольку поворот кватерниона - математический, на основании показаний тех же гироскопов, то малые повороты тут не принципиальны.

Ну, условно, когда ось g уплыла на 90 градусов, при повороте механики вокруг оси мотора М1 (малого, но это не принципиально), пересчитываем кватернион, вычисляем требуемые углы - и видим, что кватернион повернулся вокруг оси У, а не Х, как было при старте после инициализации. Ну и из этого делаем вывод, что ось g уплыла на 90 градусов относительно механики.
Go to the top of the page
 
+Quote Post
тау
сообщение Apr 26 2018, 06:55
Сообщение #10


.
******

Группа: Участник
Сообщений: 2 418
Регистрация: 25-12-08
Пользователь №: 42 757



Цитата(alexPec @ Apr 26 2018, 09:59) *
Груз будет раскачиваться, чувствуя ускорения при качке.
Добавлено: при качке вся система испытывает и линейные ускорения, т.к. находится не в центре вращения корабля.

добавьте в осях вязкое трение, демпфируйте раскачку.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 26 2018, 08:23
Сообщение #11


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 339
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Я что-то не совсем понимаю, в чем проблема.

Вариант 1:

Не вводите в расчет данные с гироскопа, который курсовой в горизонтальном положении (сделайте их равными 0) и все. Ну до определенных пределов это будет работать - при сильных наклонах будет, конечно, ошибаться.

Вариант 2:

В коде, который считает поправки к дрейфу гироскопов сделайте значение референсного курса равным 0. И компенсацию дрейфа по курсу сделайте очень медленной.

Вариант 3:

Разместите IMU на внутренней рамке. И держите вертикальность. По акселерометрам (интегральное звено) и двум гироскопам (пропорциональная составляющая).

И еще. Я понимаю, что в кватернионах считать - это очень модно, аж два умножения можно сэкономить, но куда прозрачнее для понимания это все в терминах DCM делать.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 26 2018, 08:39
Сообщение #12


Ally
******

Группа: Модераторы
Сообщений: 6 189
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Rst7 @ Apr 26 2018, 11:23) *
В коде, который считает поправки к дрейфу гироскопов сделайте значение референсного курса равным 0. И компенсацию дрейфа по курсу сделайте очень медленной.

Или я что-то не понял, но о какой поправке к дрейфу можно говорить если вы его(дрейф) не знаете в принципе.
Да там еще и линейные ускорения присутствуют.
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 26 2018, 09:01
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 843
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (тау @ Apr 26 2018, 09:55) *
добавьте в осях вязкое трение, демпфируйте раскачку.

Вероятно это может помочь, но полной уверенности нет из-за физики в MEMS и ограниченной разрядности проца при подсчете малых углов. Вязкое трение обеспечит уменьшение разрядности в скорости или нивелирование малых скоростных флуктуаций, что иногда может требоваться. Добавьте ко всему чувствительность к малому изменению температуры и трудностей мало не покажется.
Без кватернионов проблемно, мода не причем.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 26 2018, 09:49
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 275
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(тау @ Apr 26 2018, 10:55) *
добавьте в осях вязкое трение, демпфируйте раскачку.


Ну собственно, фильтр акселерометра с большой постоянной времени это и делает, но если демфер и массу с большой постоянной времени- то надо эту массу солидной делать. В общем, механический аналог электронной системы - как-то не красиво это, громоздско.

Цитата
В коде, который считает поправки к дрейфу гироскопов сделайте значение референсного курса равным 0. И компенсацию дрейфа по курсу сделайте очень медленной.


Тут тоже не понял. Сделать поправку к курсу могу, но как я пойму что оси кватерниона совпали с механическими? По задумке и надо сделать такую поправку, которая будет держать совпадающими оси кватерниона и механики. Но критерий совпадения осей какой? И надо не просто информацию о совпадении осей, надо еще и информацию хотя бы о градиенте рассогласования, чтобы знать, в какую сторону кватернион крутить.

Вариант1 - надо подумать.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 26 2018, 10:38
Сообщение #15


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 339
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
По задумке и надо сделать такую поправку, которая будет держать совпадающими оси кватерниона и механики. Но критерий совпадения осей какой? И надо не просто информацию о совпадении осей, надо еще и информацию хотя бы о градиенте рассогласования, чтобы знать, в какую сторону кватернион крутить.


Еще раз повторюсь, заканчивайте с кватернионами. Рассматривайте физический смысл. Неважно, как Вы интегрируете данные IMU (кватернион, DCM - пофиг), у Вас должны быть две функции - одна - это пересчет вектора из системы координат IMU в звездную систему координат, и вторая - наоборот (если работать с DCM - то там все банально, сама по себе DCM и есть матрица пересчета из одной системы координат в другую, а пересчет в обратную сторону - это умножение на обратную матрицу). Вот, например, Вы измеряете вектор гравитации - этот вектор в системе координат IMU. Если Вы его пропустите через функцию перехода в звездную систему координат, то этот вектор будет представлять из себя вектор, у которого x, y равны 0, а z равен g. Когда x и y ненулевые - это и есть ошибка. Но можно точно так же переводить и не только вектора измерений, но и вектора ошибки. Т.е. если Вы возьмете вектор [cos(a-va),sin(a-va),0], где а - референсный курс, а va - курс по результатам интегрирования, то это будет вектор ошибки по курсу в звездной системе координат. Преобразовав этот вектор в систему координат IMU как раз и получатся ошибки по каждой из осей. Дальше PI-регулятор и добавка к данным с гироскопа. Все.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th September 2018 - 05:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01107 секунд с 7
ELECTRONIX ©2004-2016