Understanding UART Data Output Format

Table of Contents

Understanding the UART Data Output Format

To understand the data output from the EVM, it is important to understand how the device itself works. The mmWave radar sensor is a Frequency-Modulated Continuous Wave (FMCW) radar sensor that is able to detect the range, velocity, and angle of objects. To operate this device, configurations determining the properties of the chirps transmitted from the radar are sent via configuration commands/files in a Command Line Interface (CLI) to the device via UART.

When the chirp returns after bouncing off an object, it is mixed with the original transmit chirp to determine range, velocity, and angle. The resulting signal is digitized and organized into a Type Length Value structure (TLV) based on the demo being run. This information is then packed into an output structure and sent back to the computer via UART. The current UART output is sent out every frame as a packet containing a frame header and TLV.

Each TLV item in the packet payload contains a data type and value (payload) containing information describing that type of information. The length of the packet can depend on the number of detected objects and vary from frame to frame. To maintain uniformity amongst packets, each packet is padded so that the length is a multiple of 32 bytes. The UART information is sent out from the EVM board to the USB port of the computer and then parsed to process and display the results onto a GUI visualizer.

📝 NOTE:
For more information on xWRLx432 TLVs and output data (SDK 5.x) refer to section 13 of the implementation guide located at /docs/MotionPresenceDetectionDemo_documentation.pdf.

Frame Header

Length: 40 Bytes
A Frame Header is sent at the start of each packet. Use the Magic Word to find the start of each packet. The frame header is setup differently than the output TLVs. The frame header is setup to be rigid as it will always come first and always be in the same format, as a result it is based off of its own struct named MmwDemo_output_message_header with defined struct members.

Value Type Bytes Details
Magic Word uint16_t 8 Output buffer magic word (sync word). It is initialized to {0x0102,0x0304,0x0506,0x0708}
Version uint32_t 4 SDK Version represented as (MajorNum x 2^24 + MinorNum x 2^16 + BugfixNum x 2^8 + BuildNum)
Total Packet Length uint32_t 4 Total packet length including frame header length in Bytes
Platform uint32_t 4 Device type (ex 0xA6843 for IWR6843 devices)
Frame Number uint32_t 4 Frame number (resets to 0 when device is power cycled or reset. Not when sensor stop/start is issued.)
Time [in CPU Cycles] uint32_t 4 Time in CPU cycles when the message was created.
Num Detected Obj uint32_t 4 Number of detected objects (points) for the frame
Num TLVs uint32_t 4 Number of TLV items for the frame.
Subframe Number uint32_t 4 0 if advanced subframe mode not enabled, otherwise the sub-frame number in the range 0 to (number of subframes - 1)

TLV Header

Length: 8 Bytes
The number of TLVs in the frame packet is extracted from the Frame Header. For each TLV in the packet, there is a TLV Header containing Type and Length information. The Type identifier indicates what kind of information is contained in the payload. The Length value gives the length of the payload.

Value Type Bytes Details
Type uint32_t 4 Indicates types of message contained in payload.
Length uint32_t 4 Length of the payload in Bytes (does not include length of the TLV header)

TLV Toggling with guiMonitor

The parameters in the CLI command guiMonitor are used to enable or disable whether the TLV type is included in the output frame packet. The parameters are as follows: guiMonitor <subFrameIdx> <detected objects> <log magnitude range> <noise profile> <rangeAzimuth(Elevation)HeatMap> <rangeDopplerHeatMap> <statsInfo>

For the Out of Box demo, if type contains the following value then the payload contains the information listed under value type and should be parsed accordingly.

Type Identifier Value Type Condition for output
1 Detected Points <detected objects> is set to 1 or 2 AND there are detected objects for the frame, else this type is not sent for that frame
2 Range Profile <log magnitude range> is set to 1; occurs every frame
3 Noise Floor Profile <noise profile> is set to 1; occurs every frame
4 Azimuth Static Heatmap <rangeAzimuth(Elevation)HeatMap> is set to 1 AND demo is not for AOP or ODS which use AOA2D; occurs every frame
5 Range-Doppler Heatmap <rangeDopplerHeatMap> is set to 1; occurs every frame
6 Statistics (Performance) <statsInfo> is set to 1; occurs every frame
7 Side Info for Detected Points <detected objects> is set to 2 AND there are detected objects for the frame, else this type is not sent for that frame
8 Azimuth/Elevation Static Heatmap <rangeAzimuth(Elevation)HeatMap> is set to 1 AND demo is for AOP or ODS which use AOA2D; occurs every frame
9 Temperature Statistics <statsInfo> is set to 1; occurs every frame

Availability of Universal TLV’s in Labs

The list below covers TLVs that can be found across all mmWave radar example demos. Clicking on a type name will take you to the appropriate section. Note that TLVs with similar functions will have different type identifer based off of the source. Some demos will have TLVs only from one of the SDKs and others will have TLVs from both the SDK and Radar Toolbox.

Type Identifier Type Name Source
1 MMWDEMO_OUTPUT_MSG_DETECTED_POINTS MMWAVE-SDK
MMWAVE-L-SDK-6
2 MMWDEMO_OUTPUT_MSG_RANGE_PROFILE MMWAVE-SDK
MMWAVE-L-SDK-6
3 MMWDEMO_OUTPUT_MSG_NOISE_PROFILE MMWAVE-SDK
4 MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP MMWAVE-SDK
5 MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP MMWAVE-SDK
MMWAVE-L-SDK-6
6 MMWDEMO_OUTPUT_MSG_STATS MMWAVE-SDK
MMWAVE-L-SDK-6
7 MMWDEMO_OUTPUT_MSG_DETECTED_POINTS_SIDE_INFO MMWAVE-SDK
MMWAVE-L-SDK-5
MMWAVE-L-SDK-6
8 MMWDEMO_OUTPUT_MSG_AZIMUT_ELEVATION_STATIC_HEAT_MAP MMWAVE-SDK
9 MMWDEMO_OUTPUT_MSG_TEMPERATURE_STATS MMWAVE-SDK
301 MMWDEMO_OUTPUT_EXT_MSG_DETECTED_POINTS MMWAVE-L-SDK-5
302 MMWDEMO_OUTPUT_EXT_MSG_RANGE_PROFILE_MAJOR MMWAVE-L-SDK-5
303 MMWDEMO_OUTPUT_EXT_MSG_RANGE_PROFILE_MINOR MMWAVE-L-SDK-5
304 MMWDEMO_OUTPUT_EXT_MSG_RANGE_AZIMUT_HEAT_MAP_MAJOR MMWAVE-L-SDK-5
305 MMWDEMO_OUTPUT_EXT_MSG_RANGE_AZIMUT_HEAT_MAP_MINOR MMWAVE-L-SDK-5
306 MMWDEMO_OUTPUT_EXT_MSG_STATS MMWAVE-L-SDK-5
308 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST MMWAVE-L-SDK-5
309 MMWDEMO_OUTPUT_EXT_MSG_TARGET_INDEX MMWAVE-L-SDK-5
310 MMWDEMO_OUTPUT_EXT_MSG_MICRO_DOPPLER_RAW_DATA MMWAVE-L-SDK-5
311 MMWDEMO_OUTPUT_EXT_MSG_MICRO_DOPPLER_FEATURES MMWAVE-L-SDK-5
312 MMWDEMO_OUTPUT_EXT_MSG_RADAR_CUBE_MAJOR MMWAVE-L-SDK-5
313 MMWDEMO_OUTPUT_EXT_MSG_RADAR_CUBE_MINOR MMWAVE-L-SDK-5
315 MMWDEMO_OUTPUT_EXT_MSG_ENHANCED_PRESENCE_INDICATION MMWAVE-L-SDK-5
316 MMWDEMO_OUTPUT_EXT_MSG_ADC_SAMPLES MMWAVE-L-SDK-5
317 MMWDEMO_OUTPUT_EXT_MSG_CLASSIFIER_INFO MMWAVE-L-SDK-5
318 MMWDEMO_OUTPUT_EXT_MSG_RX_CHAN_COMPENSATION_INFO MMWAVE-L-SDK-5
MMWAVE-L-SDK-6
1000 MMWDEMO_OUTPUT_MSG_SPHERICAL_POINTS Radar Toolbox
1010 MMWDEMO_OUTPUT_MSG_TRACKERPROC_3D_TARGET_LIST Radar Toolbox
1011 MMWDEMO_OUTPUT_MSG_TRACKERPROC_TARGET_INDEX Radar Toolbox
1012 MMWDEMO_OUTPUT_MSG_TRACKERPROC_TARGET_HEIGHT Radar Toolbox
1020 MMWDEMO_OUTPUT_MSG_COMPRESSED_POINTS Radar Toolbox
1021 MMWDEMO_OUTPUT_MSG_PRESCENCE_INDICATION Radar Toolbox
1030 MMWDEMO_OUTPUT_MSG_OCCUPANCY_STATE_MACHINE Radar Toolbox
1031 MMWDEMO_OUTPUT_MSG_SURFACE_CLASSIFICATION_PROBABILITY Radar Toolbox
1050 MMWDEMO_OUTPUT_MSG_GESTURE_FEATURES Radar Toolbox
1051 MMWDEMO_OUTPUT_MSG_ANN_OP_PROB Radar Toolbox
3000 MMWDEMO_OUTPUT_EXT_MSG_CAM_TRIGGERS Radar Toolbox

TLV Payload

Detected Points

xWRL6844, xWR6843, xWR1843, xWR1642, xWR1443

Type Identifier Type Value Length Value
1 MMWDEMO_OUTPUT_MSG_DETECTED_POINTS (Num Detected Obj) x (16 Bytes) Array of detected points

Each point is represented by 16 bytes giving position and radial Doppler velocity as shown in the table below

Value Type Bytes
X [m] float 4
Y [m] float 4
Z [m] float 4
doppler [m/s] float 4

For the point cloud format of the xWRL6432 and xWRL1432, see TLV 301:
MMWDEMO_OUTPUT_EXT_MSG_DETECTED_POINTS

Range Profile

xWRL6844, xWR6843, xWR1843, xWR1642, xWR1443

Type Identifier Type Value Length Value
2 MMWDEMO_OUTPUT_MSG_RANGE_PROFILE (Range FFT size) x (2 Bytes) Array of profile points at 0th Doppler (stationary objects). The points represent the sum of log2 magnitudes of received antennas expressed in Q9 format.

xWRLx432

Range Profile Major
Type Identifier Type Value Length Value
302 MMWDEMO_OUTPUT_EXT_MSG_RANGE_PROFILE_MAJOR (Number Of Range Bins) x (4 Bytes) Array of 32-bit unsigned linear values of range bins for major motion. The length is equal to number of range bin elements
Range Profile Minor
Type Identifier Type Value Length Value
303 MMWDEMO_OUTPUT_EXT_MSG_RANGE_PROFILE_MINOR (Number Of Range Bins) x (4 Bytes) Array of 32-bit unsigned linear values of range bins for major motion. The length is equal to number of range bin elements

Noise Profile

Type Identifier Type Value Length Value
3 MMWDEMO_OUTPUT_MSG_NOISE_PROFILE (Range FFT size) x (2 Bytes) Array of profile points at max Doppler bin. In general for stationary scene, there would be no objects or clutter at maximum speed so the range profile at such speed represents the receiver noise floor.

Azimuth Static Heatmap

Type Identifier Type Value Length Value
4 MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP (Range FFT size) x (Number of “azimuth” virtual antennas) x (4 Bytes) Samples to calculate static azimuth heatmap (no moving object signal). This is a 2D FFT array in range direction (x[numRangeBins][numVirtualAntAzim]), at doppler index 0.

The antenna data are complex symbols, with imaginary first and real second in the following order:

Imag(ant 0, range 0), Real(ant 0, range 0),…,Imag(ant N-1, range 0),Real(ant N-1, range 0)

Imag(ant 0, range R-1), Real(ant 0, range R-1),…,Imag(ant N-1, range R-1),Real(ant N-1, range R-1)

This means the first 4 bytes of the payload is the radar cube complex value of the first range bin for the first virtual antenna(N=1). The last 4 bytes is for the last range bin (R) and the last virtual antenna (N). The values from the radar cube are used to construct the range-azimuth heatmap in the visualizer.

Range-Doppler Heatmap

Type Identifier Type Value Length Value
5 MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP (Range FFT size) x (Doppler FFT size) x (2 Bytes) Range/Doppler detection matrix.

X(range bin 0, Doppler bin 0),…,X(range bin 0, Doppler bin D-1),

X(range bin R-1, Doppler bin 0),…,X(range bin R-1, Doppler bin D-1)

Statistics

Type Identifier Type Value Length Value
6 MMWDEMO_OUTPUT_MSG_STATS 24 Bytes Statistical performance information from data path.

See the doxygen for detailed explanation of each stat.

Value Type Bytes
interFrameProcessingTime [usec] uint32_t 4
transmitOutputTime[usec] uint32_t 4
interFrameProcessingMargin [usec] uint32_t 4
interChirpProcessingMargin [usec] uint32_t 4
activeFrameCPULoad [%] uint32_t 4
interFrameCPULoad [%] uint32_t 4

Side Info for Detected Points

Type Identifier Type Value Length Value
7 MMWDEMO_OUTPUT_MSG_DETECTED_POINTS_SIDE_INFO 4 Bytes x Num Detected Obj Provides side info which includes the Signal-to-Noise Ratio (SNR) and Noise

The payload consists of 4 bytes for EACH point in the point cloud. The values for snr and noise are measured in multiples of 0.1dB.

Value Type Bytes
snr [dB] uint16_t 2
noise [dB] uint16_t 2

Azimuth/Elevation Static Heatmap

Type Identifier Type Value Length Value
8 MMWDEMO_OUTPUT_MSG_AZIMUT_ELEVATION_STATIC_HEAT_MAP (Range FFT size) x (Number of all virtual antennas) x (4 Bytes) Samples to calculate static azimuth or elevation heatmap (no moving object signal). This is a 2D FFT array in range direction (x[numRangeBins][numVirtualAntAzim]), at doppler index 0.

The antenna data are complex symbols, with imaginary first and real second in the following order:

Imag(ant 0, range 0), Real(ant 0, range 0),…,Imag(ant N-1, range 0),Real(ant N-1, range 0)

Imag(ant 0, range R-1), Real(ant 0, range R-1),…,Imag(ant N-1, range R-1),Real(ant N-1, range R-1)

📝 NOTE:
The demo will only output either the Azimuth Static Heatmap OR the Azimuth/Elevation Static Heatmap

Temperature Statistics

Type Identifier Type Value Length Value
9 MMWDEMO_OUTPUT_MSG_TEMPERATURE_STATS 28 Bytes Temperature report - snapshot taken just before shipping data over UART.

Table of each temperature reading sent is shown below:

Value Type Bytes
tempReportValid (used to know if values are valid) uint32_t 4
time (radarSS local Time from device powerup) [1LSB = 1ms] uint32_t 4
tmpRx0Sens [1 LSB = 1 deg C] uint16_t 2
tmpRx1Sens [1 LSB = 1 deg C] uint16_t 2
tmpRx2Sens [1 LSB = 1 deg C] uint16_t 2
tmpRx3Sens [1 LSB = 1 deg C] uint16_t 2
tmpTx0Sens [1 LSB = 1 deg C] uint16_t 2
tmpTx1Sens [1 LSB = 1 deg C] uint16_t 2
tmpTx2Sens [1 LSB = 1 deg C] uint16_t 2
tmpPmSens [1 LSB = 1 deg C] uint16_t 2
tmpDig0Sens [1 LSB = 1 deg C] uint16_t 2
tmpDig1Sens [1 LSB = 1 deg C] (Not valid for devices without DSP) uint16_t 2

Detected Points Compressed

Type Identifier Type Value Length Value
301 MMWDEMO_OUTPUT_EXT_MSG_DETECTED_POINTS 20 Bytes + (10 Bytes x Num Detected Obj) Compressed version of the point cloud in Cartesian coordinates

Every point value must be multiplied by its appropriate point cloud unit value to get true value.
Example: A point’s real x coordinate will be x * xyzUnit

Point Cloud Unit Values struct

Value Type Bytes
xyzUnit float 4
dopplerUnit float 4
snrUnit float 4
noiseUnit float 4
numDetectedPoints [2] uint16_t 4

Point struct

Value Type Bytes
x uint16_t 2
y uint16_t 2
z uint16_t 2
doppler uint16_t 2
snr uint8_t 1
noise uint8_t 1

Range Azimuth Heat Map Major

Type Identifier Type Value Length Value
304 MMWDEMO_OUTPUT_EXT_MSG_RANGE_AZIMUT_HEAT_MAP_MAJOR 4 Bytes x numberOfRangeBins x numAzimuthBins Consists of two dimensional array of 32-bit unsigned magnitude values.

The matrix is arranged as:
X[rangeInd*azimuthFftSize+azimuthInd], rangeInd = 0, numRangeBins - 1, azimuthInd = 0, azimuthFftSize – 1

Range Azimuth Heat Map Minor

Type Identifier Type Value Length Value
305 MMWDEMO_OUTPUT_EXT_MSG_RANGE_AZIMUT_HEAT_MAP_MINOR 4 Bytes x numberOfRangeBins x numAzimuthBins Consists of two dimensional array of 32-bit unsigned magnitude values.

The matrix is arranged as:
X[rangeInd*azimuthFftSize+azimuthInd], rangeInd = 0, numRangeBins - 1, azimuthInd = 0, azimuthFftSize – 1

Statistics Performance

Type Identifier Type Value Length Value
306 MMWDEMO_OUTPUT_EXT_MSG_STATS 24 Bytes Statistical performance information from data path.

See the doxygen for detailed explanation of each stat.

Value Type Bytes
interFrameProcessingTime [usec] uint32_t 4
transmitOutputTime[usec] uint32_t 4
powerMeasured[4] (1LSB = 100 uW) uint16_t[4] 8
tempReading[4] (1LSB = 1*C) uint16_t[4] 8

Micro Doppler Raw Data

Type Identifier Type Value Length Value
310 MMWDEMO_OUTPUT_EXT_MSG_MICRO_DOPPLER_RAW_DATA numTrackedObjects x numDopplerBins x 4 Bytes Array of micro-Doppler spectra of the tracked targets, corresponding to target IDs sent in the tracker data TLV. The samples are stored in float format as dopplerData[targetIndex][DopplerIndex].

This TLV contains micro-Doppler spectra of the tracked objects. Note that this TLV is sent to host when all of the following conditions are satisfied:

  1. The group tracker is enabled in the CLI command trackingCfg,
  2. The micro-Doppler DPU is enabled in the CLI command microDopplerCfg,
  3. The tracking data enable bit is enabled in the CLI command guiMonitor,
  4. The micro-Doppler data enable bit is enabled in the CLI command guiMonitor,
  5. The number of tracking objects in the current frame is greater than zero.

Micro Doppler Feature Extraction

Type Identifier Type Value Length Value
311 MMWDEMO_OUTPUT_EXT_MSG_MICRO_DOPPLER_FEATURES numTrackedObjects x numberOfFeatures x 4 Bytes Array of features sets, corresponding to target IDs sent in the tracker data TLV. The features are stored in a floating point format as features[targetIndex][featureIndex]

This TLV contains features extracted from the micro-Doppler FFT. It is sent out along with the Micro-Doppler Raw Data TLV, and thus must satisfy the same configuration requirements.

Radar Cube Major

Type Identifier Type Value Length Value
312 MMWDEMO_OUTPUT_EXT_MSG_RADAR_CUBE_MAJOR Size of a frame of input data The radar cube can be used for debugging and verification. The demo must run in test mode, where the ADC samples are taken from the file, and after the frame processing the radar cube data are sent to host for verification against a MATLAB reference.

Radar Cube Minor

Type Identifier Type Value Length Value
313 MMWDEMO_OUTPUT_EXT_MSG_RADAR_CUBE_MINOR Size of a frame of input data The radar cube can be used for debugging and verification. The demo must run in test mode, where the ADC samples are taken from the file, and after the frame processing the radar cube data are sent to host for verification against a MATLAB reference.

Enhanced Presence Indication

Type Identifier Type Value Length Value
315 MMWDEMO_OUTPUT_EXT_MSG_ENHANCED_PRESENCE_INDICATION (1 + ceiling(NumberOfZones/4) x 1 Byte This TLV contains the presence information for number of zones defined in the radar scene. The information for each zone is represented with 2 bits, packed in bytes starting from LSB position towards MSB.

0 – no detection
1 – minor motion detected
2 – major motion detected
3 – major and minor motion detected

ADC Samples

Type Identifier Type Value Length Value
316 MMWDEMO_OUTPUT_EXT_MSG_ADC_SAMPLES (xWRx843) NumADCSamples x NumRxChannels x NumTxChannels * 4 Bytes Sends last two chirps for two TX and last one chirp for one TX recorded and stored in ping/pong buffer for xWRx843
316 MMWDEMO_OUTPUT_EXT_MSG_ADC_SAMPLES (xWRLx432) NumADCSamples x NumRxChannels x NumTxChannels * 2 Bytes Sends last two chirps for two TX and last one chirp for one TX recorded and stored in ping/pong buffer for xWRLx432

Classifier Info

Type Identifier Type Value Length Value
317 MMWDEMO_OUTPUT_EXT_MSG_CLASSIFIER_INFO numTrackedObjects * CLASSIFIER_NUM_CLASSES * 1 Byte Array of classifier outcome in Q7 format, packed as classOutcome[targetIndex][classIndex]

This TLV is sent to host when all of the following conditions are satisfied:

  1. The group tracker is enabled in the CLI command trackingCfg,
  2. The micro-Doppler DPU is enabled in the CLI command microDopplerCfg,
  3. The tracking data enable bit is enabled in the CLI command guiMonitor,
  4. The micro-Doppler data enable bit is enabled in the CLI command guiMonitor,
  5. The number of tracking objects in the current frame is greater than zero.

RX Channel Compensation Info

Type Identifier Type Value Length Value
318 MMWDEMO_OUTPUT_EXT_MSG_RX_CHAN_COMPENSATION_INFO 4 Bytes + (4 Bytes x (2 x Num TX Antennas x Num RX Channels)) Array of RX Channel compensations coefficients, in Q20 format

Array is in the form of X[NumTX][NumRX] where
RX order is 0,1,….SYS_COMMON_NUM_RX_CHANNEL - 1 and
TX order is 0,1,….SYS_COMMON_NUM_TX_ANTENNAS - 1

Spherical Coordinates

Type Identifier Type Value Length Value
1000 MMWDEMO_OUTPUT_MSG_SPHERICAL_POINTS Number of Points x 16 Bytes Point cloud in spherical coordinates

The payload consists of 4 elements for each point in the point cloud: Range(meters), Azimuth(radians), Elevation(radians), and Doppler(meters/second). Each element is 4 bytes.

Value Type Bytes
Range [m] float 4
Azimuth [rad] float 4
Elevation [rad] float 4
Doppler [m/s] float 4

3D Target List

xWR6843

Type Identifier Type Value Length Value
1010 MMWDEMO_OUTPUT_MSG_TRACKERPROC_3D_TARGET_LIST Number of Targets x 112 Bytes Set of values that describe the 3 dimensional position and motion of the target being tracked, include position, velocity, acceleration, as well as error measurements for the track.

xWRLx432

Type Identifier Type Value Length Value
308 MMWDEMO_OUTPUT_EXT_MSG_TARGET_LIST Number of Targets x 112 Bytes Set of values that describe the 3 dimensional position and motion of the target being tracked, include position, velocity, acceleration, as well as error measurements for the track.

Tracker Proc struct

Value Type Bytes
tid - Track ID uint32_t 4
posX - Target Position (meters) in X dimension float 4
posY - Target Position (meters) in Y dimension float 4
posZ - Target Position (meters) in Z dimension float 4
velX - Target Velocity (meters/second) in X dimension float 4
velY - Target Velocity (meters/second) in Y dimension float 4
velZ - Target Velocity (meters/second) in Z dimension float 4
accX - Target Acceleration (meters/second^2) in X dimension float 4
accY - Target Acceleration (meters/second^2) in Y dimension float 4
accZ - Target Acceleration (meters/second^2) in Z dimension float 4
ec[16] - Tracking error covariance matrix float 64
g - Gating function gain float 4
confidenceLevel float 4

Target Index

xWR6843

Type Identifier Type Value Length Value
1011 MMWDEMO_OUTPUT_MSG_TRACKERPROC_TARGET_INDEX Number of Points x 1 Byte Contains target ID, allocating every point to a specific target or no target

xWRLx432

Type Identifier Type Value Length Value
309 MMWDEMO_OUTPUT_EXT_MSG_TARGET_INDEX Number of Points x 1 Byte Contains target ID, allocating every point to a specific target or no target

Target Height

Type Identifier Type Value Length Value
1012 MMWDEMO_OUTPUT_MSG_TRACKERPROC_TARGET_HEIGHT Number of Points x 12 Bytes Contains target ID, then then the maximum Z estimate given as a float and the minimum Z estimate given as a float.
Value Type Bytes
targetID - Target ID uint32_t 4
maxZ - Target maxZ estimate float 4
minZ - Target minZ estimate float 4

3D Spherical Compressed Point Cloud

Type Identifier Type Value Length Value
1020 MMWDEMO_OUTPUT_MSG_COMPRESSED_POINTS 20 Bytes + (8 Bytes x Number of Points) Contains the compressed point cloud and corresponding unit values needed to get actual coordinate

Defines the point cloud and corresponding elements. It is split into two structs, one that defines the point cloud, and one that defines that the individual points in the cloud. The unit value acts as a scale for individual point values. By splitting the value into unit/range values, we reduce how much information needs to be parsed, at the cost of some accuracy.

Point Cloud struct

Value Type Bytes
elevationUnit float 4
azimuthUnit float 4
dopplerUnit float 4
rangeUnit float 4
snrUnit float 4

Point struct

Value Type Bytes
elevation int8 1
azimuth int8 1
doppler int16 2
range uint16 2
snr uint16 2

Presence Detection

Type Identifier Type Value Length Value
1021 MMWDEMO_OUTPUT_MSG_PRESCENCE_INDICATION 4 Bytes Indicates whether some presence has been detected in the field of view of the radar

Occupancy State Machine Output

Type Identifier Type Value Length Value
1030 MMWDEMO_OUTPUT_MSG_OCCUPANCY_STATE_MACHINE 4 Bytes Bitmask indicating which zone is occupied during small object detection.

If bit 1 is set to 1, zone 1 is occupied, and if zone 1 is 0, zone 1 is not occupied

Surface Classification Output

Type Identifier Type Value Length Value
1031 MMWDEMO_OUTPUT_MSG_SURFACE_CLASSIFICATION_PROBABILITY 4 Bytes Float value indicating the prediction value from surface classification model

A value closer to 1 indicates a higher confidence in ‘grass’ classification. A value closer to 0 indicates a higher confidence in ‘not grass’

Gesture Feature Extraction Output

Type Identifier Type Value Length Value
1050 MMWDEMO_OUTPUT_MSG_GESTURE_FEATURES 40 Bytes Extracted features used as input to neural network.
Value Type Bytes
weightedDoppler float 4
weightedPositiveDoppler float 4
weightedNegativeDoppler float 4
weightedRange float 4
numPoints float 4
weightedAzimuthMean float 4
weightedElevationMean float 4
azimuthDopplerCorrelation float 4
weightedAzimuthDispersion float 4
weightedElevationDispersion float 4

Gesture Neural Network Output

Type Identifier Type Value Length Value
1051 MMWDEMO_OUTPUT_MSG_ANN_OP_PROB 40 Bytes Raw neural network output proabilities for each class.
Value Type Bytes
probabilityNoGesture float 4
probabilityGesture1 float 4
probabilityGesture2 float 4
probabilityGesture3 float 4
probabilityGesture4 float 4
probabilityGesture5 float 4
probabilityGesture6 float 4
probabilityGesture7 float 4
probabilityGesture8 float 4
probabilityGesture9 float 4

Dashcam Trigger Output

Type Identifier Type Value Length Value
3000 MMWDEMO_OUTPUT_EXT_MSG_CAM_TRIGGERS 16 Bytes Output of presence-sensing dashcam detection logic
Value Type Bytes
tracksActive uint32_t 4
tracksTriggeringCam uint32_t 4
tracksWithinMonRange uint32_t 4
tracksWithinTriggerRange uint32_t 4

Need More Help?