MRR Beamsteering Users Guide
Table of Contents
Overview
- This lab exercise demonstrates the use of the 6-bit phase shifter on AWR-1843 mmWave sensor to steer the beam at programmable angles with ranges up to 150m.
- The mmWave sensor AWR1843BOOST evaluation module (EVM) is used for lab demonstration.
- Multi-mode capability is implemented in the current MRR Lab.
Required Hardware
- AWR1843BOOST EVM RevB (Note: For EVM RevA See Appendix – ECO Required for AWR1843BOOST RevA)
- Micro USB cable (included in the EVM package)
- 5V/2.5A Power Supply
Getting Started
1. Download the Lab Project
The mmWave Lab projects are available as part of the TI CLOUD TOOLS under Resource Explorer
- Open the following page: https://dev.ti.com/ and select Resource Explorer
- In the Resource Explorer Window, select Software ► mmWave Sensors ► Automotive Radar
- Click the Download button in the window that opens on the right side
- Download and install the Radar Toolbox zip file
- The pre-built binaries are located in the folder:
\mrr_beamsteering\prebuilt_binaries\xwr18xx_mrr_demo.bin
2. Flash Lab Binaries
- Install XDS Emulation Package on the PC host if needed.
- If CCS is installed on the PC host, the XDS Emulation package has already been installed during the CCS installation process.
- Power on the EVM using a 5V/2.5A power supply.
- Connect the EVM to your PC and check the COM ports in Windows Device Manager
- The EVM exports two virtual COM ports as shown below:
* XDS110 Class Application/User UART (COM<sub>UART</sub>): Used for passing configuration data and firmware to the EVM
* XDS110 Class Auxiliary Data Port (COM<sub>AUX</sub>): Used to send processed radar data output
Note the COMUART and COMAUX port numbers, as they will be used later for flashing and running the Lab.
- COMUART: COM38
- COMAUX: COM39
The actual port numbers on your machine may be different
Set the Dip Switch SOP0=ON; SOP1=OFF; SOP2=ON as shown in the image.
- Open the UniFlash tool
- In the New Configuration section, locate and select the appropriate device AWR1843BOOST
Click Start to proceed
In the Program tab, browse and locate demo binary file shown in Step 1
- In the Settings & Utilities tab, fill the COM Port text box with the Application/User UART COM port number (COMUART) noted earlier
- Return to the Program tab, power cycle the device and click on Load Images
- When the flash procedure completes, UniFlash’s console should indicate: [SUCCESS] Program Load completed successfully
- Power off the board and set the Dip Switch SOP2=OFF (this puts the board back in functional mode).
3. Run the Lab
- Execute the Demo GUI located in:
<RADAR_TOOLBOX_INSTALL_DIR>\tools\visualizers\MRR_BeamSteering_GUI- As such, the GUI requires a specific Matlab runtime engine (v8.5.1 32-bit) to properly install.
- The executable provided only works in a Windows operating system.
- In the GUI, select “UART port options”. Provide the COM Port with the Auxiliary Data COM port number (COMAUX) noted earlier.
- Check that EVM is powered on and the USB cable connected to the PC host running the GUI. In the GUI, select “Ok”.
- A snapshot of the PC-GUI showing the measured MRR visualization is shown below:
In the prebuild binaries, the beam steering is configured as follows:
- Max Angle = 60 deg
- Min Angle = -60 deg
- Angle Step Size = 20 deg
- The beams are alternating as follows:
- -60deg; -40deg; -20deg; 0deg; 20deg; 40deg; 60deg; -60deg; -40deg…
In the prebuild binaries, the frame duration is 60ms, so the beam steering cycling time is 7 x 60ms
Appendix – ECO Required for AWR1843BOOST RevA
MRR TIREX Lab enables the Tx beamforming by enabling all the 3 Tx simultaneously and this would require to use the 1V supply.
On the AWR1843BOOST EVM RevA the 1V supply does not by default go to the VOUT PA pin, there is a zero ohms resistor (R137) that needs to be mounted. The resistor is on the bottom of the board, just below the AWR device, near the VOUT PA pin.
Below are the schematic and the placement details:
Developer’s Guide
MRR Beamsteering Release v2.0 – Please read release notes for modes supported in this release.
Overview
- This lab exercise demonstrates the use of 6-bit Phase Shifters available on AWR1843 mmWave Sensor to steer the beams at any angle with a granularity of 5.625 degrees.
- The detected objects are tracked (in the azimuthal and elevation plane) up to ~150m.
- Multi mode capability is implemented in the current MRR Lab.
Key System Specification
| Parameter | MRR | USRR | Details |
|---|---|---|---|
| Max Range | 150m | 30m | This represents the maximum distance that the radar can detect an object representing an RCS of approximately 10 m2. |
| Range Resolution | 68.2 cm | 4.3cm | Range resolution is the ability of a radar system to distinguish between two or more targets on the same bearing but at different ranges |
| Max Velocity | 150 kmph | 36 kmph | This is the native maximum velocity obtained using a two dimensional FFT on the frame data. This specification will be improved over time by showing how higher level algorithms can extend the maximum measurable velocity beyond this limit. |
| Velocity Resolution | 0.11m/s | 0.32m/s | This parameter represents the capability of the radar sensor to distinguish between two or more objects at the same range but moving with different velocities. |
- Code Composer Studio (CCS) project along with source code is provided for this lab
- Pre built binary files are also provided that can be loaded on to the AWR1843BOOST EVM
System Design
Antenna Configuration
The AWR1843BOOST EVM uses four receivers and the three transmitters in two different chirp configurations.
The first configuration (MRR) uses a TX beamforming with all the 3 TX transmitting simultaneously.
The second configuration (USRR) uses a time division multiplexed MIMO configuration (that is, alternate chirps in a frame transmit on TX1, TX2 and TX3 respectively.). The MIMO configuration synthesizes an array of twelve virtual RX antennas(8 antennas in azimuthal plane and 4 antennas in the elevation plane), as shown in the figure below. This technique improves the angle resolution by a factor of two (compared to a single TX configuration).
Chirp and System Performance Parameters
Chirp Configuration
| Parameter | MRR | USRR |
|---|---|---|
| Idle Time (us) | 5 | 5 |
| ADC start time (us) | 4.8 | 3 |
| Ramp end time (us) | 60 | 44.0 |
| Number of ADC samples | 256 | 512 |
| Frequency Slope (MHz/us) | 4 | 56.25 |
| ADC Sampling frequency (ksps) | 4652 | 12500 |
| MIMO | 0 | 1 |
| Number of chirps per profile | 256 | 256 |
| Effective chirp time (us) | 53 | 42 |
| Bandwidth (MHz) | 240 | 3456 |
| Frame Lengths (ms) | 16.6 | 10.5 |
| Memory requirements (KB) | 1024 | 512 |
System Performance Parameters
| Parameter | MRR | USRR |
|---|---|---|
| Range Resolution (m) | 0.70 | 0.043 |
| Maximum Distance (m) | 150 | 30 |
| Maximum Velocity (kph) | 150 | 36 |
Implementation on the AWR1843
Modes Supported
Three Modes:
- MRR subframe only
- USRR subframe only
- USRR/MRR subframes
Configuration Profile
This lab makes use of “Advanced Frame Configuration” APIs to meet the requirements of the MRR and USRR use cases. These APIs allow construction of frames consisting of multiple sub frames, each one corresponding to particular use case.
2 sub frames are used in the USRR/MRR mode, 1 sub frame for the MRR context and the other for USRR context.
Frame Construction
MRR subframe
This subframe consists of two kinds of chirps (fast chirps and slow chirps). Both fast and slow chirps have the same slope; however, the slow chirp has a slightly higher ‘chirp repeat periodicity’ than the fast chirp. As a result, the slow chirps (when processed after 2D fast-Fourier transform (FFT)) have a lower maximum unambiguous velocity as compared to the fast chirps.
Note that the fast and slow chirps do not alternate; instead, the fast chirp is repeated a certain number of times, followed by the slow chirp, which is again repeated an equal number of times. The purpose of this chirp design is to use the two separate estimations of target velocity from the ‘fast chirp’ and the ‘slow chirp’ along with the ‘Chinese remainder theorem’ to generate a consistent velocity estimate with a much higher max-velocity limit.
USRR subframe
This subframe consists of three alternating chirps. Each chirp utilizes one of the three Txs available on the AWR1843 device. Combined processing of this subframe allows the generation of a virtual Rx array of twelve Rx antennas, which consequently has better angular resolution (approximately 14.3°) than the 4 Rx antenna array
Data Path
Processing Chain
The RF front end is configured by the BIST subsystem (BSS). The raw data obtained from the various front end channels is taken by the HWA subsystem for processing.
Processing during the chirps consists of:
- 1D (range) FFT processing performed by the HWA that takes input from multiple receive antenna from the ADC buffer for every chirp (corresponding to the chirping pattern on the transmit antennae)
- Transferring transposed output into the L3 RAM by enhanced direct memory access (eDMA)
Processing during the idle or cool down period of the RF circuitry following the chirps until the next chirping period. This processing consists of:
- 2D (velocity) FFT processing performed by the HWA that takes input from 1D output in L3 RAM and performs FFT to give a (range, velocity) matrix in the L3 RAM.
- The processing also includes the CFAR detection in Doppler direction performed by the DSP, CFAR detection in range direction performed by the DSP, and uses the mmWave library.
- Peak grouping (for both Doppler and range) for the MRR subframe and Doppler for the USRR subframe
- Direction of arrival (azimuth and elevation) estimation to map the X-Y-Z location of object
- Additional pruning based on the SNR and the 2D FFT magnitude of the object to avoid ground clutter
Clustering
Clustering is performed using the dBscan algorithm, applied on the detected objects of both the MRR and the USRR subframes. The output of the clustering algorithm is the mean location of a cluster and its dimensions (assuming the cluster is a rectangle).
For the USRR subframe, the clustering output is sent as is to the graphical user interface (GUI).
USRR clusters allow the grouping of dense point clouds to rectangles. In cross-traffic scenarios, these clusters can be used to identify vehicles crossing the field of vision (FoV) of the radar.
Tracking
Clustering output forms the input for the tracking algorithm. The strongest object in the cluster is provided as a representative object for the tracking algorithm.
The tracker is a fairly standard Extended Kalman Filter (EKF with four states [x, y, vx, vv] and three inputs [r, v, sin(θ)] or range, relative velocity, and sine of the azimuth).
Signal to noise ratio is taken as input and associated variance is computed using the Cramer-Rao Lower Bound formula for frequency variance.
Output Data Format
Data Packet Format: A TLV (type-length-value) encoding scheme is used with little endian byte order. For every frame, a packet is sent consisting of a fixed sized Frame Header and then a variable number of TLVs.
Below are the possible TLVs:
| TLV Name | Type |
|---|---|
| Detected Points | 1 |
| Clusters | 2 |
| Tracked Objects | 3 |
Detected Object List
| Parameter | Size |
|---|---|
| Doppler Index | short(uint16) |
| Peak Value | short(uint16) |
| X-coordinate in meters | short(uint16) |
| Y-coordinate in meters | short(uint16) |
| Z-coordinate | short(uint16) |
Cluster Output Format
| Parameter | Size |
|---|---|
| Clustering center on X-direction | short(uint16) |
| Clustering center on Y-direction | short(uint16) |
| Clustering size on X-direction | short(uint16) |
| Clustering size on Y-direction | short(uint16) |
Tracking Output Format
| Parameter | Size |
|---|---|
| Tracking X-coordinate | short(uint16) |
| Tracking Y-coordinate | short(uint16) |
| Velocity in X-direction | short(uint16) |
| Velocity in Y-direction | short(uint16) |
| Cluster Size (X-direction) | short(uint16) |
| Cluster Size (Y-direction) | short(uint16) |
Demo Configuration
Operation Modes
The demo supports 3 modes of operation:
- MRR only
- USRR only
- MRR/USRR
- In this mode alternative MRR and USRR sub-frames are being generated
The mode of operation is hard coded in the implementation.
- See
\mrr_beamsteering\src\common\mrr_config_consts.h - In order to change the mode the demo must be re-build
CLI Configuration
Most of the mmWave demos provided by our team on TI Resource Explorer support a CLI configuration from the PC host:
- The RF and demo configuration parameters are usually provided in a file called
profile.cfg - The content of this file is sent to the mmWave sensor target through the UART.
- The application running on the target uses this information to configure the RF front end and the demo.
The MRR demo also supports a CLI, however the main difference with the other demos is that the RF configuration is not sent through the UART but hard coded in the application that runs on the target.
The MRR demo supports only two commands which are sent by the Matlab GUI through UART to start the demo.
Please see in following file <RADAR_TOOLBOX_INSTALL_DIR>\tools\visualizers\MRR_BeamSteering_GUI\load_config.m
The MRR demo can be started using these commands using Tera Term for example.
RF Configuration
The RF configuration (profile, chirp, frame…) is performed using Advanced Frame Configuration. For more information about Advanced Frame Configuration please see following appnote: “Section 6 Advanced Chirp Configurations” in Programming Chirp Parameters in TI Radar Devices.
As mentioned in previous section, the RF configuration is not sent through UART as in other demos.
The RF configuration is hard coded in the code in the following file:
\mrr_beamsteering\src\common\cfg.cCfg_AdvFrameCfgInitParams()
In order to modify the RF configuration, one would need to re-build the demo.
Beam Steering
This demo configures the beam steering on a per frame basis. This means that the beam steering angle is the same for all the chirps included in one frame. The beams steering configuration is hard coded.
In the prebuild binaries, the beam steering is configured as follows:
- Max Angle = 60 deg
- Min Angle = -60 deg
- Angle Step Size = 20 deg
The beams are alternating as follows:
- -60deg; -40deg; -20deg; 0deg; 20deg; 40deg; 60deg; -60deg; -40deg….
In the prebuild binaries, the frame duration is 60ms, so the beam steering cycling time is 7 x 60ms
Steps to change the Beam Steering Configuration:
- In the file
\mrr_beamsteering\src\mss\mss_mrr_cli.c, the initial value of the steering angle is defined as:
* The value “-60” must be replaced with the new desired initial steering angle.
- In the file
\mrr_beamsteering\src\mss\mss_main.cin the functionMRR_MSS_chirpIntCallback(), the value “20” is the step size and the values “60” and “-60” are the maximum and minimum steering angles.- These values must be updated with the new desired values.
Building from Source Code and Running
1. Pre-requisites
Please read in the Lab Release Notes for the version of the SDK required by this Lab.
It is assumed that you have the TI mmWave SDK and all the related tools installed as mentioned in the mmWave SDK release notes.
- The mmWave SDK release notes include the links for downloading the required versions of the above tools.
If you have already installed the mmWave SDK and all the required tools, you can move on to the next step i.e. downloading the lab on to your machine.
- Refer to the mmWave SDK for the dependent tools.
2. Import Lab Project
The Medium Range Radar Lab consists of two CCS projects, one for the R4F core and one for the C674x DSP core.
The CCS projects are included in the Radar Toolbox zip file installed as described in the Getting Started Guide.
- Open CCS. Select the “CCS Edit” perspective.
- Select Project ► Import CCS Projects. Browse to select the lab folder.
- The labs projects should be discovered by CCS. Select All and Finish
- This copies the projects in the user’s workspace and imports it into the CCS project explorer.
- It is important to note that the copy created in the workspace is the one that gets imported in CCS. The original project downloaded in mmwave Radar toolbox is not touched.
- The projects should be visible in CCS Project Explorer as shown here:
We are ready to move on to the next step i.e. Building the project.
3. Build Lab Project
At this point we assume the two projects have been imported in CCS. If they have not please go to Step 2.
- With the dss project selected in Project Explorer, right click on the project and select Rebuild Project.
- Selecting Rebuild instead of Build ensures that the project is always re-compiled. This is especially important in case the previous build failed with errors.
- Selecting Rebuild instead of Build ensures that the project is always re-compiled. This is especially important in case the previous build failed with errors.
- On successful completion of the build, you should see the output in CCS console as shown here and the following two files should be produced in the project debug directory:
mrr_18xx_dss.xe674mrr_18xx_dss.bin
- If the build fails with errors, please ensure that all the pre-requisites are installed as mentioned in the mmWave SDK release notes.
- The dss project must be built BEFORE the mss project.
- With the mss project selected in Project Explorer, right click on the project and select Rebuild Project
- On successful completion of the build, you should see the output in CCS console as shown here and the following three files should be produced in the project debug directory:
xwr18xx_mrr_demo.binmrr_18xx_mss.binmrr_18xx_mss.xer4f
If the build fails with errors, please ensure that all the pre-requisites are installed as mentioned in the mmWave SDK release notes.
4. Preparing the EVM
There are two ways to execute the compiled code on the EVM:
- Deployment mode : Flashing the binary (.bin image) on to the EVM serial flash
- In this mode, the EVM boots autonomously from flash and starts running the bin image.
- Debug mode: Downloading and running the executable (.xer4f image) from CCS.
- You will need to flash a small CCS debug firmware on the EVM (one time) to allow connecting with CCS. This debug firmware image is provided with the mmWave SDK.
- The Getting Started Guide has demonstrated the deployment mode
- The following section explains the second method i.e. Debug mode (CCS).
- To prepare the EVM for debug mode, we start with flashing the CCS debug firmware image.
- Please use the flashing process described in the Getting Started Guide to flash the following binary to the EVM:
C:\ti\mmwave_sdk_xx_xx_xx_xx\packages\ti\utils\ccsdebug\xwr18xx_ccsdebug.bin
5. Running the Lab
Connecting EVM to CCS
It is assumed that you were able to download and build the Lab in CCS (completed steps 1, 2 and 3).
To connect the Radar EVM to CCS, we need to create a target configuration:
- Go to File ► New ► New Target Configuration File
- Name the target configuration accordingly and check the “Use shared location” checkbox. Press Finish
- In the configuration editor window:
- Select “Texas Instruments XDS110 USB Debug Probe” for Connection
- Select AWR1843 device in the Board or Device text box.
- Press the Save button to save the target configuration.
- You can press the Test Connection button to check the connection with the board.
- Go to View ► Target Configurations to open the target configuration window.
- You should see your target configuration under User Defined configurations.
- Right click on the target configuration and select Launch Select Configuration.
- This will launch the target configuration in the debug window.
- Select the Texas Instruments XDS110 USB Debug probe/C674X_0 and press the Connect Target button.
- Select the Texas Instruments XDS110 USB Debug probe/Cortex_R4_0and press the Connect Target button.
Loading the Binary
- Once both targets are connected, select the C674X_0 target, and click on the Load button in the toolbar.
- In the Load Program dialog, press the Browse Project button.
- Select the lab executable (.xe674) found in the project as shown, and press OK.
- Press OK again in the Load Program dialog.
- Now select the Cortex_R4_0 target, and click on the Load button in the toolbar.
- In the Load Program dialog, press the Browse Project button.
- Select the lab executable (.xer4f) found in the project and press OK.
- Press OK again in the Load Program dialog.
Running the Binary
- With both executables loaded, group in CCS the two cores, ARM and DSP.
- Select the group and press the Run/Resume button.
- The program should start executing and generate console output.
If everything goes fine, you should see:
- “Debug: MMWave has been configured for MRR.”
- “Debug: Sensor will start momentarily.”
Start the GUI as described in the next section.
Running the Lab PC-GUI
- Navigate to the folder gui ► MRRvisualization and click on MRRVISUALIZER.exe
- Windows should open. (i.e. a Display prompt window and a GUI window)
- If the EVM is connected to the PC, then the display prompt window should successfully open the COM ports (to double check, make sure they match with the port numbers on the Device Manager).
- In the GUI window, fill in the Data COM Port field. (Make sure that no other EVM is connected to the USB ports of the PC)
- After filling all the options. Click “Ok”
The Matlab GUI consists of 5 components:
- X-Y scatter plot: Displays the positions of the point clouds, the tracks, and the cluster.
- Y-Z scatter plot: Displays the positions of the point clouds in elevation.
- Doppler range plot: Displays the Doppler-range coordinates of the point cloud and the clusters.
- Legend: Description of the different kinds of points being displayed on the screen.
- Display options: Displays the different types of the point cloud can be enabled and disabled at the user’s discretion during demonstration.
Learn more about TI mmWave Sensors
Learn more about xWR1x devices, please visit the product pages:
Get started evaluating the platform with xWR1x EVMs, purchase EVM at:
Download mmWave SDK
Ask question on TI’s E2E forum