Интерполируйте положения вдоль сегмента контура БПЛА Dubins
интерполирует положения вдоль сегмента контура с заданными длинами пути. Переходы между типами движения всегда включены.poses = interpolate(pathSegObj,lengths)
В этом примере показано, как соединить положения с помощью uavDubinsConnection и интерполируйте положения вдоль сегмента контура с заданными длинами пути.
Соедините положения с помощью БПЛА Dubins Путь
Создайте 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]Визуализация переходных положений
Вычислите матрицу перемещений и вращений переходных положений, исключая начальное и целевое положения. The posesTranslation матрица состоит из первых трех столбцов poses матрица, задающая положение x, y, и z.
posesTranslation = poses(2:end-1,1:3); % [x, y, z]Увеличьте элементы четвертого столбца poses матрица, представляющая 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')

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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.