exponenta event banner

plotOrientation

Печать набора ориентаций в навигационном плоттере

Описание

пример

plotOrientation(oPlotter,orientations) задает ориентации M объектов, которые должны отображаться для плоттера ориентации, oPlotter. orientations аргумент может быть либо M-by-1 массивом кватернионов, либо 3-by-3-by-M массивом матриц вращения.

plotOrientation(oPlotter,roll,pitch,yaw) задает ориентации M объектов, которые должны отображаться для плоттера ориентации, oPlotter. Аргументы roll, pitch, и yaw - векторы M-by-1, измеренные в градусах.

plotOrientation(oPlotter,___,positions) также задает положения объектов в виде матрицы M-by-3. Каждый столбец positions соответствует координатам x, y и z местоположения объекта соответственно.

plotOrientation(oPlotter,___,positions,labels) также задает метки как массив M-by-1 ячеек символьных векторов, соответствующих M-ориентациям.

Примеры

свернуть все

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

Груз rpy_9axis.mat. Данные в rpy_9axis.mat регистрируют данные акселерометра, гироскопа и датчика магнитометра от устройства, колеблющегося по тангажу (вокруг оси y), затем рыскание (вокруг оси z), затем крен (вокруг оси x). При записи ось X устройства указывала на юг.

ld = load('rpy_9axis.mat')
ld = struct with fields:
            Fs: 200
    sensorData: [1x1 struct]

Установите частоту дискретизации. Извлеките данные акселерометра и гироскопа. Установите коэффициент прореживания равным 2. Использовать fuse для создания косвенного фильтра слияния датчиков Калмана на основе данных.

accel = ld.sensorData.Acceleration;
gyro = ld.sensorData.AngularVelocity;    
Fs  = ld.Fs;
decim = 2;
fuse = imufilter('SampleRate',Fs,'DecimationFactor',decim);

Получение информации о позе данных предохранителя.

pose = fuse(accel,gyro);

Создайте театральный сюжет. Добавить в график кинотеатра ориентировочный плоттер с 'DisplayName' установить в значение 'Fused Data' и 'LocalAxesLength' установить в значение 2.

tp = theaterPlot('XLimit',[-2 2],'YLimit',[-2 2],'ZLimit',[-2 2]);
op = orientationPlotter(tp,'DisplayName','Fused Data',...
    'LocalAxesLength',2);

Выполните цикл с информацией о позе для анимации изменяющейся ориентации.

for i=1:numel(pose)
    plotOrientation(op, pose(i))
    drawnow
end

Figure contains an axes. The axes contains 4 objects of type line. These objects represent Fused Data, x-Fused Data, y-Fused Data, z-Fused Data.

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

свернуть все

Плоттер ориентации, заданный как orientationPlotter объект.

Ориентации M объектов, определяемые либо как M-by-1 массив кватернионов, либо как 3-by-3-by-M массив матриц вращения.

Углы крена, тангажа и рыскания, определяющие ориентации М объектов, указанных как векторы M-by-1. Углы измеряют в градусах.

Позиции объектов, заданные как M-by-3 вещественная матрица, где M - количество объектов. Каждый столбец матрицы соответствует координатам x, y и z объектов в метрах. Значение по умолчанию positions находится в начале координат.

Метки объектов, заданные как массив M-by-1 ячеек символьных векторов, где M - количество объектов. labels содержит текстовые метки, соответствующие М объектам, указанным в positions. Если labels опущен, метки не печатаются.

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