RadarDoAProcessing#

Functions#

NVCVStatus pvaDOACreate(NVCVOperatorHandle *handle, const NVCVTensorRequirements **inTensorRequirements, const NVCVTensorRequirements *outTensorRequirements, int inTensorCount, const PVARadarGP *GP)

Constructs and an instance of the DOA target processing operator.

NVCVStatus pvaDOASubmit(NVCVOperatorHandle handle, cupvaStream_t stream, NVCVTensorHandle *inHandles, NVCVTensorHandle outHandle, int inTensorCount)

Submits the DOA operator to a cuPVA stream.

NVCVStatus pvaDOASubmit(NVCVOperatorHandle handle, cudaStream_t stream, NVCVTensorHandle *inHandles, NVCVTensorHandle outHandle, int inTensorCount)

Submits the DOA operator to a CUDA stream.

Functions#

NVCVStatus pvaDOACreate(
NVCVOperatorHandle *handle,
const NVCVTensorRequirements **inTensorRequirements,
const NVCVTensorRequirements *outTensorRequirements,
int inTensorCount,
const PVARadarGP *GP,
)#

Constructs and an instance of the DOA target processing operator.

Limitations:

  • The FFT size for DOA processing is fixed to 256.

  • The calibration vector is fixed to 16 complex elements.

NVCVTensorRequirement

dtype

rank

layout

shape

0

NVCV_DATA_TYPE_U32

2

W

[1]

1

NVCV_DATA_TYPE_2S32

2

HW

[1, PVA_RADAR_NUM_TOTAL_ANTENNA_ELEMENTS]

2

NVCV_DATA_TYPE_U32

2

HW

[PVA_RADAR_PEAKDET_NUM_PEAK_INDICES, PVA_RADAR_MAX_TARGET_COUNT]

3

NVCV_DATA_TYPE_2S32

2

HW

[PVA_RADAR_MAX_TARGET_COUNT, PVA_RADAR_NUM_TOTAL_ANTENNA_ELEMENTS]

4

NVCV_DATA_TYPE_U32

2

HW

[Nb, Nr/PVA_RADAR_DOPPLER_FOLD_COUNT]

PVA_RADAR_NUM_TOTAL_ANTENNA_ELEMENTS: Number of total antenna elements. PVA_RADAR_PEAKDET_NUM_PEAK_INDICES: Number of peak indices (3 values: range bin index, folded doppler bin index, and unfolded doppler bin index). PVA_RADAR_MAX_TARGET_COUNT: Maximum possible number of input peaks. Should be less than or equal to DOA_MAX_TARGET_COUNT. Nb: Number of range bins. Nr: Number of ramps or chirps. PVA_RADAR_DOPPLER_FOLD_COUNT: Number of doppler folds.

Tensor 0: Number of detected peaks. Tensor 1: calibration vector. Tensor 2: peak indices. Tensor 3: peak snap data. Tensor 4: final NCI data.

Output: Data Layout: [HW] W: Maximum possible number of peaks to be detected. H: Number of target detection properties. Currently DOA supports 7 target detection properties.

 Batches:        [1]
 Rank:           2 for [HW].
Tensor 0: DOA output.

Data Type

Allowed

8bit Unsigned

No

8bit Signed

No

16bit Unsigned

No

16bit Signed

No

32bit Unsigned

No

32bit Signed

No

32bit Float

Yes

64bit Float

No

2x32bit Unsigned

No

2x32bit Signed

No

Output Tensor Layout:

The output tensor contains 7 rows of target detection properties, with each row containing up to W (maximum number of peaks) target values:

Row Index

Property

Unit

Description

0

Velocity

km/h

Target radial velocity (positive: moving away, negative: approaching)

1

Range

m

Target distance from radar

2

Azimuth Angle

deg

Horizontal angle (-90° to +90°, 0° is boresight)

3

Elevation Angle

deg

Vertical angle relative to horizontal plane

4

X Coordinate

m

Lateral position (X = Range × sin(Azimuth))

5

Y Coordinate

m

Longitudinal position (Y = Range × cos(Azimuth))

6

Z Coordinate

m

Vertical position (Z = Range × sin(Elevation))

Example: For a tensor with shape [7, 128], the first 128 float values are velocities for up to 128 targets, the next 128 values are ranges, and so on.

Parameters:
  • handle[out] Where the operator instance handle will be written to. Must not be NULL.

  • inTensorRequirements[in] Pointer to the NVCVTensorRequirements structure array which contains input Tensor layout rank, shape and data type information.

  • outTensorRequirements[in] Pointer to the NVCVTensorRequirements structure which contains output Tensor layout rank, shape and data type information.

  • inTensorCount[in] Number of input tensors.

  • GP[in] Pointer to global radar parameter structure.

Return values:
  • NVCV_ERROR_INVALID_ARGUMENT – Handle is null or some parameter is outside valid range.

  • NVCV_ERROR_OUT_OF_MEMORY – Not enough memory to create the operator.

  • NVCV_ERROR_INVALID_IMAGE_FORMAT – Image format is invalid.

  • NVCV_SUCCESS – Operation executed successfully.

NVCVStatus pvaDOASubmit(
NVCVOperatorHandle handle,
cupvaStream_t stream,
NVCVTensorHandle *inHandles,
NVCVTensorHandle outHandle,
int inTensorCount,
)#

Submits the DOA operator to a cuPVA stream.

Parameters:
  • handle[in] Handle to the operator.

    • Must not be NULL.

  • stream[in] Handle to a valid cuPVA stream.

  • inHandles[in] Pointer to array of input NVCVTensorHandle.

  • outHandle[out] Output tensor handle.

  • inTensorCount[in] Number of input tensors.

Return values:
  • NVCV_ERROR_INVALID_ARGUMENT – Handle is null.

  • NVCV_ERROR_INTERNAL – Internal error in the operator, invalid types passed in.

  • NVCV_SUCCESS – Operation executed successfully.

NVCVStatus pvaDOASubmit(
NVCVOperatorHandle handle,
cudaStream_t stream,
NVCVTensorHandle *inHandles,
NVCVTensorHandle outHandle,
int inTensorCount,
)#

Submits the DOA operator to a CUDA stream.

Note

CUDA stream support requirements:

  • PVA SDK 2.7.0 or later

  • Jetpack 7 or later

  • DriveOS 7 or later

  • x86 Emulator is not supported

Parameters:
  • handle[in] Handle to the operator.

    • Must not be NULL.

  • stream[in] Handle to a valid CUDA stream.

  • inHandles[in] Pointer to array of input NVCVTensorHandle.

  • outHandle[out] Output tensor handle.

  • inTensorCount[in] Number of input tensors.

Return values:
  • NVCV_ERROR_INVALID_ARGUMENT – Handle is null.

  • NVCV_ERROR_INTERNAL – Internal error in the operator, invalid types passed in.

  • NVCV_SUCCESS – Operation executed successfully.