2017-08-07 80 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