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})
Интерполировать позы
Укажите интервал для интерполяции вдоль траектории.
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')

pathSegObj - Сегмент трактаuavDubinsPathSegment объектСегмент пути, указанный как uavDubinsPathSegment объект.
lengths - Длины вдоль траектории для интерполяции позДлины вдоль пути для интерполяции поз, определяемые как положительный числовой вектор в метрах.
Например, укажите 0:stepSize:pathSegObj{1}.Length для интерполяции с интервалом, заданным stepSize вдоль траектории. Переходы между типами движения всегда включаются.
Типы данных: double
poses - Интерполированные позыИнтерполированные позы вдоль сегмента пути, возвращенного как числовая матрица с шестью элементами [x, y, z, headingAngle, flightPathAngle, rollAngle]. Каждая строка матрицы соответствует различной интерполированной позе вдоль траектории.
x, y и z определяют положение в метрах. headingAngle, flightPathAngle, и rollAngle определяют ориентацию в радианах.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.