Координатные преобразования в робототехнике

В приложениях робототехники можно использовать много различных систем координат, чтобы определить, где находятся роботы, датчики и другие объекты. В целом, местоположение объекта в трехмерном пространстве может быть задано значениями положения и ориентации. Существует несколько возможных представлений для этих значений, некоторые из которых характерны для определенных приложений. Перемещение и вращение являются альтернативными терминами для положения и ориентации. Robotics System Toolbox™ поддерживает представления, которые обычно используются в робототехнике и позволяют вам преобразовывать между ними. Можно преобразовать между системами координат, когда вы применяете эти представления к 3-D точкам. Эти поддерживаемые представления подробно описаны ниже с краткими объяснениями их использования и числового эквивалента в MATLAB®. Каждое представление имеет сокращение для своего имени. Это используется в именовании аргументов и функций преобразования, поддерживаемых в этом тулбоксе.

В конце этого раздела можно узнать о функциях преобразования, которые мы предлагаем преобразовать между этими представлениями.

Robotics System Toolbox принимает, что положения и ориентации заданы в правой Декартовой системе координат.

Угол оси

Сокращение: axang

Вращение в трехмерном пространстве, описываемое скалярным вращением вокруг фиксированной оси, заданной вектором.

Численное Представление: единичный вектор 1 на 3 и скалярный угол, объединенный как вектор 1 на 4

Для примера - вращение pi/2 радианы вокруг оси y будут:

axang = [0 1 0 pi/2]

Углы Эйлера

Сокращение: eul

Углы Эйлера - это три угла, которые описывают ориентацию твёрдого тела. Каждый угол является скалярным поворотом вокруг заданной оси координатной системы координат. Robotics System Toolbox поддерживает два порядка вращения. The 'ZYZ' порядок осей обычно используется в робототехнике. Мы также поддерживаем 'ZYX' порядок осей, который также обозначается как «Roll Pitch Yaw (rpy)». Знание того, какой порядок осей вы используете, важно для применения поворота к точкам и при преобразовании в другие представления.

Численное представление: вектор 1 на 3 скалярных углов

Для примера вращение вокруг y - ось pi будет выражаема как:

eul = [0 pi 0]

Примечание: Порядок осей не сохранен в преобразовании, поэтому вы должны знать, какой порядок вращения должен применяться.

Матрица однородного преобразования

Сокращение: tform

Однородная матрица преобразования комбинирует перемещение и вращение в одну матрицу.

Числовое представление: 4 на 4 матрица

Например, поворот угла α вокруг оси y и перемещение на 4 модули вдоль оси y будут выражены как:

tform =
 cos α  0      sin α  0 
 0      1      0      4
-sin α  0      cos α  0
 0      0      0      1

Вы должны предварительно умножить матрицу преобразования с однородными координатами, которые представлены как матрица векторов-строк (n-на-4 матрица точек). Используйте транспонирование ('), чтобы повернуть ваши точки для матричного умножения. Для примера:

points = rand(100,4);
tformPoints = (tform*points')';

Кватернион

Сокращение: quat

Кватернион является вектором с четырьмя элементами со скалярным вращением и вектором с 3 элементами. Кватернионы выгодны, потому что они избегают проблем особенности, которые присущи другим представлениям. Первый элемент, w, является скаляром для нормализации вектора с тремя другими значениями [x y z] определения оси вращения.

Числовое Представление: вектор 1 на 4

Для примера - вращение pi/2 вокруг y -ось будет выражена как:

quat = [0.7071 0 0.7071 0]

Матрица Вращения

Сокращение: rotm

Матрица вращения описывает вращение в трехмерном пространстве. Это квадратная, ортонормальная матрица с определяющим 1.

Числовое представление: матрица 3 на 3

Например, вращением α степеней вокруг оси x будет:

rotm =

     1     0         0
     0     cos α     -sin α
     0     sin α     cos α

Вы должны предварительно умножить матрицу поворота с помощью координат, которые представлены как матрица векторов-строк (n-на-3 матрица точек). Используйте транспонирование ('), чтобы повернуть ваши точки для матричного умножения. Для примера:

points = rand(100,3);
rotPoints = (rotm*points')';

Вектор Преобразования

Сокращение: trvec

Вектор перевода представлен в евклидовом пространстве 3-D виде Декартовых координат. Это включает только перемещение координат, применяемое равномерно ко всем точкам. Ротация отсутствует.

Числовое Представление: вектор 1 на 3

Например, перемещение на 3 модули вдоль оси x и 2,5 модули вдоль оси z будет выражено как:

trvec = [3 0 2.5]

Функции преобразования и преобразования

Robotics System Toolbox обеспечивает функции преобразования для ранее упомянутых представлений преобразования. Не все преобразования поддерживаются выделенной функцией. Ниже приведена таблица, показывающая, какие преобразования поддерживаются (синего цвета). Также показаны сокращения для представлений вращения и перемещения.

Имена всех функций преобразования соответствуют стандартному формату. Они следуют форме alpha2beta где alpha - сокращение для того, из чего вы преобразовываете и beta это то, в что вы преобразуете как сокращение. Например, преобразование углов Эйлера в кватернион будет eul2quat.

Все функции ожидают допустимых входов. Если вы задаете недопустимые входы, выходы будут неопределенными.

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

Похожие темы