主要内容

Aero.trajectory.circularTrajectory

Generate reference signals for circular trajectory

Since R2026a

Description

refSignals = Aero.trajectory.circularTrajectory(Name=Value) generates reference signals for tracing a tracing a Dubins trajectory or a trajectory that consists of consecutive circular arcs or equal radii. Use name-value arguments to define the circular curve. Function inputs and outputs are specified in the NED (North-East-Down) coordinate frame. For more information, see Algorithms.

example

Examples

collapse all

This example shows how to generate signals for a circular trajectory starting at [0,0] meters with a 90-degree initial heading, ending at [50,50] meters. Use a shape factor of 0.2 to guide the trajectory.

refCircular = Aero.trajectory.circularTrajectory(InitialPosition = [0,0], ...
   FinalPosition = [50,50],InitialHeading = pi/2, ...
   Altitude = 50,Speed = 1,Units = 'Metric (MKS)',ShapeFactor = .2)
refCircular = struct with fields:
                 xNorth: [1×1 timeseries]
                  yEast: [1×1 timeseries]
                  Speed: [1×1 timeseries]
               Altitude: [1×1 timeseries]
                Heading: [1×1 timeseries]
          WaypointIndex: [1×1 timeseries]
    LateralAcceleration: [1×1 timeseries]

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: InitialPosition = [0,0]

Initial position of trajectory, specified as a 1-by-2 or 2-by-1 vector in the units specified in Units.

Example: InitialPosition = [0,0]

Data Types: double

Final position of trajectory, specified as a 1-by-2 or 2-by-1 vector in the units specified in Units.

Example: FinalPosition = [50,50]

Data Types: double

Initial heading of trajectory, specified as a real scalar between 0 and 2*pi, in radians. Specify at least one or both InitialHeading and FinalHeading.

Example: InitialHeading = pi

Data Types: double

Final heading of trajectory, specified as a finite real double scalar between 0 and 2*pi, in radians. Specify at least one or both InitialHeading and FinalHeading.

Example: FinalHeading = pi

Data Types: double

Speed of trajectory, specified as a finite real double scalar in the units specified in Units.

Example: Speed = 10

Data Types: double

Minimum turn radius limit, specified as a finite real double scalar in the units specified in Units. MinimumTurn Tadius must be less than or equal to MaximumTurnRadius.

Example: MinimumTurnRadius = 10

Data Types: double

Maximum turn radius limit, specified as a positive real double scalar in the units specified in Units. MaximumTurnRadius must be greater than or equal to MinimumTurnRadius.

Example: MaximumTurnRadius = 10

Data Types: double

Shape factor constant, specified as a nonnegative finite real double scalar between 0 to 1. When the shape factor is between 0 and 1, it controls the subtended angle of the intermediate circular arcs. If the shape factor is 1, a feasible trajectory from the Dubins set is generated. For more information, see Algorithms.

Example: ShapeFactor = 2

Data Types: double

Altitude of the vehicle trajectory, specified as a finite real scalar double in the units specified in Units. This value is constant throughout the vehicle path.

Example: Altitude = 10

Data Types: double

Number of samples in the output signals, specified as a scalar.

Example: NumberOfSamples = 10

Data Types: double

Reference signal type, specified as lateral-acceleration or turnrate. Depending on the selection, either lateral acceleration or turn rate is included as an additional reference signal. A reference signal is a predefined, desired path or sequence of positions, velocities, or attitudes (orientations) that aerospace vehicles are intended to follow over time.

Example: ReferenceSignalType="turnrate"

Data Types: char | string

Initial time of trajectory operation, specified as a datetime object.

Example: StartTime=datetime('now')

Input and output units, specified as one of these values:

Units

Position

Altitude

Speed

Metric (MKS)

Meters

Meters

Meters per second

English (Velocity in ft/s)

Feet

Feet

Feet per second

English (Velocity in kts)

Nautical miles

Feet

Knots

Example: Units = 'Metric (MKS)'

Data Types: double

Output format of reference signals data, specified as timeseries or timetable.

Example: OutputFormat = timeseries

Prior trajectory tracking data, specified as a timeseries or timetable object. These objects must contain these fields:

  • Altitude

  • Heading

  • Speed

  • WaypointIndex

  • xNorth

  • yEast

  • LateralAcceleraion/Turnrate

Option to enable warnings, specified as 'off' or 'on'.

Example: Warnings='on'

Output Arguments

collapse all

Trajectory reference signals, returned as a timeseries struct or timetable object.

Algorithms

Use Aero.trajectory.circularTrajectory to define these parameters of a circular trajectory.

Aero.trajectory.circularTrajectory uses an iterative approach to find a feasible trajectory. The types of trajectories attempted depend on the specified shape factor, as described in this table:

ShapeFactor SettingTrajectory Generation Algorithm

0

Aero.trajectory.circularTrajectory checks if a path consisting of a single circular arc or two consecutive circular arcs satisfies all constraints.

If such trajectories are not feasible, the function attempts to fit a path with multiple consecutive circular arcs of equal radii by iteratively increasing the number of arcs.

Notes:

  • Each intermediate arc has a subtended angle of 180 degrees, which means that the intermediate arcs are semi-circular.

  • For proper performance, the function imposes an upper limit of 100 arcs.

0 < ShapeFactor < 1

Aero.trajectory.circularTrajectory attempts to fit a path with multiple consecutive circular arcs of equal radii by iteratively increasing the number of arcs.

Each intermediate arc has a subtended angle less than 180 degrees.

As the shape factor increases, the subtended angle of the intermediate arcs decreases, approaching 0 as the shape factor approaches 1.

For proper performance, the function imposes an upper limit of 100 arcs.

ShapeFactor = 1

Aero.trajectory.circularTrajectory fits a feasible trajectory from the Dubins set, where the circular arcs have a radius equal to the specified MinimumTurnRadius.

For this ShapeFactor setting, the function ignores the MaximumTurnRadius parameter.

The reference signal is calculated using this logic:

  • The heading is determined from the tangent direction to the path.

  • The lateral acceleration and turn rate are computed from the radius of curvature (ρ) of the path using these equations:

    • Lateral acceleration: α = V2

    • Turn rate: ω = V/ρ, where V is the speed of the vehicle.

Version History

Introduced in R2026a