Болезни Военный билет Призыв

Выставка по сигналам MEMS акселерометра

Углы Эйлера-Крылова

Однозначно задать угловое положение твердого тела в пространстве позволяют три угла Эйлера-Крылова и, отсчитываемые против часовой стрелки. На рисунке показана одна из разновидностей углов Крылова - так называемые самолетные углы, используемые в авиации

Углы Эйлера-Крылова

Неподвижная система отсчета, в которой рассматривается угловое положение твердого тела (летательного аппарата), образована правой тройкой векторов. Ось направляется по местной вертикали от центра Земли, ось располагается в плоскости горизонта и направляется на географический север (N, North), а ось дополняет систему координат до правой. С подвижным объектом - например, летательным аппаратом (ЛА), - жестко связана подвижная система координат. Её ось направляется вдоль строительной (продольной) оси летательного аппарата, ось - вдоль нормальной в направлении зенита, а ось - вдоль поперечной в направлении правого борта ЛА. Угловое положение (ориентация) ЛА в системе координат задается курсом (), тангажом () и креном (). Наличие знака минус перед самолетными углами обусловлено тем, что их положительные значения, в отличие от классических углов Эйлера-Крылова, отсчитывается по ходу часовой стрелки. Итоговое положение ЛА определяется последовательностью поворотов

Выставка по сигналам MEMS акселерометра

Процедура определения начальных угловых координат называется выставкой. Для выставки крена и тангажа с помощью трёхосного MEMS акселерометра, выдающего ускорения, и по осям X, Y и Z связанной с ним подвижной системы координат OXYZ, соответствующие значения углов можно найти по проекциям вектора ускорения свободного падения g=9,81 м/с2 на каждую из осей, используя математический аппарат матриц поворота (3.1)

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

Выразим из (3.2) вектор ускорения свободного падения, для чего умножим обе части равенства слева на матрицу:

Из первых двух уравнений системы (3.4) получим

Калибровка MEMS акселерометра

Погрешность определения угловых координат объекта по сигналам трёхосных MEMS акселерометров во многом зависит от точности определения поправочных коэффициентов, вычисляемых в ходе калибровки.

Ошибки показаний трёхосного акселерометра (ТОА) возникают из-за трех факторов :

Наличие постоянного смещения;

«просачивание» сигнала из одного канала в другой, вызванное неколлинеарностью троек векторов, образующих две системы координат: связанную с калибровочной поворотной платформой OXYZ и связанную с ТОА (3.4);

Собственные фликкер-шумы.

Неколлинеарность осей систем координат объекта и систем координат акселерометра

Из этого следует, что математическая модель сигнала трёхосного MEMS акселерометра будет выглядеть следующим образом :

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

Без учета шума систему уравнений (3.6), выполнив операции умножения матриц и векторов, можно записать в виде:


Из (3.7) следует, что для нахождения калибровочных параметров для одной из осей требуется количество измерений, равное количеству неизвестных параметров этой оси: для оси Z - 2, для оси Y-3, для оси X-4.

Калибровка трёхосного MEMS акселерометра подразумевает установку датчика в априорно известные положения и решение переопределенной системы уравнений для его выходных сигналов. При выполнении данной процедуры принято устанавливать акселерометр в 12 фиксированных положений

12 калибровочных положений MEMS акселерометра

В показано, что для уменьшения погрешности оценивания следует выполнять усреднение калибровочных коэффициентов, найденных по числу сочетаний. Однако, с целью уменьшения времени калибровки можно использовать только шесть так называемых ортогональных положений: 2), 4), 6), 7), 8) и 11); в этом случае уменьшение числа сочетаний до приводит к увеличению погрешности измерения элементов матрицы масштабных коэффициентов k и элементов вектора смещений b не более чем на 0,21% и 0,02% соответственно. Следует отметить, что погрешность измерения элементов матрицы коррекции T может возрастать до сотен процентов, но, так как недиагональные элементы T обычно не превосходят, при малых углах крена и тангажа (не более 30°), погрешность измерения указанных углов увеличивается не более чем на 0,5°.

Матричное описание вращения твёрдого тела упрощает многие операции; однако, для того, чтобы полностью описать ориентацию вращающегося твёрдого тела, необходимо использовать все девять элементов матрицы поворота. Непосредственно эти элементы не составляют полной системы обобщённых координат, с помощью которых можно описать ориентацию вращающегося твёрдого тела относительно абсолютной системы координат.

В качестве обобщённых координат можно использовать углы Эйлера j , q и y .

Таблица 3.1. Три системы углов Эйлера

Последова-тельность поворотов

На j вокруг оси OZ

На j вокруг оси OZ

На y вокруг оси OX

На q вокруг оси OU

На q вокруг оси OV

На q вокруг оси OY

На y вокруг оси OW

На y вокруг оси OW

На j вокруг оси OZ

Первая из систем углов Эйлера обычно используется при описании движения гироскопов и соответствует следующей последовательности поворотов (рис. 3.2):

Рисунок 3.2. Первая система углов Эйлера

R j , q , y = R z , j ×R u , q ×R w , y =
=

=
. (3-2)

R j , q , y , может быть также получен в результате выполнения последовательности следующих поворотов вокруг осей неподвижной системы координат: сначала на угол y вокруг оси OZ , затем на угол q вокруг оси OX , затем на угол j вокруг оси OZ .

На рисунке 3.3 показана вторая система углов Эйлера, определяемая следующей последовательностью поворотов:

    Поворот на угол j вокруг оси OZ (R z , j).

    Поворот на угол q вокруг оси OV (R v , q).

    Поворот на угол y вокруг повёрнутой оси OW (R w , y).

Результирующая матрица поворота имеет следующий вид:

R j , q , y = R z , j ×R v , q ×R w , y =
=

=
. (3-3)

Поворот, описываемый матрицей R j , q , y для этой системы углов Эйлера, может быть получен также в результате выполнения последовательных поворотов: на угол y вокруг оси OZ , на угол q вокруг оси OY , на угол j вокруг оси OZ .

Рисунок 3.3. Вторая система углов Эйлера

Ещё одну систему углов Эйлера составляют так называемые углы крена , тангажа и рыскания . Эти углы обычно применяются в авиации для описания движения самолётов.

Они соответствуют следующей последовательности поворотов:

    Поворот на угол y вокруг оси OX (R x , y ) – рыскание.

    Поворот на угол q вокруг оси OY (R y , q ) – тангаж.

    Поворот на угол j вокруг оси OZ (R z , j ) – крен.

Результирующая матрица поворота имеет вид:

R j , q , y = R z , j ×R y , q ×R x , y =
=

=
. (3-4)

Поворот, описываемый матрицей R j , q , y в переменных «крен, тангаж, рыскание» может быть также получен в результате выполнения следующей последовательности поворотов вокруг осей абсолютной и подвижной систем координат: на угол j вокруг оси OZ , затем на угол q вокруг повёрнутой оси OV , на угол y вокруг повёрнутой оси OU (продольная ось аппарата – Z ) (рис. 3.4).

Рисунок 3.4. Крен, тангаж, рысканье (третья система углов Эйлера)

Выставите любой палец левой руки вперед. Давайте, не стесняйтесь, никто не будет над вами смеяться. Это нужно для важного эксперимента. Выставили? Теперь представьте что вы - это ваш палец (ну и бред). Повернитесь под прямым углом направо, затем наверх, и наконец налево. Где вы оказались? Правильно, в том же месте, но уже на спине.

С некоторой натяжкой именно так работает вращение с помощью углов Эйлера. Немного непредсказуемо и неудобно, не правда ли? Углы Эйлера имеют несколько недостатков, но есть одно особенно нехорошее свойство из-за которого вы не захотите с ними связываться. Его имя - Gimbal lock.

В русском языке gimbal lock называют по-разному: шарнирный замок, блокировка осей, складывание рамок. К сожалению, по запросам в поисковике с такими ключевыми словами выдаётся много мусора, а статья в Википедии оставляет желать лучшего, поэтому я сам расскажу вам об этом феномене и предложу как с ним бороться.

Внимание! Заходя под кат вы подвергаетесь риску поломать голову.

Для начала напомню что такое углы Эйлера. Вы наверное помните, что это что-то вроде набора из трёх углов вращения вокруг осей X, Y и Z? Не совсем так. Предположим, вы хотите повернуть некий объект, и у вас есть набор конечных углов (X: 45°, Y: 45°, Z: 45°). Один из подвохов эйлеровых углов - необходимость выбора какого-то одного порядка поворотов. Если сначала повернуть на 45° вокруг оси X, затем вокруг Y и в конце вокруг Z, то получится результат как на левой половине картинки снизу. Если порядок будет Z-X-Y, то результат будет другой, как на правой половинке.


На самом деле…

На самом деле выше описаны не просто углы Эйлера, а углы Тэйта - Брайана . Эйлеровы углы имеют много сбивающих с толку вариаций, в одних из которых нужно вращать вокруг глобальных осей, в других оси поворачиваются после каждого шага, в третьих оси всегда закреплены на самом объекте и двигаются вместе с ним. Ко всему прочему добавляется разный порядок поворотов. Если есть возможность - не пользуйтесь углами Эйлера.


От выбора порядка поворотов зависит место появления шарнирного замка. Что же это такое? Возьмём к примеру такой порядок поворотов: Z-X-Y. Если вращение вокруг оси X будет равно 90° или -90°, то вращения вокруг Z и Y будут «есть» друг друга и останется только огрызок от большего из вращений. Например (X: 90°, Y: 90°, Z: 90°) превратится в просто (X: 90°, Y: 0°, Z: 0°). Внимание на иллюстрацию.

Так же можно подставить (X: 90°, Y: 130°, Z: 140°) или (X: 90°, Y: 30°, Z: 40°), но в результате всё равно будет получаться (X: 90°, Y: 0°, Z: 10°). Немного не интуитивно, вам не кажется? Это всё из-за шарнирного замка. Когда вращение вокруг оси X становится равным 90° или -90°, ещё не использованная локальная ось вращения Y становится параллельной оси Z, но с обратным направлением, поэтому вращение вокруг неё вступает в конфликт с предыдущим вращением вокруг Z.

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

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

Шарнирный замок появляется в середине иерархии поворотов. Если использовать порядок X-Y-Z или Z-Y-X, то поворот направо или налево будет заклинивать анимацию. Поскольку такой поворот встречается гораздо чаще чем, например, поворот в сторону зенита или надира, то во многих программах используют последовательность Z-X-Y. Такая иерархия поворотов используется в Unity3d, правда внутри все вращения всё равно хранятся в кватернионах. Что такое кватернионы? Об этом лучше рассказать отдельно. Кватернионы и матрицы вращения это один из способов избежать шарнирного замка. Также существуют хитрые алгоритмы, которые плавно обходят замок стороной, но это отражается на качестве анимации. Лучше всего использовать углы Эйлера только для простых случаев: пропеллеры, колёса, маятники. Иногда можно поменять иерархию поворотов, но тогда всё равно придётся помнить о замке.

Углы Эйлера описывают поворот объекта в трёхмерном евклидовом пространстве. При этом рассматриваются две прямоугольные системы координат, имеющие общий центр: неподвижная система и подвижная, связанная с объектом. На рис.1 неподвижная система координат имеет обозначение XYZ (она наклонена), а подвижная система обозначена как xyz. Углы Эйлера представляют собой углы, на которые поворачивается подвижная система координат, связанная с объектом, до совмещения с неподвижной системой. В классическом варианте первый поворот происходит на угол α вокруг оси z, связанной с объектом, до тех пор, пока не произойдет совпадение оси x, связанной с объектом, c плоскостью XY неподвижной системы. Такое совпадение произойдет по линии пересечения плоскостей XY и xy (линия N на рис. 1). Следующий поворот осуществляется на угол β вокруг нового положения оси x, связанной с объектом, до тех пор, пока не совместятся оси аппликат обеих прямоугольных систем. При этом ось y, связанная с объектом, окажется в плоскости xy неподвижной системы координат XYZ. Последний поворот производится на угол γ вокруг нового положения оси аппликат подвижной системы координат (она будет совпадать с такой же осью неподвижной системы), после чего оси координат XY и xy совместятся.

Рис. 1. Углы Эйлера

Такие повороты некоммутативны, и конечное положение подвижной системы координат зависит от порядка, в котором совершаются повороты.

Если известны координаты вектора R(r x , r y , r z) в подвижной системе координат XYZ и известны углы Эйлера (α, β, γ) подвижной системы координат xyz относительно неподвижной, то можно вычислить координаты этого вектора в неподвижной системе координат xyz. Для этого следует построить матрицы трех последовательных поворотов на углы α, β и γ:

Перемножая эти матрицы в обратном порядке, получим итоговую ортогональную матрицу:

T = T 3 × T 2 × T 1 ,

которая преобразует координаты вектора R(r x , r y , r z) подвижной системы координат в координаты вектора N(n x , n y , n z) такой же длины в неподвижной системе координат:

N = R ,

где N и R - матрицы-столбцы соответствующих координат.

Углы Эйлера являются наиболее естественными и понятными при выполнении различных операций вращения объектов, поскольку они соответствуют вращениям объекта, наблюдаемым в видовых окнах трехмерных графических систем. Однако их использование в системах компьютерной анимации сталкивается с рядом трудностей. Прежде всего, это необходимость выбора определенной последовательности поворотов объекта относительно осей системы координат. Если повернуть объект сначала вокруг оси X, затем вокруг оси Y и, наконец, вокруг оси Z, то это будет совсем не тот поворот, если бы повернуть этот объект на те же углы, но в другой последовательности.

Рассмотрим другой пример - создание анимации кубика при повороте его вокруг оси Z мировой системы координат на угол, превышающий 360°, например на угол 450°. Попробуем создать два ключевых кадра, между которыми кубик должен повернуться на этот угол. Для этого в программе MaxScript создайте стандартный параллелепипед:

b = box ()

После этого переместите ползунок временной шкалы анимации к кадру 10, включите режим Auto Key, а затем выполните команду:

b. rotation. z_ rotation = 450

Воспроизведите анимацию. Объект повернется только на 90°, поскольку его оборот на 360° будет игнорирован. Теперь то же самое проделайте в окне программы 3ds Max. Анимация объекта между двумя ключевыми кадрами произойдет на угол 450°. Таким образом, применение эйлеровых вращений в программах компьютерной графики, аналогичных MaxScript, ограничивается одновременным вращением на угол, не превышающий 360°. Однако это не мешает создавать анимацию вручную за экраном дисплея.

Другая проблема углов Эйлера заключается в наличии Gimbal lock, или шарнирного замка. Его появление зависит от выбора порядка поворотов объекта. Например, повернем объект вначале вокруг оси Z на угол 140°, затем вокруг оси X на угол 90°, а потом на угол 130° вокруг оси Y (рис. 2).

Рис. 2. Последовательные повороты объекта

Если теперь заново выполнить ту же последовательность поворотов, например, на углы 10° вокруг оси Z, затем на 90° вокруг оси X, а потом на 0° вокруг оси Y, то получим тот же результат. Проблема заключается в том, что когда вращение вокруг оси X становится равным 90° или -90°, то локальная ось вращения Y становится параллельной оси Z, но с обратным направлением, и поэтому вращение вокруг нее вступает в конфликт с предыдущим вращением вокруг оси Z.

Шарнирный замок отсутствует у матриц и кватернионов. Кватернионы предоставляют удобное математическое обозначение положения и вращения объектов в пространстве. В сравнении с углами Эйлера, кватернионы позволяют проще комбинировать вращения, а также избежать проблемы, связанной с невозможностью поворота вокруг оси, независимо от совершённого вращения по другим осям. В сравнении с матрицами они обладают большей вычислительной устойчивостью и могут быть более эффективными. Кватернионы используют для выполнения вращений в компьютерной графике , робототехнике , игровых движках, навигации, молекулярной динамике и вообще везде, где возникают проблемы с углами Эйлера или матрицами.

Литература

  1. Углы Эйлера и Gimbal lock [Электронный ресурс] / http://habrahabr.ru – Хабрахабр, 2006. – Режим доступа: http://habrahabr.ru/post/183116/. – Дата доступа: 10.10.2013.
  2. Кватернионы и вращение пространства [Электронный ресурс] / http://ru.wikipedia.org/ – Википедия - свободная энциклопедия, 2001. – Режим доступа: http://ru.wikipedia.org/wiki/ Кватернионы_и_вращение_пространства. – Дата доступа: 11.10.2013.

Ликбез по кватернионам, часть 7: интегрирование угловых скоростей, углы Эйлера-Крылова February 27th, 2018

Интегрирование угловых скоростей

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

Для начала мы попинаем дохлую лошадь, в смысле, углы Эйлера и Крылова, надо же понять, что заставило людей изучать и применять такую эзотерическую вещь, как кватернионы (три мнимые единицы, четырёхмерное пространство, половинные углы) - разве нельзя было обойтись курсом-креном-тангажом!?

Задача такова: мы знаем ориентацию нашего изделия в начальный момент времени, и у нас есть датчики угловой скорости (ДУСы). Это могут быть старомодные механические датчики, основанные на гироскопах (именно их неправильно смонтировали на печально известном «Протоне»), либо микроэлектромеханические (MEMS) датчики, либо более точные волоконно-оптические, либо лазерные. Последние два упорно называют гироскопами, и действительно, свет там бежит по кругу, но это название всё равно не вполне корректно. Пользуясь показаниями этих датчиков, мы должны отслеживать, какой именно поворот совершило изделие, иными словами, отслеживать его ориентацию.

Надеемся, что читателю уже понятно, что накапливать углы независимо по каждой из оси датчиков – подход совершенно неверный. Возьмём для примера поворот самолёта, рассмотренный в .

Первоначально самолёт летел с нулевым креном, тангажом и курсом. Затем он совершил поворот на 90 градусов по крену, после чего на 90 градусов по курсу. Как мы увидели ранее, после этих двух поворотов самолёт начал лететь вертикально вниз, то есть его тангаж стал равен -90°, хотя непосредственно по оси тангажа мы вообще не производили поворотов!

Кроме того, данная ориентация самолёта демонстрирует явление «складывания рамок» или «шарнирного замка». Согласно ГОСТ 20058-80 и аналогичным DIN 9300 и ISO 1151-2:1985, когда мы говорим, что самолёт имеет определенный курс, тангаж и крен, это значит: соответствующая ориентация в пространстве будет достигнута, если мы начнём с горизонтального положения на север, затем повернём самолёт по курсу, вслед за этим – по тангажу и, наконец, по крену (см. рисунок). Когда тангаж равен ±90° (самолёт "смотрит" вертикально вверх или вертикально вниз), курс и крен начинают работать одинаково (курс 0° и крен 90° дадут такое же положение, как и курс 90° и крен 0°, и ещё бесконечно много других комбинаций), что и называется складыванием рамок. Если мы примем, что в данной ориентации курс равен 90°, а крен – нулю (именно так рекомендуется разрешать неоднозначность), то сколько угодно малый поворот самолёта по курсу (в смысле, в сторону крыла, т.е при работе рулём направления) заставит скачкообразно изменить показания курса до 0°, крена – до 90°, а тангаж уменьшится на этот самый малый поворот. «Скачкообразно» означает бесконечную производную в этой точке – а это явно нехорошо…

Ещё одно неожиданное препятствие: в книгах по теоретической механике рассматриваются углы Эйлера и углы Крылова. Углы Эйлера носят имена: прецессия, нутация, собственное вращение – они нашли своё применение в описании быстро вращающихся штук.

Углы Крылова: рысканье, дифферент, крен. Рысканье – то же самое, что курс, дифферент – это морской термин для тангажа. Кажется, что знакомые нам курс-тангаж-крен – это и есть углы Крылова.

Не тут-то было.
Вот как определены углы Крылова:


(боролся с искушением прифотошопить сюда лебедя, рака и щуку, тянущих в трёх взаимно-перпендикулярных направлениях)

Приведём цитату из книги Бранца В.Н. и Шмыглевского И.П. - Применение кватернионов в задачах ориентации твердого тела (1973), стр. 79:

Первый поворот выполняется вокруг оси i 3 на угол курса φ, второй поворот происходит по оси i` 2 на угол крена ψ и третий – вокруг оси e 1 на угол тангажа ϑ.

Мы можем заметить, что повороты производятся не в том порядке, как указано ранее. Определённые таким способом углы тоже имеют право на существование, и при малых отклонениях крена и тангажа не будут отличаться от ранее введенных, но уже при углах, характерных для самолётов гражданской авиации, разница будет заметна.

Возьмём всё-таки «вырожденный» пример – самолёт полетел вверх ногами, при этом, чтобы не свалиться, немного задрал нос вверх. Когда мы опишем положение самолёта через углы Крылова, окажется, что самолёт летит с отрицательным тангажом, ведь первым осуществляется поворот по крену, а только потом – на перевёрнутом самолёте – поворот по тангажу, из-за чего он и должен поменять знак – именно в этом случае нос задерётся вверх.

Однако ГОСТ 20058-80 «ДИНАМИКА ЛЕТАТЕЛЬНЫХ АППАРАТОВ В АТМОСФЕРЕ» (http://docs.cntd.ru/document/gost-20058-80) даёт несколько иное определение тангажа:
26. Угол тангажа ϑ - угол между продольной осью OX и горизонтальной плоскостью OXgZg нормальной системы координат.

То есть, когда нос смотрит вверх, тангаж всегда должен получаться положительным, без разницы, как накренён самолёт!

Даже при достаточно плавных разворотах, такая взаимозависимость углов проявится, что приведёт к ошибочному восприятию ориентации объекта в пространстве.

Да и в целом кинематические уравнения для углов не очень радостны. Приведём их для углов Эйлера и для угловых скоростей, измеренных в связанном базисе (то есть, датчики стоят на объекте и поворачиваются вместе с ним):

Разумеется, для работы с углами тангажа, курса и крена, описанными в ГОСТ 20058-80, эти формулы не годятся – нужно вывести другие. Оставим это в качестве упражнения для самых упорных читателей.

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

Всё остальное – недостатки: многоэтажные формулы с множеством тригонометрических функций, появление особых точек, в которых нужно ставить свои «костыли» или заранее сдаться, сказав – сюда не заходите, иначе мы потеряемся в пространстве! Ещё мы можем заметить, что все углы способны неограниченно расти, поэтому неплохо бы каждый из них держать в разумных рамках, прибавляя или вычитая 2π, когда понадобится. Для тангажа и вовсе неплохо бы ограничиться -π .. π, что требует коррекции не только самого тангажа, но и курса. Практически любая работа с тремя углами сложна – поворот векторов, сравнение двух положений, композиция поворотов и пр. – везде мы натыкаемся на двухэтажные выражения и особые точки.

Углы Эйлера или Крылова (или какие-либо другие) никогда на практике не использовались в бесплатформенных системах ориентации, но неявным образом участвовали в работе гироплатформ. По сути, гироплатформа – это датчик, который возвращает ориентацию аппарата в пространстве сразу же в виде углов, а в качестве бонуса интегрирующая ускорения, спроецированные на неподвижные оси! Особые точки «математики» здесь соответствовали особым точкам «в железе» - складыванию рамок, если только не предпринимались специальные шаги, такие как введение четвёртой (избыточной) рамки или и вовсе отказ от рамок в пользу вложенных сфер.

Два других представления поворота твёрдого тела - через матрицы поворота и через кватернионы - свободны от недостатков трёх углов. Все операции оказываются линейными, особых точек нет. Продолжение следует...