The gesture recognition demo shows some of the capabilities of the xWRLx432 SOC using the drivers in the MMWAVE-L-SDK (Software Development Kit). It allows user to specify the chirping profile, displays the presence detected/gesture detected and other information (like extracted features, processing time etc) in real-time. The demo comes with one default configuration (gesture_recognition.cfg which includes some tunable parameters for presence also). The configuration in gesture_recognition.cfg leverages gesture signal processing chain to demonstrate the sensors ability to detect presence followed by gesture based on mode switch. The gesture demo supports the presence + gesture mode of operation. It initially starts functioning in presence mode (with low power) and switches to gesture mode when a person approaches the radar and vice-versa if the gesture is not performed for sometime (user programmable).
The following documents provide more information on the gesture demo.
[1] describes system execution flow, memory usage, task organization, memory and benchmark results of gesture recognition demo.
[2] contains a high level description of the Signal Processing chain and has useful information on tuning the demo performance for different usecases.
Refer GestureRecognitionDemo_documentation.pdf document for implementation and tuning guide details of Demo application.
Parameter | Value |
---|---|
CPU + OS | m4fss0-0 freertos |
Toolchain | ti-arm-clang |
Board | xWRL6432-evm |
Example folder | examples/mmw_demo/gesture_recognition |
A GUI tool SysConfig is used to configure different modules and peripherals of the example. Using this tool, users can select and customize different modules and peripherals. The SysConfig tool will generate the code for initializing and configuring these modules. This configuration is saved to a file called example.syscfg for every example. To know more about how to use SDK with SysConfig, Visit this page
Each line in the .cfg file describes a command with parameters. The various commands and their arguments are described in the table below (arguments are in sequence)
Commands | Parameters | Notes |
---|---|---|
sensorStop | FrameStopMode | Indicates the frame stop mode. This command stops the sensor from transmitting further frames. Important Note: This command is not supported when lowPowerCfg is 1 |
channelCfg | RxChCtrlBitMask | RX antennas 1 and 2, mask = 0x011b = 3 RX antennas 1 and 3, mask = 0x101b = 5 RX antennas 2 and 3, mask = 0x110b = 6 RX antennas 1, 2 & 3, mask = 0x111b = 7 |
TxChCtrlBitMask | TX antennas 1 and 2, mask = 0x011b = 3 TX antenna 1, mask = 0x001b = 1 TX antenna 2, mask = 0x010b = 2 | |
MiscCtrl | Not supported on the current version of the SDK. | |
chirpComnCfg | DigOutputSampRate | Digital output Sampling rate for chirp ADC samples. Digital sampling rate is given by 100MHz/ DigOutputSampRate. The valid sampling rate can be configured as per below. 8 - 12.5 MHz 9 - 11.11 MHz 10 - 10 MHz 12 - 8.333 MHz 16 - 6.25 MHz 20 - 5 MHz 25 - 4 MHz 32 - 3.125 MHz 40 - 2.5 MHz 50 - 2 MHz 64 - 1.5625 MHz 80 - 1.25 MHz 100 - 1 MHz |
DigOutputBitsSel | Digital output sample bits select, this field governs which bits of the FECSS DFE's internal 16 bit signed data path are sent as output. 0 - Digital sample output is 12 MSB bits of DFE after rounding 4 LSBs 1 - Digital sample output is 12 bits after rounding 3 LSBs & clipping 1 MSB 2 - Digital sample output is 12 bits after rounding 2 LSBs & clipping 2 MSB 3 - Digital sample output is 12 bits after rounding 1 LSBs & clipping 3 MSB 4 - Digital sample output is 12 LSB bits after clipping 4 MSB 5 - Digital sample output is 16 bits | |
DfeFirSel | The final stage FIR filter's characteristics can be selected as below. 0 - Long Filter (90% visibility): This provides visibility to a larger range of IF frequencies: 0 to 0.45 x Sampling Rate. Beyond that, the filter response starts drooping & enters filter transition band. 1 - Short Filter (80% visibility): This provides faster settled outputs but the IF frequency range visible is 0 to 0.40 x Sampling Rate. Beyond that, the filter response starts drooping & enters filter transition band. | |
NumOfAdcSamples | No. of ADC samples. Current SDK works for values with powers of 2. Valid Range: 2 to 2048 (Limited support in current OOB) | |
ChirpTxMimoPatSel | BPM is not supported in current gesture Demo. 0 - TX BPM MIMO pattern disabled 1 - TDMA_2TX pattern 4 - BPM_2TX pattern | |
ChirpRampEndTime | Chirp Profile Ramp end Time. This is a common ramp end time value for all chirps in a frame. | |
ChirpRxHpfSel | Chirp Profile HPF corner frequency. This is a common HPF corner frequency value for all chirps in a frame. 0 - 175kHz HPF corner frequency 1 - 350kHz HPF corner frequency 2 - 700kHz HPF corner frequency 3 - 1400kHz HPF corner frequency | |
chirpTimingCfg | ChirpIdleTime | Chirp Profile Idle Time. This is a common idle time value for all chirps in a frame. Unit: 1us. |
ChirpAdcSkipSamples | Chirp Profile ADC start skip samples. This is a common adc start time value for all chirps in a frame Valid range: 0 to 63 | |
ChirpTxStartTime | Chirp Profile TX start Time. This is a common TX start time value for all chirps in a frame.This field indicates the TX start time in the chirp cycle with respect to the knee of the ramp. Unit: In usec | |
ChirpRfFreqSlope | Chirp Profile RF Frequency Slope. This is a common RF frequency slope value for all chirps in a frame.This field indicates the required FMCW slope of the chirp. Unit: MHz/us Valid range:- 399MHz/us to +399MHz/us. | |
ChirpRfFreqStart | Chirp Profile RF start Frequency. This is a common RF start frequency value for all chirps in a frame. This field indicates the required start frequency of the chirp. Unit: GHz Valid range:58GHz to 62.5GHz for ES1.0 xWRL6432 devices, 76GHz to 81GHz for xWRL1432 devices. | |
frameCfg | NumOfChirpsInBurst | Number of Chirps in a Burst. This field indicates the number of chirps to be generated per burst. Valid range: 1 to 65535 chirps . (Limited support in current OOB) |
NumOfChirpsAccum | Number of accumulation per chirp. This field indicates the Number of chirps to be accumulated before sending the ADC data out in DFE, this can be used to increase the SNR without increasing the number of chirps to process in the DSP/HW accelerator. Valid range: : 0 to 64 chirps. (Limited support in current OOB) | |
BurstPeriodicity | Burst periodicity in μs. This field indicates the period of the burst. (Limited support in current OOB) | |
NumOfBurstsInFrame | Number of bursts per frame. Valid range:1 to 4096 (Limited support in current OOB) | |
FramePeriodicity | Frame Periodicity. This field indicates the period of the frame, 32bit counter.This field indicates the frame periodicity, the time gap between successive frame starts. Unit: ms Valid range:100 to 4294967295 (Limited support in current OOB) | |
NumOfFrames | Number of frames. Valid range: 0 to 65535, 0 means infinite | |
lowPowerCfg | Enable/Diable | Configuration to enable/disable the power management framework. 0 - Disabled 1 - Enabled |
factoryCalibcfg | Save enable | When this option is enabled application will boot-up normally and configure the FECSS to perform all applicable factory calibrations during FECSS initialization. Once the calibrations are performed, application will retrieve the calibration data from FECSS and save it to FLASH. User need to specify valid <flash offset> value. <restore enable> option should be set to 0. Note The factory calibration should be done at room temp (25 °C +/- 15 °C) 0 - Save Disabled 1 - Save Enabled |
restore enable | When Restore enabled option is set, application will check the FLASH for a valid calibration data section. If present, it will restore the data from FLASH and provide it to FECSS while configuring it to skip any real-time factory calibrations and use provided calibration data. User need to specify valid <flash offset> value which was used during saving of calibration data. <save enable> option should be set to 0. <rxGain> and <backoff0> arguments will be ignored when restore option is enabled. 0 - Restored Disabled 1 - Restore Enabled | |
rxGain | Recommended value is 30db to 40db. Units: db. | |
backoff0 | TX channel power calibration. Valid Range: 0db to 26db. Units: db. | |
flash offset | Address offset in the flash to be used while saving or restoring calibration data. Make sure the address doesn't overlap the location in FLASH where application images are stored and has enough space for saving factory Calibration data. This field is don't care if both save and restore are disabled.Flash address range is 0x0 to 0x1FFFFF (16Mb) Actual Factory calibration data is of size 128 bytes. It is recommended to use last sector of flash memory starting with address 0x1FF000. Note Note The flash offset should be greater than 1MB (0x100000h) for EVM. This check is only to make sure Appimage and ATE calibration data is not corrupted. | |
baudRate | baudRateVal | The sensor starts with 1250000 baud rate by default in gesture demo. |
sensorStart | 'FrameTrigMode' | Frame Trigger Mode. 0 - Frame SW immediate trigger Mode (SW_TRIG). 1 - Frame SW timer based trigger Mode (SW_TIMER_TRIG). 2 - Frame HW trigger low power Mode (HW_LOW_PWR_TRIG). 3 - Frame HW trigger low jitter Mode (HW_LOW_JIT_TRIG). 4 - CW CZ Trigger Mode (CW_CZ_TRIG). 5 - Chirp Timer Override Trigger Mode (CT_OVRD_TRIG). (Currently SDK supports only SW_TRIG mode(0)) |
'ChirpStartSigLbE' | Chirp Timer (CT) start signal loopback enable control. 0 - CHIRP_START_SIGNAL to DIG_SYNC_OUT Loopback Disable 1 - CHIRP_START_SIGNAL to DIG_SYNC_OUT Loopback Enable. (Currently SDK supports only Loopback Disable mode(0)) | |
'FrameLivMonEn' | Frame Live monitors enable control. 0 - Live monitor Disabled 1 - Live monitor Enabled (Currently SDK supports only Live monitor Disabled(0)) | |
'FrameTrigTimerVal' | Frame Trigger Timer Value. 32bit counter value. (Currently SDK demo is tested only with value 0) |
Commands | Parameters | Notes |
---|---|---|
sigProcChainCfg2 | azimuthFftSize | Azimuth FFT size. Suggested to set as power of 2 (Currently gesture demo is tested only with values upto 32) |
elevationFftSize | Elevation FFT size. Suggested to set as power of 2 (Currently gesture demo is tested only with values upto 32) | |
motDetMode | Mode selection. 1 - Major motion detection only (Current gesture demo supports only Major mode of operation) | |
minDist | Minimum distance from the radar from which gesture will be detected (Current gesture demo has this value to be 0.25m) | |
maxDist | Maximum distance from the radar from which gesture will be detected (Current gesture demo has this value to be 1.66m) | |
maxNumPoints | Maximum number of points for which angle calculation has to be calculated (Current gesture demo has this value to be 25, the demo is tested for values upto 50 only) |
Commands | Parameters | Notes |
---|---|---|
presenceDetectCfg | presenceDetectEnable | to enable or disable the presence mode (0-gesture mode, 1-presence + gesture mode (switch from presence->gesture and vice-versa), 2-presence mode only to test/set the threshold value) |
thresholdPresenceDetect | threshold value in presence mode above which the switch will happen to gesture mode (chosen empirically after setting in presence test mode) | |
burstPeriodicity | burst periodicity (in uS) between 2-bursts to be used in presence mode. |
Below is the high level flow diagram of gesture recognition demo in Low Power Mode: