DriveWorks SDK Reference
3.5.78 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>
39 
40 #include <dw/worldmodel/Obstacle.h>
42 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
72 #define DW_OBJECT_MAX_FUSED_PARENT_OBJECT_COUNT 6
73 #define DW_OBJECT_MAX_BOUNDARY_POINT_COUNT 30
75 
79 typedef struct dwObjectLaneSpan
80 {
82  uint32_t globalLaneID;
94 
98 typedef struct dwObjectLaneAssignment
99 {
103  uint32_t laneId;
109 
111 #define DW_OBJECT_IN_PATH_ANALYZER_MAX_LANE_COUNT 32
112 
116 {
120  uint32_t count;
124 
128 DW_DEPRECATED("Use dwCoordinateSystem from dw/rig/CoordinateSystem.h")
129 typedef enum dwCoordSystem {
130  /*
131  * DW_COORD_SYSTEM_SENSOR
132  * This is the local coordinate system each sensor uses.
133  * The conventions used in the SDK vary from sensor to sensor.
134  */
136  /*
137  * DW_COORD_SYSTEM_RIG
138  * This coordinate system is well defined as having the origin as the projection
139  * of the center of the rear axle onto the nominal ground. X direction points to
140  * the motion direction of the vehicle, Y axis points to the left side of the
141  * vehicle and Z axis points up to the sky. Velocities and kinematics attribute
142  * of detected objects are relative to current ego speed.
143  */
145  /*
146  * DW_COORD_SYSTEM_LOCAL
147  * This coordinate system is well defined as having the origin as the projection
148  * of the center of the rear axle onto the nominal ground. X direction points to
149  * the motion direction of the vehicle, Y axis points to the left side of the
150  * vehicle and Z axis points up to the sky. Velocities and kinematics attribute
151  * of detected objects are absolute.
152  */
154  /*
155  * DW_COORD_SYSTEM_WORLD
156  * This coordinate system represents positions in the map/earth coordinates and is
157  * expressed in World Geodetic System 1984 (WGS84) and ENU axis convention.
158  * Velocities and kinematics attribute of detected objects are absolute.
159  */
161  /*
162  * DW_COORD_SYSTEM_CUSTOM
163  * This represents any arbitrary coordinate system that the developer wants to use.
164  */
167 } dwCoordSystem;
168 
172 typedef enum dwObjectState {
179 } dwObjectState;
180 
184 typedef struct dwObjectGeneric
185 {
187  uint64_t id;
194 
195  // Kinematic information
196  // Object kinematic state.
197  dwObjectState objectState;
198  // Reference coordinate system.
212 
213  // Shape information
223 
225  uint32_t laneSpansCount;
230 
231 #define DW_OBJECT_CUBOID_2D_COUNT 8
232 #define DW_OBJECT_MAX_SUBCLASS_COUNT_PER_CLASS 3
233 #define DW_OBJECT_MAX_SENSOR_COUNT 20
234 #define DW_OBJECT_MAX_CAMERA_COUNT 7
235 #define DW_OBJECT_MAX_RADAR_COUNT 1
236 
240 typedef struct dwObjectCamera
241 {
245  uint32_t sensorId;
247  uint32_t objectSubClass;
249  uint32_t clusterCount;
282 
283  // Kinematics
293 
303  // Tracking parameters
305  bool isSmall;
309  uint32_t age;
329 
333 typedef struct dwObjectLidar
334 {
340  uint32_t sensorId;
347  // Confidence obstacle class matches mask DW_OBSTACLE_CLASS_IS_VEHICLE
349  // Confidence obstacle class matches mask DW_OBSTACLE_CLASS_IS_PEDESTRIAN or DW_OBSTACLE_CLASS_IS_BIKE
351 
352 } dwObjectLidar;
353 
357 typedef struct dwObjectRadar
358 {
361 
363  uint32_t sensorId; // Sensor ID
373  uint32_t age;
377  bool isElevationValid; // maybe elevationAvailable?
378 
379 } dwObjectRadar;
380 
384 typedef struct dwObjectFused
385 {
388 
389  bool isAssociated[DW_OBJECT_MAX_SENSOR_COUNT];
390  uint64_t associatedObjectIds[DW_OBJECT_MAX_SENSOR_COUNT];
391  // Trajectory circle fitting parameter (center)
394  // Trajectory circle fitting parameter (radius)
396  // Z component of found angular velocity with fitted circle
398  // Validity of angularVelocityZ
404 } dwObjectFused;
405 
406 #define MAX_FREESPACE_BOUNDARY_POINT_COUNT 10 * MAX_OBJECT_BOUNDARY_POINT_COUNT
407 
411 typedef struct dwObjectFreespace
412 {
418 
422 typedef struct dwObjectTrafficSignal
423 {
425  uint64_t id;
429  uint32_t clusterCount;
432  // 2D bounding box
434  // 3D bounding box
436  // Sign or light
438  // Raw light class from detection.
440  // Processed light class after post processing (e.g. temporal)
442  // Raw sign class from detection.
444  // Processed sign class after post processing (e.g. temporal)
446  // Confidence value
448  // Valid object or not
449  bool valid;
451 
460 
469 
478 
487 
496 
505 
515 
525 
535 
545 
546 #ifdef __cplusplus
547 }
548 #endif
549 
552 #endif // DW_WORLD_OBJECT_H_
dwObstacle obstacle
The original obstacle.
Definition: Object.h:336
dwObjectState objectState
Definition: Object.h:197
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:285
dwVector2f imageVelocity
BBOX speed in pixel/sec.
Definition: Object.h:269
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:209
Objects found in radar.
Definition: Object.h:357
dwObjectGeneric details
The original object.
Definition: Object.h:416
uint32_t dominantLaneAssignment
The index of dominant lane assignment.
Definition: Object.h:122
float32_t confidence
Object estimate confidence.
Definition: Object.h:342
uint64_t id
The id of the object.
Definition: Object.h:187
NVIDIA DriveWorks API: World Model Lane Assignment
bool isGeometricFittingValid
Flag to indicated whether the scale and translation are valid.
Definition: Object.h:302
float float32_t
Specifies POD types.
Definition: Types.h:70
float32_t rearMarker25D
Rear marker 2.5D.
Definition: Object.h:263
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:348
bool isElevationValid
Elevation validity flag.
Definition: Object.h:377
dwTime_t timestamp_us
The time of creation (us).
Definition: Object.h:193
NVIDIA DriveWorks API: Radar
dwObjectGeneric details
The original object.
Definition: Object.h:338
dwObjectClass objectClass
The detected class of object.
Definition: Object.h:189
bool isBoundaryValid
Definition: Object.h:214
dwCoordSystem
Coordinate systems used by dwObjectGeneric.
Definition: Object.h:129
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:216
Defines a AABB bounding box 3D.
Definition: Types.h:361
float32_t confidence
Definition: Object.h:447
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:273
float32_t inverseTimeToCollision_s
The inverse time to collision (1/s)
Definition: Object.h:211
dwObstacle obstacle
The original obstacle.
Definition: Object.h:243
dwVector3f rotation
Rotation of the object in the given coordinate system (r, p, y) (rad)
Definition: Object.h:344
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:325
uint32_t imageVelocityTempBaseline
The temporal baseline of the imageVelocity.
Definition: Object.h:298
uint32_t sensorId
Sensor ID.
Definition: Object.h:363
dwObstacle obstacle
The original obstacle.
Definition: Object.h:414
float32_t scaleFactor
Scale factor change from the previous frame.
Definition: Object.h:307
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.
DW_COORDINATE_SYSTEM_CUSTOM represents any arbitrary coordinate system that the developer wants to us...
float32_t azimuthRight_r
azimuth angle from host car to object bottom right(flat ground plane assumption)
Definition: Object.h:319
dwSignClass processedSignType
Definition: Object.h:445
Object lane span data structure.
Definition: Object.h:79
float32_t longitudinalVelocity
Definition: Object.h:292
NVIDIA DriveWorks API: Core Methods
dwVector2f visibility25D
Visibility of the bounding box.
Definition: Object.h:257
dwVector3f rearPoint
rear boundary point (on LaneGraph) of the object lane span along the travel direction ...
Definition: Object.h:88
float32_t ratio
The amount of object pixel overlap in lane.
Definition: Object.h:101
Definition: Types.h:204
dwSignClass rawSignType
Definition: Object.h:443
Object lane assignment.
Definition: Object.h:98
float32_t classConfidence
A float value from 0.0 to 1.0 indicating how confident the objectClass is.
Definition: Object.h:191
dwTime_t timestamp_us
Timestamp.
Definition: Object.h:431
dwVector3f anchorPoint
the anchor point (origin) which represents the start point of the distance calculation ...
Definition: Object.h:84
float32_t vruConfidence
Definition: Object.h:350
dwBbox3Df box3D
Definition: Object.h:435
float32_t occlusionConfidence
The occlusion confidence score.
Definition: Object.h:311
uint32_t laneId
The lane id.
Definition: Object.h:103
dwTrafficLightClass rawLightType
Definition: Object.h:439
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:107
float32_t angularVelocityZ
Definition: Object.h:397
float32_t azimuth_r
azimuth angle from host car to object (flat ground plane assumption)
Definition: Object.h:317
float32_t pointRearMarker25D
indicates point on vertical rear marker line for visualization of 2.5D orientation ...
Definition: Object.h:267
dwStatus
Status definition.
Definition: Status.h:178
NVIDIA DriveWorks API: Sensors
uint32_t globalLaneID
ID of the lane which this object lane span occupies.
Definition: Object.h:82
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:315
uint32_t objectSubClass
The sub class of the object.
Definition: Object.h:247
bool isVelInTempBaselineValid
Flag to indicate whether the computed velocity in the temoporal baseline is valid.
Definition: Object.h:295
uint32_t age
Age of the object track (camera frames)
Definition: Object.h:309
float32_t orientation25D_r
2.5D Orientation in sensor space (rads)
Definition: Object.h:259
#define DW_OBJECT_MAX_BOUNDARY_POINT_COUNT
The maximum size of an object shape.
Definition: Object.h:74
NVIDIA DriveWorks API: LaneGraph
float32_t azimuthLeft_r
azimuth angle from host car to object bottom left(flat ground plane assumption)
Definition: Object.h:321
Objects found in camera.
Definition: Object.h:240
uint32_t sensorId
Sensor ID that allows to retrieve coord.
Definition: Object.h:340
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:367
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:232
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:111
float32_t orientation_r
Object orientation with respect to rig (rad)
Definition: Object.h:207
dwObstacle obstacle
The original obstacle.
Definition: Object.h:387
dwVector3f position
Position of the object in the given coordinate system (m).
Definition: Object.h:201
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:172
dwTrafficSignalType type
Definition: Object.h:437
#define DW_DEPRECATED(msg)
Definition: Exports.h:68
float32_t frontDistance
displacement integration along the lane polyline between lane span&#39;s front boundary to the anchor poi...
Definition: Object.h:90
float32_t depth_m
depth ~= distance*cos(azimuth)
Definition: Object.h:287
dwSignClass
Legacy-models type of a sign (to be depricated).
Definition: TrafficSigns.h:232
bool isOccludedDNN
Final decision of object occlusion using DNN confidence.
Definition: Object.h:281
dwObjectLaneAssignmentList laneAssignments
The lane assignments for this object.
Definition: Object.h:222
Traffic signal object.
Definition: Object.h:422
uint32_t clusterCount
Vote count of clustering method.
Definition: Object.h:429
float32_t pointFrontMarker25D
indicates point on vertical front marker line for visualization of 2.5D orientation ...
Definition: Object.h:265
dwTrafficSignalType
Traffic signal major type selector - either light, sign, or VMS.
Definition: TrafficSigns.h:121
dwVector3f dimensions
Dimensions of the object in the given coordinate system (h, w, l) with "details.position" as the cent...
Definition: Object.h:346
uint64_t id
Track ID.
Definition: Object.h:425
float32_t frontMarker25D
Front marker 2.5D.
Definition: Object.h:261
bool isOccluded
Final decision of object occlusion.
Definition: Object.h:313
Freespace object.
Definition: Object.h:411
#define DW_OBJECT_MAX_SENSOR_COUNT
Definition: Object.h:233
float32_t fittedCircleRadius
Definition: Object.h:395
NVIDIA DriveWorks API: Coordinate Systems
bool isInverseTTCValid
is iTTC valid?
Definition: Object.h:401
bool isSmall
Is a small Object?
Definition: Object.h:305
dwRadarDynamicState dynamicState
Dynamic state of object(Stationary/Moving/Oncoming/CrossTraffic)
Definition: Object.h:375
dwCoordinateSystem
Coordinate systems.
dwRectf box2D
Bounding box.
Definition: Object.h:251
dwVector2f velocityInTempBaseline
Intermediate ground velocity (m/s). It is computed by using the frames in imageVelocityTempBaseline.
Definition: Object.h:300
Object lane assignment list.
Definition: Object.h:115
float32_t inverseTimeToCollision_s
The inverse time to collision (s)
Definition: Object.h:403
DW_COORDINATE_SYSTEM_LOCAL is a local coordinate system with origin at an arbitrary point in the worl...
uint32_t age
Age of object track.
Definition: Object.h:373
float32_t velocityConfidence
A float value from 0.0 to 1.0 indicating how confident the velocity is.
Definition: Object.h:205
float32_t confidence
Object estimate confidence.
Definition: Object.h:371
#define DW_OBJECT_CUBOID_2D_COUNT
Definition: Object.h:231
Information about a base object.
Definition: Object.h:184
float32_t rearDistance
displacement integration along the lane polyline between lane span&#39;s rear boundary to the anchor poin...
Definition: Object.h:92
dwTrafficLightClass processedLightType
Definition: Object.h:441
float32_t inverseTimeToCollision_s
The inverse time to collision (s)
Definition: Object.h:275
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:369
dwVector2f anchor
Anchor point for fence estimation.
Definition: Object.h:327
float32_t urgency
Urgency (iTTC)
Definition: Object.h:289
Fused objects.
Definition: Object.h:384
uint32_t count
The count of lane assignments.
Definition: Object.h:120
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:333
dwVector3f frontPoint
front boundary point (on LaneGraph) of the object lane span along the travel direction ...
Definition: Object.h:86
float32_t radialVelocity
Velocity along the line of sight.
Definition: Object.h:365
DW_COORDINATE_SYSTEM_VEHICLE_BASE is the vehicle coordinate system attached to the primary body suppo...
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:203
dwObstacle obstacle
The original obstacle.
Definition: Object.h:360
bool hasAngularVelocity
Definition: Object.h:399
dwTrafficLightClass
Type of a light output combining independent vector outputs.
Definition: TrafficSigns.h:86
bool isUrgencyValid
Whether urgency value is valid.
Definition: Object.h:291
DW_COORDINATE_SYSTEM_SENSOR is the local coordinate system each sensor uses.
dwCoordinateSystem coordSystem
Coord system.
Definition: Object.h:427
dwLaneGraphLaneType type
The lane type.
Definition: Object.h:105
dwCoordinateSystem coordSystem
Definition: Object.h:199
uint32_t clusterCount
Number of elements in the cluster.
Definition: Object.h:249
NVIDIA DriveWorks API: World Module
dwOrientedBoundingBox3f cuboid3D
3D cuboid. Coordinate system is virtual sensor coordinate.
Definition: Object.h:255
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:323
dwVector2f fittedCircleCenter
Definition: Object.h:393
float32_t occlusionConfidenceDNN
The occlusion confidence by DNN.
Definition: Object.h:279
#define DW_API_PUBLIC
Definition: Exports.h:56
DW_COORDINATE_SYSTEM_WORLD is used for map/earth coordinates and is defined by the World Geodetic Sys...
dwVector3f velocityRelative
The velocity relative to the ego car in rig coordinate system (m/s)
Definition: Object.h:271
uint32_t laneSpansCount
Number of lane spans associated with this object.
Definition: Object.h:225
uint32_t sensorId
Sensor ID.
Definition: Object.h:245
dwBbox2Df box2D
Definition: Object.h:433