我正在使用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