formationInfo
Description
returns a timetable of inter-UAV distance, formation graph, and positions of a UAV
trajectory ensemble object. info
= formationInfo(trajectoryEnsemble
)
Examples
Visualize and Obtain Performance Metrics of UAV Formation
Specify the number of UAVs in a UAV formation, and create the timestamps for the UAV trajectories.
% Number of UAVs in the formation numUAV = 4; % Timestamps time = [0; 1];
Specify the position of each UAV in ENU frame in meters at 0 and 1 seconds
uav1_position = [1 0 10; 1 0 10.5]; uav2_position = [0.5 0.8 10; 0.5 1.8 11]; uav3_position = [1.5 1 10; 1.5 1.8 11]; uav4_position = [2 0 10; 1.5 0 10.5];
Specify the velocity of each UAV in ENU frame in m/s at 0 and 1 seconds
uav1_velocity = [0 0 0.5; 1 0 0]; uav2_velocity = [0 1 1; 1 0 0]; uav3_velocity = [0 1 1; 1 0 0]; uav4_velocity = [0 0 0.5; 1 0 0];
Store the trajectory of each UAV in a timetable, and store the timetables in a cell array.
trajData1=timetable(seconds(time),uav1_position,uav1_velocity,VariableNames={'Position','Velocity'}); trajData2=timetable(seconds(time),uav2_position,uav2_velocity,VariableNames={'Position','Velocity'}); trajData3=timetable(seconds(time),uav3_position,uav3_velocity,VariableNames={'Position','Velocity'}); trajData4=timetable(seconds(time),uav4_position,uav4_velocity,VariableNames={'Position','Velocity'});
Create a UAV trajectory ensemble object. Specify the safety radius as 0.25 meters, a maximum connectivity range of 1.5 meters, and a maximum number of neighbors of 5.
trajectoryEnsemble = uavFormationMetrics({trajData1,trajData2,trajData3,trajData4},SafetyRadius=0.25,ConnectivityRange=1.5,...
MaxNumNeighbors=5);
Obtain the perfomance and distance metrics of the UAV formation.
[perfMetrics,distMetrics] = metrics(trajectoryEnsemble);
Plot the formation performance metrics
stackedplot(perfMetrics) grid on title("Formation Performance Metrics")
Plot the distance performance metrics
stackedplot(distMetrics) grid on title("Distance Metrics")
Obtain the UAV formation information.
info = formationInfo(trajectoryEnsemble);
Plot the UAV formation at the initial time step
% Create edge label for UAV distance at 0 seconds edgeLabel0 = info.FormationGraph{1}.Edges.Weight; % Plot the formation at 0 seconds plot(info.FormationGraph{1},EdgeLabel=edgeLabel0, ... XData=info.PositionX(1,:),YData=info.PositionY(1,:), ... ZData=info.PositionZ(1,:)); % Add title labels to each axis title("UAV Formation at t = 0 seconds") xlabel("East") ylabel("North") zlabel("Up")
Plot the UAV formation after movement at t = 1 second. In this time, some UAVs are out of the connectivity range and form 2 connected subgroups.
% Create edge label for UAV distance at 1 second edgeLabel1 = info.FormationGraph{2}.Edges.Weight; % Plot the formation at 1 second plot(info.FormationGraph{2},EdgeLabel=edgeLabel1, ... XData=info.PositionX(2,:),YData=info.PositionY(1,:), ... ZData=info.PositionZ(2,:)); % Add labels to each axis title("UAV Formation at t = 1 second") xlabel("East") ylabel("North") zlabel("Up")
Obtain the inter-UAV distance for all UAV pairs in the formation at t = 1 second.
info.InterUAVDistance{2}
ans=6×2 table
UAVPair Distance
_______ ________
1 2 1.9339
1 3 1.9339
1 4 0.5
2 3 1
2 4 2.119
3 4 1.8682
Input Arguments
trajectoryEnsemble
— UAV trajectory ensemble
uavFormationMetrics
object
UAV trajectory ensemble, specified as a uavFormationMetrics
object.
Output Arguments
info
— Details of UAV trajectory ensemble object
timetable
Details of UAV trajectory ensemble object, returned as a timetable. Each row of the timetable contains the following variables:
InterUAVDistance
— Distance between UAVs in meters, returned as a M-by-2 table, where M represents the total number of combinations of 2 UAVs that can be formed from all N UAVs in the formation, given by :FormationGraph
— Directed graph of UAV formation, returned as adigraph
object.In the directed graph, each directed edge represents a connection between pairs of UAVs, with the arrow starting from one UAV and pointing towards its neighboring UAV.
PositionX
— X position of all N UAV in the formation in meters, returned as N element array of real numberPositionY
— Y position of all N UAV in the formation in meters, returned as N element array of real numberPositionZ
— Z position of all N UAV in the formation in meters, returned as N element array of real number
Version History
Introduced in R2024b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)