interpolate

Интерполируйте положения вдоль UAV сегмент пути Dubins

Описание

пример

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

Примеры

свернуть все

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

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

connectionObj = uavDubinsConnection;

Задайте запускаются, и цель изображает из себя [xYZ, headingAngleВекторы.

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

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

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

Покажите сгенерированный путь.

show(pathSegObj{1})

Задайте интервал, чтобы интерполировать вдоль пути.

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

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

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

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

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

Постепенно увеличьте элементы четвертого столбца матрицы положений определение headingAngle pi и присвойте его как первый столбец матрицы вращения posesEulRot в представлении Угла Эйлера 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')

Входные параметры

свернуть все

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

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

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

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

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

свернуть все

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

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

Смотрите также

|

Введенный в R2019b