- Welcome
- Getting Started With the NVIDIA DriveWorks SDK
- Modules
- Samples
- Tools
- Tutorials
- SDK Porting Guide
- DriveWorks API
- More
This document will help you port your applications from DriveWorks SDK 1.5 to DriveWorks SDK 2.0.
The module dwCalibratedCamera
has been separated from dwRig
renamed to dwCameraModel
. It resides in the folder dw/calibration/cameramodel
. It provides functions to handle calibrated intrinsic camera models.
Camera.h
to CameraModel.h
.dwCameraModelHandle_t
and dwConstCameraModelHandle_t
, respectively.CameraModel.h
have been updated from dwCalibratedCamera
to dwCameraModel
.dwCameraModel_applyImageTransform()
has been updated and now it takes the additional parameter bool updateMasks
.dwCameraModel_initialize
has been moved here from dwRig
.For more information see Rig Configuration.
This release adds support for generating and using DLA (Deep-Learning-Accelerator) models. This change requires selection of the processor type at the time of initialization; therefore, the following functions' signatures have been updated accordingly:
dwDNN_initializeTensorRTFromFile()
has been renamed to dwDNN_initializeTensorRTFromFileNew()
and requires an additional argument of type dwProcessorType
indicating on which processor the model shall run on. Note that the model must be generated on the corresponding processor.dwDNN_initializeTensorRTFromMemory()
has been renamed to dwDNN_initializeTensorRTFromMemoryNew()
and requires an additional argument of type dwProcessorType
indicating on which processor the model shall run on. Note that the model must be generated on the corresponding processor.New
suffix for the new APIs will be removed in the next major release.For more information see DNN.
dwEgoMotionParameters
has been renamed to dwEgomotionParameters
.dwEgoMotionSensorCharacteristics
has been renamed to dwEgomotionSensorCharacteristics
.dwEgomotionParameters.enableLocationFilter
has been renamed to dwEgomotionParameters.disableLocationFilter
.dw/radarmotion
has been moved to dw/egomotion/radar
.For more information see Egomotion.
ICP has been completelly moved to point cloud processing module.
For more information see Point Cloud ICP.
dwPyramidHandle_t
to dwPyramidImage
Old name | New name |
---|---|
dwPyramid_initialize() | dwPyramid_create() |
dwPyramid_release() | dwPyramid_destroy() |
dwPyramid_build() | dwImageFilter_computePyramid() |
dwPyramid_getLevelCount() | dwPyramidImage::levelCount |
dwPyramidImage::levelImages[level]
provides an dwImageHandle_t
for the (level)-th image, dwImage_getProperties()
acquires the image size, and dwImage_getCUDA()
acquires dwImageCUDA
data.
Example: Old code for creating, building and destroying a pyramid:
New code for creating, building and destroying a pyramid:
dwFeatureListHandle_t
and dwFeatureListPointers
to dwFeatureHistoryArray
.dwFeatureStatus
has been renamed to dwFeature2DStatus
.DW_FEATURE_STATUS_XXX
has been renamed to DW_FEATURE2D_STATUS_XXX
.The new dwFeatureHistoryArray
struct provides pointers such as: *statuses
, *ages
, *ids
, *locationHistory
and *featureCount
like the old dwFeatureListPointers
struct did. It is also created and destroyed like the old handle dwFeatureListHandle_t
. dwFeatureHistoryArray
can be created on page-able/pinned CPU or CUDA memory.
Old name | New name |
---|---|
dwFeatureListPointers::statuses | dwFeatureHistoryArray::statuses |
dwFeatureListPointers::ages | dwFeatureHistoryArray::ages |
— | dwFeatureHistoryArray::ids |
dwFeatureListPointers::locationHistory | dwFeatureHistoryArray::locationHistory |
dwFeatureListPointers::featureCount | dwFeatureHistoryArray::featureCount |
dwFeatureList_initialize() | dwFeatureHistoryArray_create() |
dwFeatureList_release() | dwFeatureHistoryArray_destroy() |
dwFeatureList_reset() | dwFeatureHistoryArray_reset() |
dwFeatureList_getDataBasePointer() | dwFeatureHistoryArray::data, dwFeatureHistoryArray::bytes |
dwFeatureList_getCurrentTimeIdx() | dwFeatureHistoryArray::currentTimeIdx |
dwFeatureList_setCurrentTimeIdx() | dwFeatureHistoryArray::currentTimeIdx |
dwFeatureList_getFeatureListSize() | dwFeatureHistoryArray::maxFeatures, dwFeatureHistoryArray::maxHistory |
For new dw_imageprocessing
APIs, there's no need to call selectValid()
, compact()
and proximityFilter()
explicitly. They are automatically called within the DriveWorks module.
Example: In the old dw_feature
APIs, the application needed to create a dwFeatureListHandle_t
object and call dwFeatureList_getDataPointers()
to get the interpretable dwFeatureListPointers
.
If the application needed a CPU copy of the featureList
handle, it first had to allocate CPU memory and call dwFeatureList_getDataPointers()
to interpret it into dwFeatureListPointers
.
It also needed the raw data pointer to copy data between the CPU and GPU.
In the new dw_imageprocessing
APIs, the application only needs to create the dwFeatureHistoryArray
object on the CPU and GPU. It provides both raw pointers and interpretable pointers. It also provides the dwFeatureHistoryArray_copyAsync()
API to easily copy data between two feature history arrays.
The application can also create dwFeatureHistoryArray
on pinned memory, it only needs to change DW_MEMORY_TYPE_CPU
to DW_MEMORY_TYPE_PINNED
during creation.
Like dwFeatureListHandle_t
, there are also reset()
and destroy()
APIs. dwFeatureHistoryArray
must be destroyed before the application exits.
timeIdx
slice from dwFeatureHistoryArray
Similar to dwFeatureListPointers::locationHistory
, dwFeatureHistoryArray::locationHistory
stores historyCapacity
time period of maxFeatureCount
features. To get a particular feature[i]
for timeIdx
, it used to be:
The new dw_imageprocessing
modules provides a dwFeatureArray
struct that contains features for a single time slice, so there's no need to compute histIdx
any more.
It can also get the most recent (top-most) time slice, or the slice that is 1 frame earlier than the top-most.
dwFeatureArray
acquired by dwFeatureHistoryArray_getXXX
APIs don't need to be destroyed as they are only shallow copies. Resources are automatically freed when the corresponding dwFeatureHistoryArray
is destroyed. However, dwFeatureArray
also provides creation APIs, where the usage is very similar to dwFeatureHistoryArray
:
dwFeatureArray
created by dwFeatureArray_create()
APIs must be destroyed by dwFeatureArray_destroy()
before the application exits. Similarly, there is the dwFeatureArray_copyAsync()
API to copy data between two feature array objects.
dwFeatureTrackerHandle_t
to dwFeature2DDetectorHandle_t
and dwFeature2DTrackerHandle_t
dwFeature2DDetectorHandle_t
New imageprocessing module splits the Harris corner detector from dwFeatureTrackerHandle_t
. The new Harris detector handle is dwFeature2DDetectorHandle_t
.
Old name | New name |
---|---|
dwFeatureTracker_initialize() | dwFeature2DDetector_initialize() |
dwFeatureTracker_initDefaultParams() | dwFeature2DDetector_initDefaultParams() |
dwFeatureTracker_reset() | dwFeature2DDetector_reset() |
dwFeatureTracker_release() | dwFeature2DDetector_release() |
dwFeatureTracker_setMask() | dwFeature2DDetector_setMask() |
dwFeatureTracker_detectNewFeatures() | dwFeature2DDetector_detectFromPyramid() |
— | dwFeature2DDetector_detectFromImage() |
The new dwFeature2DDetectorConfig
parameter not only covers all settings from the old dwFeatureTrackerConfig
parameter, it also provides more flexible settings.
Old dwFeatureTrackerConfig | New dwFeature2DDetectorConfig |
---|---|
— | type |
dwFeatureTrackerConfig::imageWidth | dwFeature2DDetectorConfig::imageWidth |
dwFeatureTrackerConfig::imageHeight | dwFeature2DDetectorConfig::imageHeight |
dwFeatureTrackerConfig::maxFeatureCount | dwFeature2DDetectorConfig::maxFeatureCount |
— | dwFeature2DDetectorConfig::harrisK |
dwFeatureTrackerConfig::cellSize | dwFeature2DDetectorConfig::cellSize |
dwFeatureTrackerConfig::detectorScoreThreshold | dwFeature2DDetectorConfig::scoreThreshold |
dwFeatureTrackerConfig::detectorDetailThreshold | dwFeature2DDetectorConfig::detailThreshold |
dwFeatureTrackerConfig::numEvenDistributionPerCell | dwFeature2DDetectorConfig::numEvenDistributionPerCell |
— | dwFeature2DDetectorConfig::detectionLevel |
— | dwFeature2DDetectorConfig::harrisRadius |
— | dwFeature2DDetectorConfig::NMSRadius |
— | dwFeature2DDetectorConfig::maskType |
— | dwFeature2DDetectorConfig::isMaskAdjustmentEnabled |
Example of initializing a detector with the old code:
Example of initializing a detector with the new code:
dwFeature2DTrackerHandle_t
The new imageprocessing module splits LK tracker from dwFeatureTrackerHandle_t
. The new LK tracker handle is dwFeature2DTrackerHandle_t
.
Old name | New name |
---|---|
dwFeatureTracker_initialize() | dwFeature2DTracker_initialize() |
dwFeatureTracker_initDefaultParams() | dwFeature2DTracker_initDefaultParams() |
dwFeatureTracker_reset() | dwFeature2DTracker_reset() |
dwFeatureTracker_release() | dwFeature2DTracker_release() |
dwFeatureTracker_trackFeatures() | dwFeature2DTracker_trackFeatures() |
— | dwFeature2DTracker_getNewToOldMap() |
The new dwFeature2DTrackerConfig
parameter not only covers all settings from the the old dwFeatureTrackerConfig
parameter, it also provides more flexible settings.
Old dwFeatureTrackerConfig | New dwFeature2DTrackerConfig |
---|---|
— | dwFeature2DTrackerConfig::algorithm |
— | dwFeature2DTrackerConfig::detectorType |
— | dwFeature2DTrackerConfig::isOutputCompact |
dwFeatureTrackerConfig::imageWidth | dwFeature2DTrackerConfig::imageWidth |
dwFeatureTrackerConfig::imageHeight | dwFeature2DTrackerConfig::imageHeight |
dwFeatureTrackerConfig::maxFeatureCount | dwFeature2DTrackerConfig::maxFeatureCount |
— | dwFeature2DTrackerConfig::historyCapacity |
dwFeatureTrackerConfig::windowSizeLK | dwFeature2DTrackerConfig::windowSizeLK |
dwFeatureTrackerConfig::iterationsLK | dwFeature2DTrackerConfig::numIterTranslationOnly |
— | dwFeature2DTrackerConfig::numIterScaling |
— | dwFeature2DTrackerConfig::numLevelTranslationOnly |
— | dwFeature2DTrackerConfig::maxScaleChange |
— | dwFeature2DTrackerConfig::nccKillThreshold |
— | dwFeature2DTrackerConfig::nccUpdateThreshold |
Example of initializing a tracker with the old code:
Example of initializing a tracker with the new code:
imageprocessing
module to detect and track Harris cornersHere's a complete example showing the pipeline with the old dw_feature
APIs and new dw_imageprocessing
APIs.
The new dwFeature2DDetectorHandle_t
and dwFeature2DTrackerHandle_t
provides advanced detecting/tracking options. To enable advanced mode, the application needs to set the detector type as DW_FEATURE2D_DETECTOR_TYPE_EX
and the tracker algorithm as DW_FEATURE2D_TRACKER_ALGORITHM_EX
:
Please refer to documentation for more details regarding available configuration.
Advanced mode also requires an additional device buffer nccScore
. It can be left as nullptr
, but a valid nccScore
buffer is recommended for better tracking/detecting quality.
The nccScore
buffer is recommended only when both the detector and tracker are in advanced mode. It's valid to connect the DW_FEATURE2D_DETECTOR_TYPE_STD
normal detector with the DW_FEATURE2D_TRACKER_ALGORITHM_EX
advanced tracker, or to connect the DW_FEATURE2D_DETECTOR_TYPE_EX
advanced detector with the DW_FEATURE2D_TRACKER_ALGORITHM_STD
advanced tracker. The application only needs to set dwFeature2DTrackerConfig::detectorType
with the correct value of its corresponding detector.
Below are the recommended steps for using imageprocessing
APIs in SFM:
dwFeature2DTrackerConfig:.algorithm = DW_FEATURE2D_TRACKER_ALGORITHM_SFM
to allow sparse tracking results output.dwFeature2DTracker_compact()
explicitly after SFM reconstruction is done. Fill the d_newToOldMap
device array by dwFeature2DTracker_getNewToOldMap()
.dwReconstructor_compact*
by d_newToOldMap
received in step 3.compact
is done.Pseudo code for a typical workflow:
For the full implementation refer to Structure from Motion (SFM) Sample.
dwScalingFeatureListHandle_t
and dwScalingFeatureListPointers
to dwTemplateArray
Similar to dwFeatureHistoryArray
, template tracker provides a dwTemplateArray
to replace the old dwScalingFeatureListHandle_t
and dwScalingFeatureListPointers
.
The new dwTemplateArray
struct provides pointers such as: *bboxes
, *statuses
, *ids
, *ages
, *scaleFactors
and *templateCount
like the old dwScalingFeatureListPointers
did. It is also created and destroyed like old handle dwScalingFeatureListHandle_t
. dwTemplateArray
can be created on page-able/pinned CPU or CUDA memory.
Old name | New name |
---|---|
dwScalingFeatureListPointers::locations | dwTemplateArray::bboxes |
dwScalingFeatureListPointers::sizes | dwTemplateArray::bboxes |
dwScalingFeatureListPointers::statuses | dwTemplateArray::statuses |
dwScalingFeatureListPointers::ids | dwTemplateArray::ids |
dwScalingFeatureListPointers::ages | dwTemplateArray::ages |
dwScalingFeatureListPointers::scaleFactors | dwTemplateArray::scaleFactors |
dwScalingFeatureListPointers::bNewTemplate | — |
dwScalingFeatureListPointers::featureCount | dwTemplateArray::templateCount |
dwScalingFeatureList_initialize() | dwTemplateArray_create() |
dwScalingFeatureList_release() | dwTemplateArray_destroy() |
dwScalingFeatureList_reset() | dwTemplateArray_reset() |
dwScalingFeatureList_getDataBasePointer() | dwTemplateArray::data, dwTemplateArray::bytes |
For new dw_imageprocessing
APIs, there's no need to call addEmptyFeature
, selectValid()
, compact()
and applySizeFilter()
explicitly. They are automatically called within the DriveWorks module.
Example: In the old dw_feature
APIs, the application needed to create a dwScalingFeatureListHandle_t
object and call dwScalingFeatureList_getDataPointers()
to get the interpretable dwScalingFeatureListPointers
.
If the application needed a CPU copy of the templateList
handle, it first had to allocate CPU memory and call dwScalingFeatureList_getDataPointers()
to interpret it into dwScalingFeatureListPointers
.
It also needed the raw data pointer to copy data between the CPU and GPU.
In the new dw_imageprocessing
APIs, the application only needs to create the dwTemplateArray
object on the CPU and GPU. It provides both raw pointers and interpretable pointers. It also provides the dwTemplateArray_copyAsync()
API to easily copy data between two template arrays.
The application can also create dwTemplateArray
on pinned memory, it only needs to change DW_MEMORY_TYPE_CPU
to DW_MEMORY_TYPE_PINNED
during creation.
Like dwScalingFeatureListHandle_t
, there are also reset()
and destroy()
APIs. dwTemplateArray
must be destroyed before the application exits.
dwScalingFeatureTrackerHandle_t
to dwTemplateTrackerHandle_t
Old name | New name |
---|---|
dwScalingFeatureTracker_initialize() | dwTemplateTracker_initialize() |
dwScalingFeatureTracker_initDefaultParams() | dwTemplateTracker_initDefaultParams() |
dwScalingFeatureTracker_reset() | dwTemplateTracker_reset() |
dwScalingFeatureTracker_release() | dwTemplateTracker_release() |
dwScalingFeatureTracker_trackAsync() | dwTemplateTracker_trackImage() |
— | dwTemplateTracker_trackPyramid() |
— | dwFeature2DTracker_getNewToOldMap() |
For new dw_imageprocessing
APIs, there's no need to call dwScalingFeatureTracker_updateTemplateAsync()
explicitly. It is automatically called within the DriveWorks module.
The new dwTemplateTrackerParameters
parameter covers all settings from the old dwScalingFeatureTrackerConfig
and dwScalingFeatureListParameters
parameters.
Old dwScalingFeatureXXX settings | New dwTemplateTrackerParameters |
---|---|
— | dwTemplateTrackerParameters::type |
dwScalingFeatureListParameters::maxFeatureCount | dwTemplateTrackerParameters::maxTemplateCount |
dwScalingFeatureListParameters::imageWidth | dwTemplateTrackerParameters::imageWidth |
dwScalingFeatureListParameters::imageHeight | dwTemplateTrackerParameters::imageHeight |
dwScalingFeatureListParameters::pyramidLevelCount | dwTemplateTrackerParameters::maxPyramidLevel |
dwScalingFeatureTrackerConfig::numIterCoarse | dwTemplateTrackerParameters::numIterationsCoarse |
dwScalingFeatureTrackerConfig::numIterFine | dwTemplateTrackerParameters::numIterations |
dwScalingFeatureTrackerConfig::thresholdUpdate | dwTemplateTrackerParameters::thresholdUpdate |
dwScalingFeatureTrackerConfig::thresholdKill | dwTemplateTrackerParameters::thresholdKill |
dwScalingFeatureTrackerConfig::thresholdStop | dwTemplateTrackerParameters::thresholdStop |
dwScalingFeatureTrackerConfig::maxScaleChange | dwTemplateTrackerParameters::maxScaleChange |
— | dwTemplateTrackerParameters::validWidth |
— | dwTemplateTrackerParameters::validHeight |
Here's a complete example showing the template tracker pipeline with the old dw_feature
APIs and new dw_imageprocessing
APIs.
The APIs previously contained in dw/world/LaneGraphProducer.h
are no longer available, while the data structures are now part of LaneGraph.h
.
The following API has been removed:
dwLidarAccumulator_addPacket()
will return DW_SUCCESS
if the full sweep is ready.
For more information see Lidar Accumulator (replaced with dwPointCloudAccumulator
).
The following APIs have been renamed:
Old name | New name |
---|---|
dwMaps_transformLaneDividersToLocalLinesPerLocalLayout() | dwMaps_transformLaneDividersToLocalLines() |
dwMaps_transformRoadFeaturesToLocalLinesPerLocalLayout() | dwMaps_transformRoadFeaturesToLocalLines() |
dwMaps_computeBearing() | dwMaps_computeBearingFromGeoPoints() |
dwMaps_computeBearingFromRotMatrix() | dwMaps_computeBearingFromRotation() |
dwMaps_computeLocalToENUMatrix() | dwMaps_computeRotationFromBearing() |
dwMapTracker_updateCurrentPose() | dwMapTracker_updateWithGlobalPose() |
The following API has been removed:
dwMaps_transformLaneDividersToLocalLines() should be used instead.
The dwObjectDetector API has been simplified. The functions
dwObjectDetector_inferDeviceAsync()
dwObjectDetector_interpretHost()
dwObjectDetector_getClusteredObjects()
dwObjectDetector_getRawDetections()
dwObjectDetector_bindInput()
dwObjectDetector_bindOutput()
dwObjectDetector_processDeviceAsync()
dwObjectDetector_processHost()
have been removed in favor of dwObjectDetector_detectObjects()
.
The following data structures have been renamed:
Old name | New name |
---|---|
dwObjectData | dwObjectGeneric |
dwObjectDataCamera | dwObjectCamera |
dwObjectDataRadar | dwObjectRadar |
dwObjectDataLidar | dwObjectLidar |
dwObjectDataFused | dwObjectFused |
dwObjectHandle_t has been removed and replaced with plain structs. In place of dwObjectHandleList, use dwObjectArray. Becase object handles are no longer part of the code base, the following APIs have been removed:
Removed APIs |
---|
dwStatus dwObject_createCamera(dwObjectHandle_t* handle, const dwObjectData* data, const dwObjectDataCamera* otherData) |
dwStatus dwObject_createRadar(dwObjectHandle_t* handle, const dwObjectData* data, const dwObjectDataRadar* otherData) |
dwStatus dwObject_createLidar(dwObjectHandle_t* handle, const dwObjectData* data, const dwObjectDataLidar* otherData) |
dwStatus dwObject_createFused(dwObjectHandle_t* handle, const dwObjectData* data, const dwObjectDataFused* otherData) |
dwStatus dwObject_destroy(dwObjectHandle_t handle) |
dwStatus dwObject_reset(dwObjectHandle_t handle) |
dwStatus dwObject_getData(dwObjectData* info, uint32_t index, dwConstObjectHandle_t handle) |
dwStatus dwObject_getDataCamera(dwObjectDataCamera* info, uint32_t index, dwConstObjectHandle_t handle) |
dwStatus dwObject_getDataRadar(dwObjectDataRadar* info, uint32_t index, dwConstObjectHandle_t handle) |
dwStatus dwObject_getDataLidar(dwObjectDataLidar* info, uint32_t index, dwConstObjectHandle_t handle) |
dwStatus dwObject_getDataFused(dwObjectDataFused* info, uint32_t index, dwConstObjectHandle_t handle) |
dwStatus dwObject_setData(const dwObjectData* info, uint32_t index, dwObjectHandle_t handle) |
dwStatus dwObject_setDataCamera(const dwObjectDataCamera* info, uint32_t index, dwObjectHandle_t handle) |
dwStatus dwObject_setDataRadar(const dwObjectDataRadar* info, uint32_t index, dwObjectHandle_t handle) |
dwStatus dwObject_setDataLidar(const dwObjectDataLidar* info, uint32_t index, dwObjectHandle_t handle) |
dwStatus dwObject_setDataFused(const dwObjectDataFused* info, uint32_t index, dwObjectHandle_t handle) |
dwStatus dwObject_addDataCamera(const dwObjectData* info, const dwObjectDataCamera* otherInfo, dwObjectHandle_t handle) |
dwStatus dwObject_addDataRadar(const dwObjectData* info, const dwObjectDataRadar* otherInfo, dwObjectHandle_t handle) |
dwStatus dwObject_addDataLidar(const dwObjectData* info, const dwObjectDataLidar* otherInfo, dwObjectHandle_t handle) |
dwStatus dwObject_addDataFused(const dwObjectData* info, const dwObjectDataFused* otherInfo, dwObjectHandle_t handle) |
Because dwObjectHandle_t is no longer part of the code base, calling create to create an object is no longer necessary. For example, the old way of creating an object required calling:
The new way to do this is written as:
Object history is no longer stored as part of the object, but is now a separate history array: dwObjectHistoryArray
. The old way to get a historical object from an object handle was:
The new way to do this is written as:
In order to add data to the history, you no longer call an API but use the indices into the objects array to insert into the history table.
Object arrays have also been introduced as dwObjectArray
. These work very similarly to dwObjectHistoryArray
except that it is a 1D contiguous array of objects.
dwPointCloudMemoryType
has been replaced by the following data structure:
dwPointCloudRangeImage
structure has been removed. Range image creator now accepts dwImageHandle_t
instead.
For more information see Point Cloud Processing.
The module dwRigConfiguration
has been renamed dwRig
.
RigConfiguration.h
to Rig.h
.dwRigHandle_t
and dwConstRigHandle_t
, respectively.Rig.h
have been updated from dwRigConfiguration
to dwRig
.dwRig_initializeCalibratedCamera
is now dwCameraModel_initialize
in calibration/cameramodel/CameraModel.h
.dwFeatureStatus
to dwFeature2DStatus
.dwReconstructor_compactWorldPoints
and dwReconstructor_compactFeatureHistory
has changed. The input has changed from const uint32_t* d_validIndexCount, const uint32_t* d_validIndexes, const uint32_t* d_invalidIndexCount, const uint32_t* d_invalidIndexes
to const uint32_t* d_validIndexCount, const uint32_t* d_newToOldMap
, while d_newToOldMap
is obtained with dwFeature2DTracker_getNewToOldMap
.dw_imageprocessing
APIs.For more information see Structure from Motion (SFM) and Features.
This release adds support for multiple simultanous VehicleIO backends, and the following changes are required:
dwVehicleIO_addCANSensor()
has to be called before send/consume operations.dwVehicleIO_sendVehicleCommand()
can be just be replaced with dwVehicleIO_sendCommand()
.dwVehicleIO_consume()
needs be replaced with dwVehicleIO_consumeCANFrame()
with sensorId
equal to the sensor added with dwVehicleIO_addCANSensor()
.For more information see VehicleIO.
The previous API header file waitcondition/Classifier.h
has been split into waitcondition/camera/TrafficLightSignClassifier.h
and waitcondition/camera/TrafficLightSignClassifier_processPipeline.h
.
dwObjectClassifierHandle_t
has been renamed to dwTrafficLightSignClassifierHandle_t
.The following APIs have been renamed:
Old name | New name |
---|---|
dwObjectClassifier_initializeFromLightNet(dwObjectClassifierHandle_t* obj, dwLightNetHandle_t dnn, dwContextHandle_t ctx) | dwTrafficLightSignClassifier_initializeFromLightNet(dwTrafficLightSignClassifierHandle_t* obj, dwLightNetHandle_t dnn, dwContextHandle_t ctx) |
dwObjectClassifier_initializeFromSignNet(dwObjectClassifierHandle_t* obj, dwSignNetHandle_t dnn, dwContextHandle_t ctx) | dwTrafficLightSignClassifier_initializeFromSignNet(dwTrafficLightSignClassifierHandle_t* obj, dwSignNetHandle_t dnn, dwContextHandle_t ctx) |
dwObjectClassifier_reset(dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_reset(dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_release(dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_release(dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_setCUDAStream(cudaStream_t stream, dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_setCUDAStream(cudaStream_t stream, dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_getCUDAStream(cudaStream_t* stream, dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_getCUDAStream(cudaStream_t* stream, dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_interpretHost(uint32_t numObjects, dwObjectClass type, dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_interpretHost(uint32_t numObjects, dwObjectClass type, dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_inferDeviceAsync(const dwImageCUDA* const* imageArray, dwObject* objectList, uint32_t numObjects, dwObjectClass type, dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_inferDeviceAsync(const dwImageCUDA* const* imageArray, dwObjectCamera* objectList, uint32_t numObjects, dwObjectClass type, dwTrafficLightSignClassifierHandle_t obj) |
dwObjectClassifier_getClassifiedObjects(dwObject* objectList, uint32_t numObjects, dwObjectClassifierHandle_t obj) | dwTrafficLightSignClassifier_getClassifiedObjects(dwObjectCamera* objectList, uint32_t numObjects, dwTrafficLightSignClassifierHandle_t obj) |