Мастерство углов Эйлера робота: подробное руководство
Сложно разобраться в поворотах робота, правда? Углы Эйлера — настоящая боль в шее. Вот основной пример, который уберет эту боль.
Ориентации! Они просто заставляют вырвать волосы. Если вы когда-либо программировали позу рабочего органа робота с координатами и поворотами, вы знаете, о чем речь.
На первый взгляд задание позы рабочего органа кажется простым, не так ли?
Просто скажете: «Хочу переместить инструмент робота в эту точку и хочу, чтобы он указывал в этом направлении».
Интуитивно вы точно знаете, какую ориентацию должен иметь инструмент. Но когда дело доходит до описания ориентации точными числами, эта простая задача превращается в хаос путаницы.
Почему ориентации роботов трудно понять
Легко описать координаты X, Y, Z (перемещения) инструмента робота.
Для описания перемещения просто вводите координаты — например Point[X, Y, Z] = [100, 1000, 1500] мм — и это может относиться только к одной локации, если используется одна базовая система отсчета. Это может означать только 100 мм по оси X, 1 метр по Y и 1,5 метра по Z.
Но как описать ориентацию инструмента?
Можно сказать:
Rotation[XYZ] = [5, 45, 15]°
но можно с той же правотой сказать (с округлением)
Rot[XY'Z''] = [-7,9, 44,7, 16,2]°
или
Rot[ZY'Z''] = [7,9, 45,2, 5,0]°
или даже
Quaternion[q1-q4] = [0,9, -0,1, 0,4, 0,1]
Все это относится к одной и той же ориентации!
Еще больше сбивает с толку то, что разные производители роботов используют разные соглашения. Даже при знакомстве с 3D-геометрией это становится головной болью.
Проблема: мы просто не мыслим вращениями
Настоящая проблема в том, что мы не привыкли мыслить в терминах вращений.
Мы интуитивно понимаем трансляционные координаты, потому что используем их в быту (например, «на второй полке снизу, четвертая книга слева»). Но когда нужно описать ориентацию, мы указываем пальцем и говорим «в том направлении».
К сожалению, роботам нужна более точная информация, чем вague «там».
Нам нужно твердое понимание углов Эйлера.
Что такое углы Эйлера?
Отступим назад и начнем с основ.
Наиболее распространенный метод описания ориентаций роботов — углы Эйлера. Углы Эйлера состоят из трех чисел, каждое описывает вращение вокруг одной оси. Существуют разные соглашения углов Эйлера в зависимости от порядка вращений.
Сначала упростим до примера с одной осью.
Представьте компас.
Часто мировая ось Z — это ось, простирающаяся от неба к земле. Иголка компаса можно рассматривать как вращение вокруг оси Z (Rot[Z]). Если держать компас горизонтально и стрелка показывает 135°, значит север за вашим левым плечом — вы смотрите на юго-восток. Неважно, где расположен компас (на полу, на голове), если ориентация та же, угол всегда 135°.
Пока все просто.
У компаса только одно значение вращения (Rot[Z]), но для описания любой 3D-ориентации нужно три значения. Здесь начинается сложность.
Другие методы описания ориентаций — кватернионы или позы (матрицы 4×4).
Давайте потренируемся на практике
Отныне полезно иметь интерактивную наглядную помощь.
Предлагаю скачать бесплатную копию RoboDK по этой ссылке — она очень просто визуализирует системы отсчета и показывает получающиеся координаты.
Запустите RoboDK и создайте систему отсчета кнопкой «Add Reference Frame» или через меню Program. Появится красная, зеленая и синяя система в центре экрана.
Ее можно вращать так: зажмите Alt, затем кликните и перетащите одну из изогнутых стрелок, которые появятся.
Как пилотировать самолет
Используем аналогию с самолетом, четко описанную на robot-forum.
Представьте, что система отсчета — самолет. Кончик прямой красной стрелки (ось X) — нос самолета, прямая зеленая стрелка (ось Y) — левое крыло.
Тогда движение изогнутых стрелок выполняет функции:
- Изогнутая красная стрелка = Rot[X]: Крен (Roll) — вращение вокруг горизонтальной оси.
- Изогнутая зеленая стрелка = Rot[Y]: Тангаж (Pitch) — нос вверх или вниз.
- Изогнутая синяя стрелка = Rot[Z]: Рыскание (Yaw) — направление полета.
Если пилот хочет, чтобы самолет поворачивал влево и вниз плавно, он не просто вертится вокруг оси Z — самолеты так не работают.
Вместо этого самолет:
- Опускает нос: Rot[Y]
- Наклоняется влево: -Rot[X]
- Рыскает влево: Rot[Z]
Все это движение представляется как Rot[XYZ]. Попробуйте поиграть с системой в RoboDK, пока не почувствуете уверенность в этих концепциях.
Затем дважды кликните по имени системы в левом верхнем углу главного окна, чтобы открыть панель «Frame Details».
Одна ориентация — несколько возможных вращений
С помощью RoboDK выполните следующие задания.
Перед каждым сбрасывайте систему: откройте меню «гамбургер» (три горизонтальные линии) в панели Frame Details и выберите «Reset (set identity)».
- В выпадающем меню над координатами выберите соглашение Stäubli (X→Y'→Z'') вместо Generic.
- Поверните систему так, чтобы синяя (Z) смотрела вниз, а красная (X) — назад (обе перевернуты от стартовой позиции, зеленая (Y) осталась как была), используя только вращение вокруг оси Y.
- Сбросьте и повторите ту же ориентацию, но используйте только одно вращение Z, а затем одно X.
- Сбросьте и повторите еще раз, используя только одно вращение X, а затем одно Z.
Как видите, одну и ту же ориентацию можно достичь разными способами.
Первый метод — Rot[Y], так как только вращение вокруг Y. Второй — Rot[Z, X'], так как одно вращение вокруг Z и одно вокруг новой оси X. Третий — Rot[X, Z']. Примера (') означает, что вращение происходит относительно последнего движения, а не статических осей.

Это фундаментальная концепция углов Эйлера. Можно повернуть систему в одну ориентацию разными способами, меняя последовательность осей и вращений.
Разные производители выбрали разные комбинации. Например, Stäubli использует XY'Z'', Adept — ZY'Z'', KUKA — ZY'X'', Fanuc и Motoman — XYZ. ABB использует кватернионы, Universal Robots — вектор ориентации. Но все соглашения могут представить любую ориентацию в пространстве.

Больше информации в Документации RoboDK.
Проверьте разные соглашения роботов
Надеемся, это начинает проясняться. Но это только начало. Чтобы действительно освоить соглашения углов Эйлера в RoboDK, полезно поиграть с ПО по этому руководству.
Эффект вращений в числах виден в светло-голубых, фиолетовых и желтых полях панели «Frame Details».
По умолчанию для новых систем отсчета выбрано соглашение Generic XYZ. Попробуйте выбрать разных производителей из выпадающего меню над цветными полями. Введите числовые значения в поля, чтобы увидеть их влияние на систему отсчета.
Для глубокого туториала по углам Эйлера рекомендую эту страницу Mecademic.
Промышленный робот
- Робототехническое зрение в промышленности: От зрения к само-программированию
- Что такое само-программируемый робот и почему это важно
- Archimedes: Робот-совица с ИИ для распознавания эмоций
- Максимизация эффективности: почему квалифицированные операторы роботов необходимы
- Робототехника в производстве: доказанная эволюция эффективности и инноваций
- Мастерство роботизированной сварки: простое руководство к безупречным результатам
- Мастерство симуляции робототехнических конвейеров: проверенные лучшие практики
- Использование робототехнической автоматизации для эффективности в бумажной промышленности
- Освоение углов Эйлера для точного управления 6-осевыми роботами
- Как выбрать лучшее ПО для роботизированного пикинга: эффективная автоматизация