我正在使用MATLAB打印我的模拟结果。结果涉及无人机必须访问的无人机轨迹和航点。该无人机应该配备一个摄像头,其视野范围为10x10。现在,该图将无人机的轨迹显示为访问航点的线路。是否有可能展示相机的足迹而不是实际的轨迹?我想绘制矩形相机的视图,以显示该地区的详尽报道。可以选择将点绘制为方形,十字形或圆形,但可以设置这些点的边界吗?绘制足迹而不是坐标
预先感谢您
我正在使用MATLAB打印我的模拟结果。结果涉及无人机必须访问的无人机轨迹和航点。该无人机应该配备一个摄像头,其视野范围为10x10。现在,该图将无人机的轨迹显示为访问航点的线路。是否有可能展示相机的足迹而不是实际的轨迹?我想绘制矩形相机的视图,以显示该地区的详尽报道。可以选择将点绘制为方形,十字形或圆形,但可以设置这些点的边界吗?绘制足迹而不是坐标
预先感谢您
使用标记大小来指示范围视图的问题是,您的路标的数据单元和标记大小之间没有直接关系。换句话说,对于标记大小的值为10
并不一定意味着方形标记的一边将是10个数据单位长(由轴的缩放和限制定义)。
另一种方法是在每个航点上将方块patches绘制到补丁与无人机的轨迹对齐的位置。这里是你如何能做到这一点:
% Generate some sample data:
N = 20; % Number of waypoints
x = cumsum(5.*rand(1, N)); % X coordinates of UAV
y = cumsum(5.*rand(1, N)); % Y coordinates of UAV
% Compute vectors parallel and perpendicular to the trajectory at each point:
v = [diff(x); diff(y); zeros(1, N-1)]; % Vectors (1 per column)
v = bsxfun(@rdivide, v, sqrt(sum(v.^2, 1))); % Normalize each column to a unit vector
v = v(:, [1 1:end]); % Replicate a vector for starting point
vCross = cross(v, [zeros(2, N); ones(1, N)]); % Perpendicular vector
% Generate patch coordinates:
R = 10; % Range view
xPatch = [x+(R/2).*(v(1, :)+vCross(1, :)); ...
x+(R/2).*(v(1, :)-vCross(1, :)); ...
x-(R/2).*(v(1, :)+vCross(1, :)); ...
x-(R/2).*(v(1, :)-vCross(1, :))];
yPatch = [y+(R/2).*(v(2, :)+vCross(2, :)); ...
y+(R/2).*(v(2, :)-vCross(2, :)); ...
y-(R/2).*(v(2, :)+vCross(2, :)); ...
y-(R/2).*(v(2, :)-vCross(2, :))];
% Plot the patches and trajectory:
patch(xPatch, yPatch, [0 0.3 0], 'FaceAlpha', 0.25, 'EdgeColor', 'none');
hold on;
plot(x, y, '-', 'Color', [0.8 0 0], 'Marker', '.', 'MarkerSize', 12);
axis equal;
这里是一个样地:
作为可以指定标志形状为正方形并设置恒定标记大小,例如第一个尝试
plot(x,y,'s','markersize',10)
这里x
和y
是载体,保持UAV坐标。的字母“s”设定标志形状为正方形,和尺寸被设置为10。
在现实中,UAV轨迹在3D空间中,其中,改变在地面上方的高度对应于不同的足迹的尺寸和形状限定。考虑到这一点需要更多的努力。
此外,这假定点间距足够紧密,否则标记之间会出现空白区域。
非常感谢您的回答。 您的留言是正确的。但是,在联合仿真过程中,无人机的高度大致相同,但是您所说的必须考虑到未来的工作! – GeorgiosZervakis
非常感谢。我只是做了它,它完美地工作。谢谢! – GeorgiosZervakis