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.
Tensor 0: DOA output.Batches: [1] Rank: 2 for [HW].
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.