exponenta event banner

transformMotion

Вычисление величин движения между двумя относительно фиксированными кадрами

Описание

[posS,orientS,velS,accS,angvelS] = transformMotion(posSFromP,orientSFromP,posP) вычисляет величины движения кадра датчика относительно кадра навигации (posS, orientS, velS, accS, и angvelS) используя положение рамы датчика относительно рамы платформы, posSFromP, ориентация рамы датчика относительно рамы платформы, orientSFromPи положение кадра платформы относительно навигационного кадра, posP. Следует отметить, что положение и ориентация между рамой датчика и рамой платформы считаются фиксированными. Кроме того, предполагается, что неопределенные величины между навигационным кадром и кадром платформы (такие как ориентация, скорость и ускорение) равны нулю.

[___] = transformMotion(posSFromP,orientSFromP,posP,orientP) дополнительно задает ориентацию кадра платформы относительно кадра навигации, orientP. Выходные аргументы совпадают с аргументами предыдущего синтаксиса.

пример

[___] = transformMotion(posSFromP,orientSFromP,posP,orientP,velP) дополнительно задает скорость кадра платформы относительно кадра навигации, velP. Выходные аргументы совпадают с аргументами предыдущего синтаксиса.

[___] = transformMotion(posSFromP,orientSFromP,posP,orientP,velP,accP) дополнительно задает ускорение кадра платформы относительно кадра навигации, accP. Выходные аргументы совпадают с аргументами предыдущего синтаксиса.

[___] = transformMotion(posSFromP,orientSFromP,posP,orientP,velP,accP,angvelP) дополнительно задает угловую скорость кадра платформы относительно навигационного кадра, angvelP. Выходные аргументы совпадают с аргументами предыдущего синтаксиса.

Примеры

свернуть все

Определите позу, скорость и ускорение рамы платформы относительно рамки навигации.

posPlat = [20 -1 0];
orientPlat = quaternion(1, 0, 0, 0);
velPlat = [0 0 0];
accPlat = [0 0 0];
angvelPlat = [0 0 1];

Определите положение и смещение ориентации рамы датчика IMU относительно рамы платформы.

posPlat2IMU = [1 2 3];
orientPlat2IMU = quaternion([45 0 0], 'eulerd', 'ZYX', 'frame');

Рассчитайте величины движения кадра датчика относительно кадра навигации и распечатайте результаты.

[posIMU, orientIMU, velIMU, accIMU, angvelIMU] ...
    = transformMotion(posPlat2IMU, orientPlat2IMU, ...
    posPlat, orientPlat, velPlat, accPlat, angvelPlat);

fprintf('IMU position is:\n');
IMU position is:
fprintf('%.2f %.2f %.2f\n', posIMU);
21.00 1.00 3.00
orientIMU
orientIMU = quaternion
     0.92388 +       0i +       0j + 0.38268k

velIMU
velIMU = 1×3

    -2     1     0

accPlat
accPlat = 1×3

     0     0     0

Входные аргументы

свернуть все

Положение кадра датчика относительно кадра платформы, определяемое как вектор 1 на 3 действительных скаляров.

Пример: [1 2 3]

Ориентация рамы датчика относительно рамы платформы, указанная как quaternion (Sensor Fusion and Tracking Toolbox) или матрица вращения 3 на 3.

Пример: quaternion(1,0,0,0)

Положение кадра платформы относительно навигационного кадра, определяемого как N-by-3 матрица действительных скаляров. N - количество позиций.

Пример: [1 2 3]

Ориентация кадра платформы относительно кадра навигации, заданного как N-by-1 массив кватернионов или 3-by-3-by-N массив скаляров. Каждая матрица 3 на 3 должна быть матрицей вращения. N - количество величин ориентации.

Пример: quaternion(1,0,0,0)

Скорость кадра платформы относительно кадра навигации, определяемая как N-by-3 матрица действительных скаляров. N - количество величин скорости.

Пример: [ 4 8 6]

Ускорение кадра платформы относительно навигационного кадра, определяемого как N-by-3 матрица действительных скаляров. N - количество величин ускорения.

Пример: [4 8 6]

Угловая скорость кадра платформы относительно навигационного кадра, определяемая как N-by-3 матрица действительных скаляров. N - число величин угловой скорости.

Пример: [4 2 3]

Выходные аргументы

свернуть все

Положение кадра датчика относительно кадра навигации, возвращаемого в виде N-by-3 матрицы действительных скаляров. N - количество позиций, указанное posP вход.

Ориентация кадра датчика относительно кадра навигации, возвращаемого в виде N-by-1 массива кватернионов или 3-by-3-by-N массива скаляров. N - количество величин ориентации, указанных orientP вход. Возвращенное количество ориентации совпадает с типом orientP вход.

Скорость сенсорного кадра относительно навигационного кадра, возвращаемого в виде N-by-3 матрицы вещественных скаляров. N - количество позиций, указанное velP вход.

Ускорение кадра датчика относительно кадра навигации, возвращаемого в виде N-by-3 матрицы действительных скаляров. N - количество позиций, указанное accP вход.

Угловая скорость кадра датчика относительно кадра навигации, возвращаемая в виде N-by-3 матрицы действительных скаляров. N - количество позиций, указанное angvelP вход.

Подробнее

свернуть все

Величины движения, используемые в transformMotion

transformMotion функция вычисляет величины движения сенсорного кадра (S), закрепленного на жесткой платформе, относительно навигационного кадра (N) с использованием установочной информации датчика на платформе и информации движения платформенного кадра (P).

Как показано на чертеже, положение и ориентация рамы платформы и рамы датчика закреплены на платформе. Положение рамы датчика относительно рамы платформы равно pSP, а ориентация рамы датчика относительно рамы платформы равна rSP. Поскольку оба кадра являются фиксированными, pSP и rSP являются постоянными.

Для вычисления величин движения кадра датчика относительно навигационного кадра требуются величины, описывающие движение кадра платформы относительно навигационного кадра. Эти величины включают в себя: положение платформы (pPN), ориентацию (rPN), скорость, ускорение, угловую скорость и угловое ускорение относительно навигационного кадра. Эти величины можно задать с помощью входных аргументов функции, за исключением углового ускорения, которое всегда считается нулевым в функции. Также предполагается, что неопределенные количества равны нулю.

См. также

|

Представлен в R2020a