Интерполируйте положения вдоль 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')

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