multirotorFlightTrajectory
Description
The multirotorFlightTrajectory
object stores a multirotor UAV trajectory created
by using piecewise 9th degree polynomial to interpolate linear
positions and the cubicpolytraj
function to interpolate yaw angles
between specified waypoints.
Creation
Description
T = multirotorFlightTrajectory(
creates a wpts
,vels
,accs
,jerks
,snaps
,yaws
,toas
)multirotorFlightTrajectory
object, T
using the
specified waypoints wpts
, velocities vels
,
accelerations accs
, jerks jerks
, snaps
snaps
, yaws yaws
, and times of arrival
toas
. The input arguments set the Waypoints
,
Velocities
, Accelerations
,
Jerks
, Snaps
, Yaws
, and
TimeOfArrival
properties, respectively.
Input Arguments
parser
— UAV Mission parser
multirotorMissionParser
object | fixedwingMissionParser
object
UAV mission parser, specified as a multirotorMissionParser
object or
a fixedwingMissionParser
object.
mission
— UAV mission
uavMission
object
UAV mission, specified as a uavMission
object.
Properties
Waypoints
— Waypoints
N-by-3 matrix
Waypoints, specified as an N-by-3 matrix in the local north-east-down (NED) reference frame, in meters. N is the total number of waypoints, and each row contains the xyz-coordinates of a waypoint, [X Y Z].
Example: [2 1 3; 3 2 4]
Velocities
— Desired velocities
N-by-3 matrix
Desired velocities, specified as an N-by-3 matrix in the local north-east-down (NED) reference frame, in meters per second. N is the total number of waypoints, and each row is the desired velocity of the UAV at the corresponding waypoint, [dX dY dZ].
Example: [2 1 3; 3 2 4]
Accelerations
— Desired accelerations
N-by-3 matrix
Desired accelerations, specified as an N-by-3 matrix in the local north-east-down (NED) reference frame, in m/s2. N is the total number of waypoints, and each row is the desired acceleration at the corresponding waypoint, [d2X d2Y d2Z].
Example:
[2 1 3; 3 2 4]
Jerks
— Desired jerks
N-by-3 matrix
Desired jerks, specified as an N-by-3 matrix in the local north-east-down (NED) reference frame, in m/s3. N is the total number of waypoints, and each row is the desired jerk at the corresponding waypoint, [d3X d3Y d3Z].
Example:
[2 1 3; 3 2 4]
Snaps
— Desired snaps
N-by-3 matrix
Desired snaps, specified as an N-by-3 matrix in the local north-east-down (NED) reference frame, in m/s4. N is the total number of waypoints, and each row is the desired snap at the corresponding waypoint, [d4X d4Y d4Z].
Example:
[2 1 3; 3 2 4]
Yaws
— Desired yaw angles
N-element vector
Desired yaw angles, specified as an N-element vector in the local north-east-down (NED) reference frame, in degrees. N is the total number of waypoints, and each row is the desired yaw at the corresponding waypoint.
Example:
[20;32;0;-20]
TimeOfArrival
— Times of arrival
N-element column vector
Times of arrival, specified as an N-element column vector, in seconds. N is the total number of waypoints, and each row is the time of arrival at the corresponding waypoint.
The first and last elements of TimeOfArrival
set the
StartTime
and EndTime
properties, respectively.
Example:
[2; 3; 5; 6]
StartTime
— Start time of trajectory
nonnegative numeric scalar
This property is read-only.
Start time of the trajectory, stored as a nonnegative numeric scalar, in
seconds. The value of StartTime
is the same as the
value of the first element of the TimeOfArrival
property.
EndTime
— End time of trajectory
nonnegative numeric scalar
This property is read-only.
End time of the trajectory, stored as a nonnegative numeric scalar, in
seconds. The value of EndTime
is the same as the value
of the last element of the TimeOfArrival
property.
Object Functions
Examples
Generate Flight Trajectory for UAV Mission
Create a UAV mission by using the flight plan stored in a .plan
file and show the mission.
mission = uavMission(PlanFile="flight.plan"); show(mission); axis equal
Create parsers for a multirotor UAV and a fixed-wing UAV.
mrmParser = multirotorMissionParser(TransitionRadius=2,TakeoffSpeed=2); fwmParser = fixedwingMissionParser(TransitionRadius=15,TakeoffPitch=10);
Generate one flight trajectory using each parser.
mrmTraj = parse(mrmParser,mission); fwmTraj = parse(fwmParser,mission);
Visualize the waypoints, flight trajectory and body frames for each UAV.
figure show(mrmTraj,FrameSize=20,NumSamples=75); title("Multirotor Flight Trajectory") axis equal
figure show(fwmTraj,FrameSize=20,NumSamples=75); title("Fixed-Wing Flight Trajectory") axis equal
Plot the mission, waypoints, flight trajectory and UAV body frames in the same plot for each UAV.
figure show(mission); hold on show(mrmTraj,FrameSize=20,NumSamples=75); hold off title("Mission Using Multirotor Trajectory") axis equal
show(mission); hold on show(fwmTraj,FrameSize=20,NumSamples=75); hold off title("Mission Using Fixed-Wing Trajectory") axis equal
Create and Query UAV Flight Trajectory
Create a set of waypoints for both the multirotor and the fixed-wing UAV to follow.
wpts = [0 0 0; 2 2 -2; 10 10 -3; 12 12 -6]; numwpts = size(wpts);
Specify additional trajectory information, such as desired velocities, accelerations, jerks, snaps, and yaws, as well as start time, an end time, and times of arrival.
vels = 2*ones(numwpts); accs = ones(numwpts); jerks = zeros(numwpts); snaps = zeros(numwpts); yaws = zeros(1,numwpts(1)); starttime = 0; endtime = 8; toas = linspace(starttime,endtime,numwpts(1));
Use the trajectory information to create the flight trajectories for the multirotor and the fixed-wing UAVs. Query and display the trajectories.
mrft = multirotorFlightTrajectory(wpts,vels,accs,jerks,snaps,yaws,toas); fwft = fixedwingFlightTrajectory(wpts,vels,toas); query(mrft,1:4)
ans = 4×16
1.6184 1.6184 0.7520 -0.0243 -0.0243 -2.8758 -4.6045 -4.6045 -9.1669 0.9863 -0.1179 0.1147 -0.0137 0.0732 -0.0732 -0.0000
1.0236 1.0236 -2.7807 0.5482 0.5482 -0.6198 3.9704 3.9704 8.6424 0.7429 0.5559 -0.2987 -0.2235 -1.3257 1.3257 0
2.7277 2.7277 -1.2947 2.4069 2.4069 2.1026 1.7442 1.7442 -1.3857 0.9941 0.0770 -0.0761 -0.0059 0.1950 -0.1950 0
6.4028 6.4028 -2.0972 4.4609 4.4609 -3.8447 -1.1875 -1.1875 -1.1875 0.9971 -0.0537 0.0534 -0.0029 -1.2364 1.2364 -0.0000
query(fwft,1:4)
ans = 4×16
0.9453 0.9453 -0.3203 0.2422 0.2422 -1.8672 -0.7031 -0.7031 -1.5469 0.7098 -0.2450 0.5914 0.2940 -0.4683 0.4683 0.0000
1.1875 1.1875 -2.1875 0.5938 0.5938 -1.0938 1.4063 1.4062 3.0938 0.8287 -0.1692 0.4085 0.3432 1.7750 -1.7750 0
2.7813 2.7812 -1.6055 2.6563 2.6562 0.4414 1.6875 1.6875 -4.0078 0.9223 0.0224 -0.0540 0.3820 -0.7962 0.7962 -0.0000
6.0000 6.0000 -2.5000 3.5000 3.5000 -1.5625 -0.0000 -0.0000 0.0000 0.9131 -0.0583 0.1407 0.3782 -0.0000 -0.0000 0.0000
Visualize both the multirotor flight trajectory and the fixed-wing flight trajectory.
ax = show(mrft,NumSamples=200);
title("Multirotor Flight Trajectory")
view([0 0])
show(fwft,NumSamples=50);
title("Fixed-Wing UAV Flight Trajectory")
view([0 0])
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2022b
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)