二维圆形轨迹的一代——waypointTrajectory插值改变取决于飞机(XY或XZ)

49视图(30天)
我有一些麻烦创建一个半圆的2 d轨迹waypointTrajectory函数。
似乎是不同的插值函数取决于飞机点所在的地方。
我试过以下两种情况:
案例1我得到期望的输出,但在情况2函数插入不同,产生一个三维路径(在这种情况下,不是我想要的)。
我已经尝试包括速度和取向的价值观,但这似乎不能解决这个问题。请参见下面两种情况下的代码:
案例1:
路点= [0,0,0;
1 1 0;
0 2 0);
%取向= [0,0,0;…
% 0,0,90;…
% 0,0180);
% quatOrientation =四元数(定位、“eulerd”、“ZYX股票”,“框架”);
%速度= (1 0 0;…
% 0 1 0;…
% 1,0,0);
TimeOfArrival = (0, 1, 2);
TimeOfArrival轨迹= waypointTrajectory(锚点,“SampleRate”10);
truePosition = 0 (trajectory.SampleRate * trajectory.TimeOfArrival(结束)1、3);
c = 1;
~结束(轨迹)
truePosition轨迹(c:) = ();
c = c + 1;
结束
plot3(锚点(:1),锚点(:,2),锚点(:,3),“线型”,“没有”,“标记”,“o”,“MarkerEdgeColor”,“r”);
持有;
plot3 (truePosition (: 1) truePosition (:, 2), truePosition (:, 3),“颜色”,“k”);
daspect ((1 1 1));
网格;
包含(“x”);
ylabel (“y”);
zlabel (“z”);
案例2:
路点= [0,0,0;
1,0,1;
0 0 2];
%取向= [0,0,0;…
% 0 -90 0;…
% 0 -180 0);
% quatOrientation =四元数(定位、“eulerd”、“ZYX股票”,“框架”);
%速度= (1 0 0;…
% 0,0,1,…
% 1,0,0);
TimeOfArrival = (0, 1, 2);
TimeOfArrival轨迹= waypointTrajectory(锚点,“SampleRate”10);
truePosition = 0 (trajectory.SampleRate * trajectory.TimeOfArrival(结束)1、3);
c = 1;
~结束(轨迹)
truePosition轨迹(c:) = ();
c = c + 1;
结束
plot3(锚点(:1),锚点(:,2),锚点(:,3),“线型”,“没有”,“标记”,“o”,“MarkerEdgeColor”,“r”);
持有;
plot3 (truePosition (: 1) truePosition (:, 2), truePosition (:, 3),“颜色”,“k”);
daspect ((1 1 1));
网格;
包含(“x”);
ylabel (“y”);
zlabel (“z”);

接受的答案

瑞安齐射
瑞安齐射 2021年1月5日
你好大卫,
你是正确的,插值发生不同取决于飞机的运动。的 waypointTrajectory 对象连接路径点通过一个插值用于车辆的主要运动方式是垂直于地球重力的方向。
这就是为什么你看到的螺旋xz-plane而不是xy平面上的半圆。一个潜在的解决方案来生成一个半圆的xz-plane旋转你的原始半圆形轨迹在xy平面上使用 rotateframe 命令一个四元数对象。
谢谢,
瑞安

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!