Automatic Dependent Surveillance-Broadcast (ADS-B) transponder
System object™ models an Automatic Dependent Surveillance-Broadcast (ADS-B) transponder. You
can use the object to generate ADS-B messages and receive the messages using an
To generate ADS-B messages:
adsbTransponderobject and set its properties.
Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects?
creates an ADS-B transponder with a unique International Civil Aviation Organization
(ICAO) address that generates ADS-B messages. You must specify ICAO as a six-element
character vector or string scalar.
transponder = adsbTransponder(
sets properties for the transponder using one or more name-value pairs. For example,
transponder = adsbTransponder(
adsbTransponder('ABC123','UpdateRate',10) creates an ADS-B
transponder that has an ICAO address of
ABC123 and an update rate of 10
Unless otherwise indicated, properties are nontunable, which means you cannot change their
values after calling the object. Objects lock when you call them, and the
release function unlocks them.
If a property is tunable, you can change its value at any time.
For more information on changing property values, see System Design in MATLAB Using System Objects.
ICAO — Unique International Civil Aviation Organization address
six-element character vector | six-character string scalar
Unique International Civil Aviation Organization address, specified as a six-element character vector or a six-character string scalar.
Category — Category of transponder platform
adsbCategory(0) (default) |
Category of the transponder platform, specified as an
enumeration object. The default value
adsbCategory(0) represents no
Callsign — Call sign of transponder platform
eight-element empty character vector (default) | eight-element character vector | eight-character string
Call sign of the transponder platform, specified as an eight-element character vector or an eight-character string scalar. The default value is an eight-element empty character vector.
UpdateRate — Transponder update rate (Hz)
1 (default) | positive scalar
Transponder update rate, specified as a positive scalar in Hz.
GPS — GPS sensor providing location information
gpsSensor('PositionInputFormat','Geodetic') (default) |
GPS sensor providing location information for the transponder, specified as a
object must specify its
PositionInputFormat property as
SampleRate of the
object is automatically synchronized with the
adsbTransponder. If you set the
object to a specific value, then the
UpdateRate property of the
adsbTransponder object is set to the same value, and vice versa.
position — Position of the platform
Position of the platform, specified as a three-element vector
longitude in degrees.
altitude is the height
above the WGS84 ellipsoid in meters.
velocity — Velocity of platform
three-element vector of scalars
Velocity of the platform, specified as a three-element vector of scalars in meters per second. The velocity is with respect to the local North-East-Down (NED) frame corresponding to the platform position.
message — ADS-B message
ADS-B message, returned as a structure. The structure contains these fields:
ADS-B Message Structure
|Field Name||Description||Default Value|
|International Civil Aviation Organization address, specified as a six-element character vector or a six-character string scalar.||six-element empty character vector|
|The ADS-B transponder broadcasting time, specified as a scalar. If the transponder is not
synchronized with a reliable time source, use |
|Category of the transponder platform, specified as an |
|Call sign of the transponder platform, specified as an eight-element character vector or an eight-character string.||eight-element empty character vector|
|Reported latitude of the broadcasting transponder, specified as a scalar between -90 and 90
in degrees. Use |
|Reported longitude of the broadcasting transponder, specified as a scalar between -180 and
180 in degrees. Use |
|Reported altitude of the broadcasting transponder, specified as a scalar in meters. It
represents the height above the WG84 ellipsoid. Use |
|Reported velocity component in the east direction, specified as a scalar in meters per second. The positive direction for this component is the east direction. Use |
|Reported velocity component in the north direction, specified as a scalar in meters per second. The positive direction for this component is the north direction. Use |
|Reported climb rate, specified as a scalar in meters per second. The positive direction for this component is the upward direction. Use |
|Reported heading direction, specified as a scalar between 0 and 360 in degrees. The heading
direction angle is north at 0 and is clockwise-positive. Use
Navigation Accuracy Category of position, specified as an integer from 0 to 11. Each integer value defines an Estimated Position Uncertainty (EPU) bound. EPU bound is a 95% accuracy bound for the horizontal position. The bound defines a circle centered on the reported position so that the probability of the actual position lying inside the circle is 0.95. The list shows the relation between the integer and the bound:
where NM represents nautical miles.
Geometric Vertical Accuracy (GVA) of altitude, specified as an integer from 0 to 2. Each integer value represents a 95% accuracy bound on the reported altitude. The list shows the relation between the integer and the bound:
Navigation Accuracy Category of velocity, specified as an integer from 0 to 4. Each integer represents a 95% accuracy bound on the reported Horizontal Velocity Error (HVE). The list shows the relation between the integer and the bound:
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named
Generate ADS-B Message
gps = gpsSensor('PositionInputFormat','Geodetic','HorizontalPositionAccuracy',100);
adsbTransponder object based on the
transponder = adsbTransponder('ABC123', ... 'Category',adsbCategory(12), ... 'Callsign','X2347568', ... 'GPS',gps);
Define the position and velocity of the platform.
truePos = [42.753 31.896 10000]; % deg deg m trueVel = [250 0 0]; % m/s
Generate the ADS-B message.
adsbMessage = transponder(truePos,trueVel)
adsbMessage = struct with fields: ICAO: 'ABC123' Time: 0 Category: Unmanned_Aerial_Vehicle Callsign: 'X2347568' Latitude: 42.7530 Longitude: 31.8961 Altitude: 1.0000e+04 Veast: -7.5704e-04 Vnorth: 250.0919 ClimbRate: -0.1308 Heading: 359.9998 NACPosition: 6 GeometricVerticalAccuracy: 2 NACVelocity: 4
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Introduced in R2021a