2017-08-07 87 views
2

我正在使用MATLAB打印我的模拟结果。结果涉及无人机必须访问的无人机轨迹和航点。该无人机应该配备一个摄像头,其视野范围为10x10。现在,该图将无人机的轨迹显示为访问航点的线路。是否有可能展示相机的足迹而不是实际的轨迹?我想绘制矩形相机的视图,以显示该地区的详尽报道。可以选择将点绘制为方形,十字形或圆形,但可以设置这些点的边界吗?绘制足迹而不是坐标

预先感谢您

回答

4

使用标记大小来指示范围视图的问题是,您的路标的数据单元和标记大小之间没有直接关系。换句话说,对于标记大小的值为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; 

这里是一个样地:

enter image description here

+0

非常感谢。我只是做了它,它完美地工作。谢谢! – GeorgiosZervakis

1

作为可以指定标志形状为正方形并设置恒定标记大小,例如第一个尝试

plot(x,y,'s','markersize',10) 

这里xy是载体,保持UAV坐标。的字母“s”设定标志形状为正方形,和尺寸被设置为10。

在现实中,UAV轨迹在3D空间中,其中,改变在地面上方的高度对应于不同的足迹的尺寸和形状限定。考虑到这一点需要更多的努力。

此外,这假定点间距足够紧密,否则标记之间会出现空白区域。

+0

非常感谢您的回答。 您的留言是正确的。但是,在联合仿真过程中,无人机的高度大致相同,但是您所说的必须考虑到未来的工作! – GeorgiosZervakis