exponenta event banner

интерполировать

Interpolate позирует вдоль сегмента пути БПЛА «Дубины»

Описание

пример

poses = interpolate(pathSegObj,lengths) интерполяция позиций вдоль сегмента пути с заданными длинами пути. Переходы между типами движения всегда включаются.

Примеры

свернуть все

В этом примере показано, как соединять позы с помощью uavDubinsConnection объект и интерполировать позы вдоль сегмента пути при заданных длинах пути.

Соединить позы с помощью пути соединения БПЛА Дубинс

Создать uavDubinsConnection объект.

connectionObj = uavDubinsConnection;

Определите начало и цель, представляемые как [x, y, z, headingAngle] векторы.

startPose = [0 0 0 0]; % [meters, meters, meters, radians]
goalPose = [0 0 20 pi];

Вычислите допустимый сегмент пути и соедините позы.

[pathSegObj,pathCost] = connect(connectionObj,startPose,goalPose);

Отображение созданного пути.

show(pathSegObj{1})

Figure contains an axes. The axes contains 24 objects of type patch, line. These objects represent Path, Transition Position, Start Position, Goal Position.

Интерполировать позы

Укажите интервал для интерполяции вдоль траектории.

stepSize = pathSegObj{1}.Length/10;
lengths = 0:stepSize:pathSegObj{1}.Length;

Интерполяция позиций вдоль сегмента траектории при заданных длинах траектории.

poses = interpolate(pathSegObj{1},lengths); % [x, y, z, headingAngle, flightPathAngle, rollAngle]

Визуализация позиций перехода

Вычислите матрицу перемещения и вращения поз перехода, исключая позы начала и цели. posesTranslation матрица состоит из первых трех столбцов poses матрица, определяющая положение x, y, и z.

posesTranslation = poses(2:end-1,1:3); % [x, y, z]

Приращение элементов четвертого столбца poses матрица, представляющая headingAngle около pi и назначить его в качестве первого столбца матрицы ротации posesEulRot в представлении угла Euler ZYX. Столбец pi и столбец нулей образует второй и третий столбцы posesEulRot матрица, соответственно. Преобразовать posesEulRot матрица от углов Эйлера до кватерниона и назначить posesRotation.

N = size(poses,1)-2;
posesEulRot = [poses(2:end-1,4)+pi,ones(N,1)*pi,zeros(N,1)]; % [headingAngle + pi, pi, 0]
posesRotation = quaternion(eul2quat(posesEulRot,'ZYX'));

Постройте график преобразования позиций перехода, указав их перемещения и повороты с помощью plotTransforms.

hold on
plotTransforms(posesTranslation,posesRotation,'MeshFilePath','fixedwing.stl','MeshColor','cyan')

Figure contains an axes. The axes contains 60 objects of type patch, line. These objects represent Path, Transition Position, Start Position, Goal Position.

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

свернуть все

Сегмент пути, указанный как uavDubinsPathSegment объект.

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

Например, укажите 0:stepSize:pathSegObj{1}.Length для интерполяции с интервалом, заданным stepSize вдоль траектории. Переходы между типами движения всегда включаются.

Типы данных: double

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

свернуть все

Интерполированные позы вдоль сегмента пути, возвращенного как числовая матрица с шестью элементами [x, y, z, headingAngle, flightPathAngle, rollAngle]. Каждая строка матрицы соответствует различной интерполированной позе вдоль траектории.

x, y и z определяют положение в метрах. headingAngle, flightPathAngle, и rollAngle определяют ориентацию в радианах.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

|

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