DriveWorks SDK Reference
3.0.4260 Release
For Test and Development only

Object.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed
3 // under the Mutual Non-Disclosure Agreement.
4 //
5 // Notice
6 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
7 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
8 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
9 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
10 //
11 // NVIDIA Corporation assumes no responsibility for the consequences of use of such
12 // information or for any infringement of patents or other rights of third parties that may
13 // result from its use. No license is granted by implication or otherwise under any patent
14 // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
15 // expressly authorized by NVIDIA. Details are subject to change without notice.
16 // This code supersedes and replaces all information previously supplied.
17 // NVIDIA Corporation products are not authorized for use as critical
18 // components in life support devices or systems without express written approval of
19 // NVIDIA Corporation.
20 //
21 // Copyright (c) 2017-2020 NVIDIA Corporation. All rights reserved.
22 //
23 // NVIDIA Corporation and its licensors retain all intellectual property and proprietary
24 // rights in and to this software and related documentation and any modifications thereto.
25 // Any use, reproduction, disclosure or distribution of this software and related
26 // documentation without an express license agreement from NVIDIA Corporation is
27 // strictly prohibited.
28 //
30 #ifndef DW_WORLD_OBJECT_H_
31 #define DW_WORLD_OBJECT_H_
32 
33 #include <dw/core/Context.h>
34 #include <dw/sensors/Sensors.h>
36 #include <dw/world/TrafficSigns.h>
37 #include <dw/sensors/radar/Radar.h>
38 
39 #include <dw/worldmodel/Obstacle.h>
41 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
71 #define DW_OBJECT_MAX_FUSED_PARENT_OBJECT_COUNT 6
72 #define DW_OBJECT_MAX_BOUNDARY_POINT_COUNT 30
74 
78 typedef struct dwObjectLaneSpan
79 {
81  uint32_t globalLaneID;
93 
97 typedef struct dwObjectLaneAssignment
98 {
102  uint32_t laneId;
108 
110 #define DW_OBJECT_IN_PATH_ANALYZER_MAX_LANE_COUNT 32
111 
115 {
119  uint32_t count;
123 
127 typedef enum dwCoordSystem {
128  /*
129  * DW_COORD_SYSTEM_SENSOR
130  * This is the local coordinate system each sensor uses.
131  * The conventions used in the SDK vary from sensor to sensor.
132  */
134  /*
135  * DW_COORD_SYSTEM_RIG
136  * This coordinate system is well defined as having the origin as the projection
137  * of the center of the rear axle onto the nominal ground. X direction points to
138  * the motion direction of the vehicle, Y axis points to the left side of the
139  * vehicle and Z axis points up to the sky. Velocities and kinematics attribute
140  * of detected objects are relative to current ego speed.
141  */
143  /*
144  * DW_COORD_SYSTEM_LOCAL
145  * This coordinate system is well defined as having the origin as the projection
146  * of the center of the rear axle onto the nominal ground. X direction points to
147  * the motion direction of the vehicle, Y axis points to the left side of the
148  * vehicle and Z axis points up to the sky. Velocities and kinematics attribute
149  * of detected objects are absolute.
150  */
152  /*
153  * DW_COORD_SYSTEM_WORLD
154  * This coordinate system represents positions in the map/earth coordinates and is
155  * expressed in World Geodetic System 1984 (WGS84) and ENU axis convention.
156  * Velocities and kinematics attribute of detected objects are absolute.
157  */
159  /*
160  * DW_COORD_SYSTEM_CUSTOM
161  * This represents any arbitrary coordinate system that the developer wants to use.
162  */
165 } dwCoordSystem;
166 
170 typedef enum dwObjectState {
177 } dwObjectState;
178 
182 typedef struct dwObjectGeneric
183 {
185  uint64_t id;
192 
193  // Kinematic information
194  // Object kinematic state.
195  dwObjectState objectState;
196  // Reference coordinate system.
197  dwCoordSystem coordSystem;
210 
211  // Shape information
221 
223  uint32_t laneSpansCount;
228 
229 #define DW_OBJECT_CUBOID_2D_COUNT 8
230 #define DW_OBJECT_MAX_SUBCLASS_COUNT_PER_CLASS 3
231 
235 typedef struct dwObjectCamera
236 {
240  uint32_t sensorId;
242  uint32_t objectSubClass;
244  uint32_t clusterCount;
277 
278  // Kinematics
288 
298  // Tracking parameters
300  bool isSmall;
304  uint32_t age;
324 
328 typedef struct dwObjectLidar
329 {
335  uint32_t sensorId;
342  // Confidence obstacle class matches mask DW_OBSTACLE_CLASS_IS_VEHICLE
344  // Confidence obstacle class matches mask DW_OBSTACLE_CLASS_IS_PEDESTRIAN
346 
347 } dwObjectLidar;
348 
352 typedef struct dwObjectRadar
353 {
356 
358  uint32_t sensorId; // Sensor ID
368  uint32_t age;
372  bool isElevationValid; // maybe elevationAvailable?
373 
374 } dwObjectRadar;
375 
376 #define DW_OBJECT_MAX_SENSOR_COUNT 20
377 
381 typedef struct dwObjectFused
382 {
385 
386  bool isAssociated[DW_OBJECT_MAX_SENSOR_COUNT];
387  uint32_t associatedObjectIds[DW_OBJECT_MAX_SENSOR_COUNT];
388  // Trajectory circle fitting parameter (center)
391  // Trajectory circle fitting parameter (radius)
393  // Z component of found angular velocity with fitted circle
395  // Validity of angularVelocityZ
401 } dwObjectFused;
402 
403 #define MAX_FREESPACE_BOUNDARY_POINT_COUNT 10 * MAX_OBJECT_BOUNDARY_POINT_COUNT
404 
408 typedef struct dwObjectFreespace
409 {
415 
419 typedef struct dwObjectTrafficSignal
420 {
422  uint64_t id;
424  dwCoordSystem coordSystem;
426  uint32_t clusterCount;
429  // 2D bounding box
431  // 3D bounding box
433  // Sign or light
435  // Raw light class from detection.
437  // Processed light class after post processing (e.g. temporal)
439  // Raw sign class from detection.
441  // Processed sign class after post processing (e.g. temporal)
443  // Confidence value
445  // Valid object or not
446  bool valid;
448 
457 
466 
475 
484 
493 
502 
512 
522 
532 
542 
543 #ifdef __cplusplus
544 }
545 #endif
546 
549 #endif // DW_WORLD_OBJECT_H_
dwObstacle obstacle
The original obstacle.
Definition: Object.h:331
dwObjectState objectState
Definition: Object.h:195
DW_API_PUBLIC dwStatus dwObjectLidar_reset(dwObjectLidar *object)
Resets the fields of the given object to their initial state.
float32_t distance_m
Radial distance (in meter) from host car to object.
Definition: Object.h:280
dwVector2f imageVelocity
BBOX speed in pixel/sec.
Definition: Object.h:264
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:207
Objects found in radar.
Definition: Object.h:352
dwObjectGeneric details
The original object.
Definition: Object.h:413
uint32_t dominantLaneAssignment
The index of dominant lane assignment.
Definition: Object.h:121
float32_t confidence
Object estimate confidence.
Definition: Object.h:337
uint64_t id
The id of the object.
Definition: Object.h:185
NVIDIA DriveWorks API: World Model Lane Assignment
bool isGeometricFittingValid
Flag to indicated whether the scale and translation are valid.
Definition: Object.h:297
float float32_t
Specifies POD types.
Definition: Types.h:70
float32_t rearMarker25D
Rear marker 2.5D.
Definition: Object.h:258
DW_API_PUBLIC dwStatus dwObjectFreespace_reset(dwObjectFreespace *object)
Resets the fields of the given object to their initial state.
float32_t vehicleConfidence
Definition: Object.h:343
bool isElevationValid
Elevation validity flag.
Definition: Object.h:372
dwTime_t timestamp_us
The time of creation (us).
Definition: Object.h:191
NVIDIA DriveWorks API: Radar
dwObjectGeneric details
The original object.
Definition: Object.h:333
dwObjectClass objectClass
The detected class of object.
Definition: Object.h:187
bool isBoundaryValid
Definition: Object.h:212
dwCoordSystem
Coordinate systems used by dwObjectGeneric.
Definition: Object.h:127
Defines a AABB bounding box 2D.
Definition: Types.h:368
Defines a three-element floating-point vector.
Definition: Types.h:319
Defines a two-element single-precision floating-point vector.
Definition: Types.h:291
uint32_t boundaryPointCount
The number of points in the boundary.
Definition: Object.h:214
Defines a AABB bounding box 3D.
Definition: Types.h:361
float32_t confidence
Definition: Object.h:444
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:268
float32_t inverseTimeToCollision_s
The inverse time to collision (1/s)
Definition: Object.h:209
dwObstacle obstacle
The original obstacle.
Definition: Object.h:238
dwVector3f rotation
Rotation of the object in the given coordinate system (r, p, y) (rad)
Definition: Object.h:339
dwLaneGraphLaneType
The type of a lane.
Definition: LaneGraph.h:108
bool isObjectInFrame
Object bounding boxes is fully visible, i.e., not touching image boundary.
Definition: Object.h:320
uint32_t imageVelocityTempBaseline
The temporal baseline of the imageVelocity.
Definition: Object.h:293
uint32_t sensorId
Sensor ID.
Definition: Object.h:358
dwObstacle obstacle
The original obstacle.
Definition: Object.h:411
float32_t scaleFactor
Scale factor change from the previous frame.
Definition: Object.h:302
DW_API_PUBLIC dwStatus dwObjectGeneric_toObstacleLaneAssignment(dwObstacleLaneAssignment *out, const dwObjectGeneric *in)
Copy lane assignment from dwObjectGeneric to dwObstacleLaneAssignment.
DW_API_PUBLIC dwStatus dwObjectFused_reset(dwObjectFused *object)
Resets the fields of the given object to their initial state.
float32_t azimuthRight_r
azimuth angle from host car to object bottom right(flat ground plane assumption)
Definition: Object.h:314
dwSignClass processedSignType
Definition: Object.h:442
Object lane span data structure.
Definition: Object.h:78
float32_t longitudinalVelocity
Definition: Object.h:287
NVIDIA DriveWorks API: Core Methods
dwVector2f visibility25D
Visibility of the bounding box.
Definition: Object.h:252
dwVector3f rearPoint
rear boundary point (on LaneGraph) of the object lane span along the travel direction ...
Definition: Object.h:87
float32_t ratio
The amount of object pixel overlap in lane.
Definition: Object.h:100
Definition: Types.h:204
dwCoordSystem coordSystem
Definition: Object.h:197
dwSignClass rawSignType
Definition: Object.h:440
Object lane assignment.
Definition: Object.h:97
float32_t classConfidence
A float value from 0.0 to 1.0 indicating how confident the objectClass is.
Definition: Object.h:189
dwTime_t timestamp_us
Timestamp.
Definition: Object.h:428
dwVector3f anchorPoint
the anchor point (origin) which represents the start point of the distance calculation ...
Definition: Object.h:83
dwBbox3Df box3D
Definition: Object.h:432
float32_t occlusionConfidence
The occlusion confidence score.
Definition: Object.h:306
uint32_t laneId
The lane id.
Definition: Object.h:102
dwTrafficLightClass rawLightType
Definition: Object.h:436
Data structure representing an oriented bounding box in the local object coordinate frame The box is ...
Definition: Types.h:486
float32_t predictedRatio
The amount of predicted object pixel overlap in lane.
Definition: Object.h:106
float32_t angularVelocityZ
Definition: Object.h:394
float32_t azimuth_r
azimuth angle from host car to object (flat ground plane assumption)
Definition: Object.h:312
float32_t pointRearMarker25D
indicates point on vertical rear marker line for visualization of 2.5D orientation ...
Definition: Object.h:262
dwStatus
Status definition.
Definition: Status.h:166
NVIDIA DriveWorks API: Sensors
uint32_t globalLaneID
ID of the lane which this object lane span occupies.
Definition: Object.h:81
DW_API_PUBLIC dwStatus dwObjectCamera_reset(dwObjectCamera *object)
Resets the fields of the given object to their initial state.
float32_t curvature
Signed inverse radius of fitted circle, 0 if angular velocity estimate is not available.
Definition: Object.h:310
uint32_t objectSubClass
The sub class of the object.
Definition: Object.h:242
bool isVelInTempBaselineValid
Flag to indicate whether the computed velocity in the temoporal baseline is valid.
Definition: Object.h:290
uint32_t age
Age of the object track (camera frames)
Definition: Object.h:304
float32_t orientation25D_r
2.5D Orientation in sensor space (rads)
Definition: Object.h:254
#define DW_OBJECT_MAX_BOUNDARY_POINT_COUNT
The maximum size of an object shape.
Definition: Object.h:73
NVIDIA DriveWorks API: LaneGraph
float32_t azimuthLeft_r
azimuth angle from host car to object bottom left(flat ground plane assumption)
Definition: Object.h:316
Objects found in camera.
Definition: Object.h:235
uint32_t sensorId
Sensor ID that allows to retrieve coord.
Definition: Object.h:335
NVIDIA DriveWorks API: Traffic Sign types enum
dwRadarDynamicState
Defines the dynamic state of the radar return.
Definition: Radar.h:91
float32_t radius
Distance along the line of sight.
Definition: Object.h:362
DW_API_PUBLIC dwStatus dwObjectGeneric_toObstacle(dwObstacle *out, const dwObjectGeneric *in)
Copy obstacle from dwObjectGeneric to dwObstacle.
#define DW_OBJECT_MAX_SUBCLASS_COUNT_PER_CLASS
Definition: Object.h:230
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
#define DW_OBJECT_IN_PATH_ANALYZER_MAX_LANE_COUNT
The max number of lanes that can be processed.
Definition: Object.h:110
float32_t orientation_r
Object orientation with respect to rig (rad)
Definition: Object.h:205
dwObstacle obstacle
The original obstacle.
Definition: Object.h:384
dwVector3f position
Position of the object in the given coordinate system (m).
Definition: Object.h:199
DW_API_PUBLIC dwStatus dwObjectGeneric_fromObstacle(dwObjectGeneric *out, const dwObstacle *in)
Copy lane assignment to dwObjectGeneric from dwObstacle.
dwObjectState
Object kinematic state.
Definition: Object.h:170
dwTrafficSignalType type
Definition: Object.h:434
float32_t frontDistance
displacement integration along the lane polyline between lane span&#39;s front boundary to the anchor poi...
Definition: Object.h:89
float32_t depth_m
depth ~= distance*cos(azimuth)
Definition: Object.h:282
dwSignClass
Legacy-models type of a sign (to be depricated).
Definition: TrafficSigns.h:228
dwCoordSystem coordSystem
Coord system.
Definition: Object.h:424
bool isOccludedDNN
Final decision of object occlusion using DNN confidence.
Definition: Object.h:276
dwObjectLaneAssignmentList laneAssignments
The lane assignments for this object.
Definition: Object.h:220
Traffic signal object.
Definition: Object.h:419
uint32_t clusterCount
Vote count of clustering method.
Definition: Object.h:426
float32_t pointFrontMarker25D
indicates point on vertical front marker line for visualization of 2.5D orientation ...
Definition: Object.h:260
dwTrafficSignalType
Traffic signal major type selector - either light, sign, or VMS.
Definition: TrafficSigns.h:117
dwVector3f dimensions
Dimensions of the object in the given coordinate system (h, w, l) with "details.position" as the cent...
Definition: Object.h:341
uint64_t id
Track ID.
Definition: Object.h:422
float32_t frontMarker25D
Front marker 2.5D.
Definition: Object.h:256
bool isOccluded
Final decision of object occlusion.
Definition: Object.h:308
Freespace object.
Definition: Object.h:408
#define DW_OBJECT_MAX_SENSOR_COUNT
Definition: Object.h:376
float32_t fittedCircleRadius
Definition: Object.h:392
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:398
bool isSmall
Is a small Object?
Definition: Object.h:300
dwRadarDynamicState dynamicState
Dynamic state of object(Stationary/Moving/Oncoming/CrossTraffic)
Definition: Object.h:370
dwRectf box2D
Bounding box.
Definition: Object.h:246
dwVector2f velocityInTempBaseline
Intermediate ground velocity (m/s). It is computed by using the frames in imageVelocityTempBaseline.
Definition: Object.h:295
Object lane assignment list.
Definition: Object.h:114
float32_t inverseTimeToCollision_s
The inverse time to collision (s)
Definition: Object.h:400
uint32_t age
Age of object track.
Definition: Object.h:368
float32_t velocityConfidence
A float value from 0.0 to 1.0 indicating how confident the velocity is.
Definition: Object.h:203
float32_t confidence
Object estimate confidence.
Definition: Object.h:366
#define DW_OBJECT_CUBOID_2D_COUNT
Definition: Object.h:229
Information about a base object.
Definition: Object.h:182
float32_t rearDistance
displacement integration along the lane polyline between lane span&#39;s rear boundary to the anchor poin...
Definition: Object.h:91
dwTrafficLightClass processedLightType
Definition: Object.h:438
float32_t inverseTimeToCollision_s
The inverse time to collision (s)
Definition: Object.h:270
DW_API_PUBLIC dwStatus dwObjectGeneric_fromObstacleLaneAssignment(dwObjectGeneric *out, const dwObstacleLaneAssignment *in)
Copy lane assignment to dwObjectGeneric from dwObstacleLaneAssignment.
float32_t azimuth_r
Azimuth angle in radians from host car to object.
Definition: Object.h:364
dwVector2f anchor
Anchor point for fence estimation.
Definition: Object.h:322
float32_t urgency
Urgency (iTTC)
Definition: Object.h:284
Fused objects.
Definition: Object.h:381
uint32_t count
The count of lane assignments.
Definition: Object.h:119
DW_API_PUBLIC dwStatus dwObjectRadar_reset(dwObjectRadar *object)
Resets the fields of the given object to their initial state.
Objects found in lidar.
Definition: Object.h:328
dwVector3f frontPoint
front boundary point (on LaneGraph) of the object lane span along the travel direction ...
Definition: Object.h:85
float32_t radialVelocity
Velocity along the line of sight.
Definition: Object.h:360
DW_API_PUBLIC dwStatus dwObjectGeneric_reset(dwObjectGeneric *object)
Resets the fields of the given object to their initial state.
dwVector3f velocity
The velocity of the object in the given coordinate system (m/s).
Definition: Object.h:201
dwObstacle obstacle
The original obstacle.
Definition: Object.h:355
bool hasAngularVelocity
Definition: Object.h:396
dwTrafficLightClass
Type of a light output combining independent vector outputs.
Definition: TrafficSigns.h:86
bool isUrgencyValid
Whether urgency value is valid.
Definition: Object.h:286
dwLaneGraphLaneType type
The lane type.
Definition: Object.h:104
uint32_t clusterCount
Number of elements in the cluster.
Definition: Object.h:244
float32_t pedConfidence
Definition: Object.h:345
NVIDIA DriveWorks API: World Module
dwOrientedBoundingBox3f cuboid3D
3D cuboid. Coordinate system is virtual sensor coordinate.
Definition: Object.h:250
dwObjectClass
Object classes known to DriveWorks.
Definition: Obstacle.h:110
dwVector2f velocityDirection
Direction of the linear velocity computed from estimated angular velocity.
Definition: Object.h:318
dwVector2f fittedCircleCenter
Definition: Object.h:390
float32_t occlusionConfidenceDNN
The occlusion confidence by DNN.
Definition: Object.h:274
#define DW_API_PUBLIC
Definition: Exports.h:56
dwVector3f velocityRelative
The velocity relative to the ego car in rig coordinate system (m/s)
Definition: Object.h:266
uint32_t laneSpansCount
Number of lane spans associated with this object.
Definition: Object.h:223
uint32_t sensorId
Sensor ID.
Definition: Object.h:240
dwBbox2Df box2D
Definition: Object.h:430