xWRL6432 MMWAVE-L-SDK  05.04.00.01
2D Capon Beamforming

About Capon Beamforming

In FMCW radar signal processing a sequence of chirps, uniformly spaced in time, are transmitted. The reflected signal may be received across multiple RX antennas (say N). In many applications, it is desirable to know the Angle of Arrival (AoA) of the reflected signals, to know the angle at which an object is. Traditionally, this is calculated using a Fourier Transform (FFT) based technique for the signals received at the RX antennas. This technique utilises the relative phase differences across the RX antennas to estimate the AoA of the signal. The major issue with this FFT-based technique is that it has a poor angular resolution (theta_res = 2/N).

Capon Beamforming is an algorithm which helps improve the angular resolution of a sensor. Beamforming is the process of focussing a receiving device in a particular direction to "listen" to signals from that direction. This "listening" is done through a steering vector, which enables us to focus the receiver in a desired direction. A simple beamformer applies a time delay (Delta) and an amplitude weight (w) to the received signal at each antenna to form the steering vector. These weights have to be tuned to "listen" properly to a particular direction. Capon Beamforming uses optimization techniques to find the most optimal weights for a beamformer, hence giving us a good angular resolution.

In many cases, we also need to know the AoA of the signals in the azimuth and elevation direction. Here, we firstly need a 2-dimentional antenna (or virtual antenna) array. In the traditional FFT case, we perform two FFTs to get the azimuth and elevation of the direction of arrival of the signal. It suffers from the same problem as that of 1D FFT case, where we get a poor angular resolution. Here, we use 2D Capon Beamforming to get a better estimate of the AoA of the signal in both azimuth and elevation angles.


2D Capon Beamforming v/s 2D FFT Beamformer

We see in the above comparision that 2D Capon Beamforming gives a better angular resolution than 2D FFT-based AoA estimation.

Structures and API Documentation

Structures

The structures to be used by the user are well-commented in the caponBeamforming2D.h file.

APIs

CaponBeamforming2DHWA_Handle CaponBeamforming2DHWA_init
(
CaponBeamforming2DHWA_InitParams *initCfg,
int32_t *errCode
)

Description: Capon Beamforming 2D init function. It allocates memory to store its internal data object and returns a handle if it executes successfully.
Parameters:
initCfg – initCfg Pointer to initial configuration parameter.
errCode – errCode Pointer to errCode generates by the API.


Return values:
Success = valid handle
Error != 0: NULL


int32_t CaponBeamforming2DHWA_config
(
CaponBeamforming2DHWA_Handle handle,
CaponBeamforming2DHWA_Config *cfg
)

Description: Capon Beamforming 2D configuration. Configures the Capon Beamforming 2D DPU
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING2D_ERROR_CODE


int32_t CaponBeamforming2DHWA_process
(
CaponBeamforming2DHWA_Handle handle,
CaponBeamforming2DHWA_Config *cfg,
float *caponSpectrum
)

Description: Capon Beamforming 2D process function. Performs the 2D Capon Beamforming algorithm
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.
caponSpectrum – Pointer to the memory where the Capon Spectrum is to be stored.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING2D_ERROR_CODE


int32_t CaponBeamformingHWA_deinit
(
CaponBeamforming2DHWA_Handle handle,
CaponBeamforming2DHWA_Config *cfg
)

Description: Capon Beamforming 2D DPU deinit
Parameters:
handle – DPU handle.
cfg – Pointer to configuration parameters.


Return values:
Success = 0
Error != 0: DPU_CAPONBEAMFORMING2D_ERROR_CODE


Benchmarks

N_ant N_snaps Angles Sampled Azimuth Angles Sampled Elevation Time (us)
6 36 32 16 842