Как представляется ориентация в пространстве с помощью углов Эйлера?
Если вы используете шестиосевой манипулятор, например Meca500 компании Mecademic (в качестве примера в этом руководстве), вы, скорее всего, заинтересованы в позиционировании его инструмента (конечного эффектора) в различных ориентациях. То есть вам нужно запрограммировать робот на перемещение конечного эффектора как в желаемое положение, так и в желаемую ориентацию (в желаемую позу). Конечно, можно всегда вручную управлять конечным эффектором или использовать режим ручного руководства, чтобы приблизительно достичь нужной позы, но этот так называемый метод онлайн-программирования трудоемок и очень неточен. Гораздо эффективнее рассчитать и определить желаемую позу офлайн. Кроме того, для определения базовой системы координат инструмента, связанного с конечным эффектором (как показано на изображении), необходимо рассчитать позу этой базовой системы координат относительно базовой системы координат фланца.
В трехмерном пространстве для определения позы требуется минимум шесть параметров. Например, положение конечного эффектора робота, или точнее TCP (центра инструмента), обычно задается координатами x, y и z начала базовой системы координат инструмента относительно мировой системы координат. Но как тогда определить ориентацию в пространстве?
Представление ориентации в пространстве — сложная задача. Теорема Эйлера о вращении утверждает, что в трехмерном пространстве любое перемещение твердого тела, при котором одна точка тела остается неподвижной, эквивалентно единичному вращению вокруг оси, проходящей через эту фиксированную точку. Соответственно, такое вращение можно описать тремя независимыми параметрами: двумя для описания оси и одним для угла вращения. Однако ориентацию в пространстве можно представить несколькими другими способами, каждый из которых имеет свои преимущества и недостатки. Некоторые из этих представлений используют больше необходимого минимума в три параметра.
Наиболее распространенным способом преобразования координат положения из одной декартовой (3D) системы координат F в другую F’ является матрица вращения. Эта матрица 3×3 может поэтому использоваться для представления ориентации системы координат F’ относительно системы координат F. Однако это представление, хотя и часто необходимо, как мы обнаружим позже, не является компактным и интуитивным способом определения ориентации.
Другой, гораздо более компактный способ определения ориентации — кватернион. Это представление состоит из нормализованного вектора из четырех скаляров. Кватернион обычно используется в контроллерах роботов, так как он не только компактнее матрицы вращения, но и менее подвержен ошибкам приближения. Более того, при интерполяции между двумя разными ориентациями элементы кватерниона меняются непрерывно, избегая разрывов, присущих трехмерным параметризациям, таким как углы Эйлера. Тем не менее, кватернион редко используется как средство общения между пользователем и контроллером робота, потому что он неинтуитивен.
Подробное определение углов Эйлера
Наиболее распространенным способом передачи ориентации в пространстве пользователю или возможности для пользователя определить ориентацию в САПР или контроллере робота является использование углов Эйлера. Поскольку термин «углы Эйлера» часто используется неверно, мы подготовили это интерактивное руководство.
Углы Эйлера — это набор (или, скорее, последовательность) из трех углов, которые можно обозначить, например, α, β и γ. (Часто углы Эйлера обозначают как крен, тангаж и рыскание.) Углы Эйлера определяются следующим образом: рассмотрим две прямоугольные трехмерные системы координат, одна из которых будет произвольно называться фиксированной, а другая — подвижной. Изначально две системы координат совпадают. Чтобы определить ориентацию третьей системы координат (все три системы имеют общий центр), подвижная система координат последовательно приводится к совпадению с третьей системой путем вращения подвижной системы координат:
- вокруг оси x, y или z фиксированной системы координат или x’, y’ или z’ подвижной системы координат на α градусов,
- затем вокруг оси x, y или z фиксированной системы координат или x’, y’ или z’ подвижной системы координат на β градусов,
- и, наконец, вокруг оси x, y или z фиксированной системы координат или x’, y’ или z’ подвижной системы координат на γ градусов.
Порядок выполнения трех вращений важен. Таким образом, у нас всего 216 (63) возможных последовательностей: x→y→z, y→y→z, z→y→z, x’→y→z, y’→y→z, z’→y→z и так далее. Однако последовательность из трех вращений, в которой два последовательных вращения происходят вокруг одной и той же оси (например, y→y→z), не может описать общую ориентацию. Кроме того, до первого вращения x совпадает с x‘, y совпадает с y‘, а z совпадает с z‘. Следовательно, из всех этих 216 комбинаций существует только двенадцать уникальных значимых упорядоченных последовательностей вращений, или двенадцать соглашений об углах Эйлера: XYX, XYZ, XZX, XZY, YXY, YXZ, YZX, YZY, ZXY, ZXZ, ZYX, ZYZ.
Тем не менее, каждая из двенадцати комбинаций эквивалентна трем другим последовательностям. Другими словами, каждое соглашение об углах Эйлера может быть описано четырьмя разными способами. Например, соглашение ZYX эквивалентно последовательностям z→y→x, x‘→y‘→z‘, y→z‘→x и y→x→z‘. К счастью, никто не описывает углы Эйлера последовательностями, в которых некоторые вращения происходят вокруг осей подвижной системы координат, а другие — вокруг осей фиксированной (например, последовательности вроде y→z‘→x и y→x→z‘).
Таким образом, хотя существует двенадцать разных соглашений об углах Эйлера, каждое обычно описывается двумя разными способами: либо как последовательность вращений вокруг осей фиксированной системы координат, либо как последовательность вращений вокруг осей подвижной системы координат. Поэтому удобно говорить о фиксированных и подвижных соглашениях, хотя они эквивалентны. Например, фиксированное соглашение XYZ описывается последовательностью x→y→z, а подвижное соглашение ZYX — последовательностью z’→y’→x’, но оба эквивалентны, как мы увидим позже.
В робототехнике FANUC и KUKA используют фиксированное соглашение XYZ, а ABB — подвижное соглашение ZYX. Кроме того, Kawasaki, Omron Adept Technologies и Stäubli используют подвижное соглашение ZYZ. Наконец, углы Эйлера, используемые в CATIA и SolidWorks, описываются подвижным соглашением ZYZ.
В Mecademic мы используем подвижное соглашение XYZ, и поэтому описываем углы Эйлера как последовательность x‘→y‘→z‘. Почему мы выбрали другой путь? Причина в том, что мы ранее предлагали механический захват для обработки осесимметричных деталей (см. видео), который приводился в действие мотором шеста сустава. Шестиосевой робот, оснащенный таким захватом, может контролировать только два вращательных градуса свободы, а именно направление оси шестой сустав, то есть направление оси симметрии детали. В выбранном соглашении об углах Эйлера углы α и β определяют это направление, а угол γ игнорируется, так как он соответствует паразитному вращению, которое неконтролируемо.
Наш апплет ниже поможет вам понять углы Эйлера. Вы можете выбрать одно из двенадцати возможных соглашений, кликая по полям x, y и z первого, второго и третьего вращения. (По умолчанию используется последовательность, применяемая в Mecademic.) Для переключения между вращением вокруг осей фиксированной или подвижной систем координат нужно дважды кликнуть по любому из этих девяти полей. Оси фиксированной системы координат нарисованы серым цветом, а оси подвижной — черным. Оси x и x‘ красные, y и y‘ зеленые, z и z‘ синие. Перемещая мышь по любому из трех синих горизонтальных стрелок, вы меняете соответствующий угол Эйлера. Альтернативно, можно напрямую задать значение угла Эйлера (в градусах) в соответствующем текстовом поле под стрелкой. Наконец, можно перетаскивать мышь над системой координат, чтобы изменить точку зрения.
| R = Rx(0°) Ry(0°) Rz(0°) = |
|
| 1.000 |
0.000 |
0.000 |
| 0.000 |
1.000 |
0.000 |
| 0.000 |
0.000 |
1.000 |
|
|
|
Расчет углов Эйлера через матрицы вращения
С помощью вышеуказанного апплета вы увидите ориентацию подвижной системы координат относительно фиксированной для заданного набора углов Эйлера в правом нижнем подрисунке. К сожалению, на практике ситуация обычно обратная. Часто у вас есть две системы координат, и вы хотите найти углы Эйлера, описывающие ориентацию одной системы относительно другой.
Для ориентаций, в которых как минимум две оси параллельны, можно попытаться угадать углы Эйлера методом проб и ошибок. Например, посмотрите снова на изображение в начале этого руководства и попытайтесь найти углы Эйлера, используемые Mecademic, которые определяют ориентацию базовой системы координат инструмента, связанного с захватом, относительно базовой системы координат фланца. Ответ: α = −90°, β = 0°, γ = −90°. Не так-то просто, правда? Чтобы быть более эффективным, необходимо изучить матрицы вращения.
Как уже упоминалось, любую ориентацию в пространстве можно представить с помощью матрицы вращения 3×3. Например, вращение на α вокруг оси x, вращение на β вокруг оси y и вращение на γ вокруг оси z соответствуют следующим трем базовым матрицам вращения:
| Rx(α) = |
|
| 1 |
0 |
0 |
| 0 |
cos(α) |
−sin(α) |
| 0 |
sin(α) |
cos(α) |
|
|
, |
|
| Ry(β) = |
|
| cos(β) |
0 |
sin(β) |
| 0 |
1 |
0 |
| −sin(β) |
0 |
cos(β) |
|
|
, |
|
| Rz(γ) = |
|
| cos(γ) |
−sin(γ) |
0 |
| sin(γ) |
cos(γ) |
0 |
| 0 |
0 |
1 |
|
|
. |
|
Мы будем называть приведенные выше матрицы базовыми матрицами вращения. Чтобы получить произведение базовых матриц вращения, соответствующее последовательности вращений, начните с записи базовой матрицы вращения, соответствующей первому вращению. Например, если первое вращение происходит вокруг оси x (или x‘), запишите Rx(ψ), где ψ — угол вращения. Для каждого последующего вращения пост-мультиплицируйте (умножайте справа) текущий результат на следующую матрицу вращения, если вращение происходит вокруг оси подвижной системы координат, или пред-мультиплицируйте (умножайте слева) текущий результат на следующую матрицу вращения, если вращение происходит вокруг оси фиксированной системы координат. Используйте наш апплет, чтобы увидеть полученное произведение базовых матриц вращения. Например, последовательность вращений x‘→y‘→z‘ соответствует произведению R = Rx(α)Ry(β)Rz(γ). Таким образом, матрица вращения, соответствующая углам Эйлера, используемым в Mecademic, имеет вид:
| R(α, β, γ) = |
|
| cos(β)cos(γ) |
−cos(β)sin(γ) |
sin(β) |
| cos(α)sin(γ) + sin(α)sin(β)cos(γ) |
cos(α)cos(γ) − sin(α)sin(β)sin(γ) |
−sin(α)cos(β) |
| sin(α)sin(γ) − cos(α)sin(β)cos(γ) |
sin(α)cos(γ) + cos(α)sin(β)sin(γ) |
cos(α)cos(β) |
|
|
. |
|
Следовательно, для заданной ориентации вам нужно сделать две вещи: сначала найти матрицу вращения, соответствующую вашей ориентации, а затем извлечь углы Эйлера, используя несколько простых уравнений. Покажем два способа найти вашу матрицу вращения.
Рассмотрим пример, показанный на рисунке ниже, где нужно найти матрицу вращения, представляющую ориентацию системы координат F’ относительно системы координат F. (Напомним, что мы всегда изображаем ось x красным, ось y зеленым, а ось z синим.)
Здесь легко видеть, что если выровнять третью систему координат с F, которая будет выступать в роли подвижной, затем повернуть эту систему вокруг своей оси z‘ на θ градусов, а затем вокруг своей оси y‘ на φ градусов, мы получим ориентацию F. Таким образом, искомая матрица вращения:
| Rdesired = Rz(θ)Ry(φ) = |
|
| cos(θ)cos(φ) |
−sin(θ) |
cos(θ)sin(φ) |
| sin(θ)cos(φ) |
cos(θ) |
sin(θ)sin(φ) |
| −sin(φ) |
0 |
cos(φ) |
|
|
. |
|
Альтернативно, мы можем получить приведенную выше матрицу вращения напрямую. Её первый, второй и третий столбцы представляют координаты единичных векторов вдоль осей x, y и z соответственно системы координат F’ относительно системы координат F.
Теперь, когда у вас есть матрица вращения, представляющая желаемую ориентацию, вам просто нужно решить систему из девяти скалярных тригонометрических уравнений Rdesired = R(α, β, γ) для α, β и γ. К счастью, у этой задачи есть общее решение, и мы просто дадим вам уравнения для использования.
Пусть желаемая ориентация системы координат F’ относительно системы координат F представлена следующей матрицей вращения:
| Rdesired = |
|
| r1,1 |
r1,2 |
r1,3 |
| r2,1 |
r2,2 |
r2,3 |
| r3,1 |
r3,2 |
r3,3 |
|
|
. |
|
Углы Эйлера (в градусах) в соответствии с подвижным соглашением XYZ, используемым в Mecademic, получаются по следующим двум случаям:
Случай 1: r1,3 ≠ ±1 (т.е. ось z’ системы координат F’ не параллельна оси x системы координат F).
β = asin(r1,3), γ = atan2(−r1,2, r1,1), α = atan2(−r2,3, r3,3).
Случай 2: r1,3 = ±1 (т.е. ось z’ системы координат F’ параллельна оси x системы координат F).
β = r1,390°, γ = atan2(r2,1, r2,2), α = 0.
В общем случае 1 у нас фактически есть два набора решений, где все углы находятся в полуоткрытом диапазоне (−180°, 180°]. Однако вычисление обоих наборов бесполезно, поэтому представлен только первый, в котором −90° < β < 90°. Также обратите внимание, что мы используем функцию atan2(y, x) в нашем решении. Будьте внимательны: в некоторых языках программирования, в некоторых научных калькуляторах и в большинстве табличных процессоров аргументы этой функции инвертированы.
Наконец, заметим, что случай 2 соответствует так называемой сингулярности представления. Эта сингулярность присутствует в любом трехпараметрическом представлении ориентации в 3D пространстве (не только в выборе углов Эйлера Mecademic). Она аналогична проблеме представления точек на сфере только двумя параметрами. Например, долгота не определена на Земле на Южном и Северном полюсах. Другими словами, эта сингулярность не имеет ничего общего с сингулярностями механизмов (например, так называемым гимбальным замком), которые соответствуют реальным физическим проблемам (например, потере степени свободы).
Упражнение
Рассмотрим следующую реальную ситуацию, которая произошла с нами. Мы хотели установить дозирующий клапан FISNAR на конечный эффектор нашего робота Meca500. Естественно, инженер, спроектировавший и обработавший адаптер, не заботился об углах Эйлера и озаботился только технологичностью и достижимостью. В его конструкции было по сути два вращения на 45°. Во-первых, он использовал два диаметрально противоположных резьбовых отверстия на фланце робота для крепления адаптера, что вызвало первое вращение на 45°. Во-вторых, угол между плоскостью интерфейса фланца и осью дозатора составлял 45°.
На рисунке выше показана фактическая установка (слева) и базовая система координат инструмента (справа), которую нужно было определить. Обратите внимание, что при использовании осесимметричных инструментов принято выравнивать ось z инструмента с осью самого инструмента. Это особенно полезно с подвижным соглашением XYZ об углах Эйлера, поскольку избыточное вращение вокруг осесимметричного инструмента соответствует третьему углу Эйлера, γ. Таким образом, первые два угла Эйлера определяют ось инструмента, а третий можно использовать для выбора оптимальной конфигурации робота (т.е. далеко от сингулярностей).
Вернемся к нашему примеру. Сейчас покажем, что невозможно подобрать углы Эйлера согласно подвижному соглашению XYZ методом проб и ошибок. Действительно, для этого выбора базовой системы координат инструмента конечную ориентацию можно представить как последовательность следующих двух вращений: R = Rz(45°)Ry(45°). Отсюда, используя описанные выше уравнения, можно извлечь углы Эйлера согласно подвижному соглашению XYZ: α = −35.264°, β = 30.000°, γ = 54.735°. Убедились ли вы теперь, что для таких ситуаций действительно нужно владеть углами Эйлера?
Сингулярности представления и ошибки ориентации
В случае подвижного соглашения XYZ об углах Эйлера, если ось z’ системы координат F’ параллельна оси x системы координат F, существует бесконечно много пар α и γ, которые определяют одну и ту же ориентацию. Очевидно, для определения желаемой ориентации достаточно одной пары, поэтому мы произвольно установили α равным нулю. Более конкретно, если β = 90°, то любая комбинация α и γ, такая что α + γ = φ, где φ — любое значение, будет соответствовать одной и той же ориентации и будет выводиться контроллером Mecademic как {0, 90°, φ}. Аналогично, если β = −90°, то любая комбинация α и γ, такая что α − γ = φ, где φ — любое значение, будет соответствовать одной и той же ориентации и будет выводиться как {0, −90°, −φ}. Однако, если вы пытаетесь представить ориентацию системы координат F’ относительно системы координат F и ось z’ системы F’ почти параллельна оси x системы F (т.е. β очень близко к ±90°), углы Эйлера будут очень чувствительны к числовым ошибкам. В таком случае при определении ориентации с помощью углов Эйлера следует вводить как можно больше знаков после запятой.
Рассмотрим следующую ситуацию, которая вызывала беспокойство у нескольких пользователей нашего Meca500. Вы задаете ориентацию базовой системы координат инструмента относительно мировой системы координат как {0°, 90°, 0°}, что является сингулярностью представления. Затем вы сохраняете эту ориентацию и перемещаете конечный эффектор в пространстве в несколько позиций. В некоторых позициях из-за числового шума контроллер не обнаруживает условие r1,3 = ±1 (случай 2, как упоминалось выше) и вычисляет углы Эйлера так, будто ориентация не соответствует сингулярности представления. Таким образом, контроллер возвращает что-то вроде {41.345°, 90.001°, −41.345°}, что кажется совершенно неверным и очень далеким от {0°, 90°, 0°}. Но это не так.
В отличие от ошибок положения, которые измеряются как √(Δx2 + Δy2 + Δz2), ошибки ориентации не связаны напрямую с вариациями углов Эйлера, особенно близко к сингулярностям представления. Чтобы лучше понять эту так называемую неэвклидову природу углов Эйлера, рассмотрим сферические координаты, используемые для представления местоположения на Земле. На Северном полюсе широта 90° (северная), но какова долгота? Долгота не определена на Северном полюсе или может быть любым значением. Теперь представьте, что мы смещаемся всего на 1 мм от Северного полюса в направлении Гринвича. В этом случае широта будет 89.99999999°, но долгота примет значение 0°. Снова представьте, что вы возвращаетесь на Северный полюс и смещаетесь на 1 мм в направлении Токио. Новая долгота будет примерно 140°. Между вашими двумя местоположениями ошибка в долготе составит 140°! Однако реальная угловая ошибка будет примерно 0.00000002°.
Описанная выше ситуация аналогична во всех других соглашениях об углах Эйлера. В зависимости от соглашения соответствующая сингулярность представления возникает, когда определенная ось системы координат F’ параллельна другой определенной оси системы координат F. В такой сингулярности представления первое и третье вращение становятся зависимыми.
В заключение, если вы не владеете углами Эйлера (или не используете сложное офлайн-программное обеспечение), а конкретнее — соглашением, используемым для программирования вашего робота, вы с трудом сможете запрограммировать что-либо, кроме простых операций pick-and-place. Поскольку робототехника не проста, мы делаем все возможное, чтобы помочь вам понять основы.