DriveWorks SDK Reference
3.5.78 Release
For Test and Development only

Maps.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 
31 #ifndef DW_MAPS_MAPS_H_
32 #define DW_MAPS_MAPS_H_
33 
54 #include <dw/core/Config.h>
55 #include <dw/core/Exports.h>
56 #include <dw/core/Status.h>
57 #include <dw/core/Types.h>
58 #include <dw/core/Context.h>
59 #include <dw/worldmodel/Location.h>
60 
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
64 
65 //#######################################################################################
66 // Handles
67 //#######################################################################################
68 typedef struct dwMapObject* dwMapHandle_t;
69 typedef struct dwMapObject const* dwConstMapHandle_t;
70 
71 typedef struct dwMapsLocalLayoutObject* dwMapsLocalLayoutHandle_t;
72 typedef struct dwMapsLocalLayoutObject const* dwConstMapsLocalLayoutHandle_t;
73 
74 //#######################################################################################
75 // Forward declarations
76 //#######################################################################################
79 typedef struct dwMapsLaneGroup dwMapsLaneGroup;
80 typedef struct dwMapsLane dwMapsLane;
81 typedef struct dwMapsLaneMeta dwMapsLaneMeta;
85 
94 //#######################################################################################
95 // Enums
96 //#######################################################################################
100 typedef enum dwMapsMaterial {
111 
115 typedef enum dwMapsColor {
128 } dwMapsColor;
129 
133 typedef enum dwMapsLaneDividerType {
158 
161 
165 typedef enum dwMapsLaneType {
189 
195 typedef enum dwMapsDirection {
201 
205 typedef enum dwMapsRoadSegmentType {
207 
217 
223 typedef enum dwMapsFeatureType {
231 
239 typedef enum dwMapsRoadMarkingType {
253 
257 typedef enum dwMapsSide {
261 } dwMapsSide;
262 
268 typedef enum dwMapsLaneGeometry {
273 
277 typedef enum dwMapsHDCompliance {
281 
301 
302 /*
303  * Bitmask to specify the traversability of two adjacent lanes in a lane group.
304  * This value must be respected when evaluating lane changes for a lane plan.
305  */
311 
321 
322 //#######################################################################################
323 // Global ID structs
324 //#######################################################################################
329 {
330  uint64_t id[4];
332 
336 typedef struct dwMapsLaneId
337 {
338  uint64_t id[4];
339 } dwMapsLaneId;
340 
344 typedef struct dwMapsRoadSegmentId
345 {
346  uint64_t id[3];
348 
352 typedef struct dwMapsElementId
353 {
354  uint64_t id[2];
356 
357 //#######################################################################################
358 // Connection structs
359 //#######################################################################################
360 
361 #define DW_MAPS_MAX_LANE_CONNECTIONS 100
362 
371 typedef struct dwMapsLaneConnection
372 {
374  const dwMapsLane* lane;
375  bool sameDirection;
378 
386 {
389  bool sameDirection;
391  dwTransformation3f connectedToLocal;
396 
397 //#######################################################################################
398 // Data structs
399 //#######################################################################################
400 
405 
409 typedef struct dwMapsLine
410 {
411  dwVector3f p[2];
412 } dwMapsLine;
413 
417 typedef struct dwMapsGeoPolyline
418 {
419  const dwMapsGeoPoint* points;
420  uint32_t pointCount;
422 
427 {
431 
432  DW_DEPRECATED("replaced by `geometry`")
433  dwMapsGeoPolyline absGeometry;
434  dwPolyline3f geometry;
435 
437  const dwMapsLaneDividerGroup* group;
438 };
439 
443 typedef struct dwMapsLaneDividerLine
444 {
445  dwVector3f p[2];
448 
457 {
459 
461  uint32_t laneDividerCount;
462 
464 };
465 
466 typedef uint64_t dwMapsFeatureId;
467 #define DW_MAPS_INVALID_FEATURE_ID (ULONG_MAX)
468 
473 {
474  uint32_t laneCount;
475  const dwMapsLane* const* lanes;
476  const dwMapsLaneTraversabilityMask* traversability;
480 
486 };
487 
492 {
496  float32_t speedLimit;
500 };
501 
513 {
515 
518  float32_t speedLimit;
523 
524  DW_DEPRECATED("replaced by `geometry`")
525  dwMapsGeoPolyline absGeometry;
526  dwPolyline3f geometry;
527 
528  const dwMapsLaneGroup* laneGroup;
529 
530  const dwMapsLaneDividerGroup* laneDividerGroups[2];
531 
539  const dwMapsLaneConnection* next;
540  uint32_t nextCount;
541 
542  const dwMapsLaneConnection* previous;
543  uint32_t previousCount;
544 
545  const dwMapsRoadSegment* roadSegment;
546 
548  const dwMapsLaneWaitElement* waitElements;
549  uint32_t waitElementCount;
550 
552  const dwMapsLaneWaitGroup* waitGroups;
553  uint32_t waitGroupCount;
554 };
555 
562 typedef struct dwMapsFeature
563 {
564  uint64_t id;
565  uint32_t type;
566 
567  DW_DEPRECATED("replaced by `geometry`")
568  dwMapsGeoPolyline absGeometry;
569  dwPolyline3f geometry;
570 
571  const dwMapsRoadSegment* roadSegment;
572 } dwMapsFeature;
573 
600 {
602 
603  uint32_t type;
604 
605  dwMapsGeoPoint origin;
606 
609 
611  const dwMapsLane* lanes;
612  uint32_t laneCount;
613 
615  uint32_t laneGroupCount;
616 
619 
620  const dwMapsFeature* features;
621  uint32_t featureCount;
622 
624  uint32_t nextCount;
625 
627  uint32_t previousCount;
628 };
629 
632 //#######################################################################################
633 // User buffer structs
634 //#######################################################################################
635 
639 typedef struct dwMapsConfidence
640 {
642  float32_t threshold; // Inlier threshold
643  float32_t variance; // Variance of inliers
645 
659 typedef struct dwMapsGeoPointBuffer
660 {
661  dwMapsGeoPoint* buffer;
662  uint32_t maxSize;
663  uint32_t size;
665 
669 typedef struct dwMapsPointBuffer
670 {
672  uint32_t maxSize;
673  uint32_t size;
675 
680 {
682  uint32_t maxSize;
683  uint32_t size;
685 
689 typedef struct dwMapsLaneBuffer
690 {
692  uint32_t maxSize;
693  uint32_t size;
695 
699 typedef struct dwMapsLanePtrBuffer
700 {
701  const dwMapsLane** buffer;
702  uint32_t maxSize;
703  uint32_t size;
705 
710 {
712  uint32_t maxSize;
713  uint32_t size;
715 
720 {
722  uint32_t maxSize;
723  uint32_t size;
725 
729 typedef struct dwMapsFeatureBuffer
730 {
731  dwMapsFeature* buffer;
732  uint32_t maxSize;
733  uint32_t size;
735 
740 {
742  uint32_t maxSize;
743  uint32_t size;
745 
750 {
752  uint32_t maxSize;
753  uint32_t size;
755 
759 typedef struct dwMapsBoolBuffer
760 {
761  bool* buffer;
762  uint32_t maxSize;
763  uint32_t size;
765 
768 //#######################################################################################
769 // Function parameter structs
770 //#######################################################################################
771 
784 
788 typedef struct dwMapsLocalBounds
789 {
797 
800 //#######################################################################################
801 // Initialization functions
802 //#######################################################################################
803 
828 dwStatus dwMaps_initialize(dwMapHandle_t* mapHandle,
829  const char* filename,
830  dwContextHandle_t contextHandle);
831 
843 dwStatus dwMaps_release(dwMapHandle_t mapHandle);
844 
847 //#######################################################################################
848 // Serialization functions
849 //#######################################################################################
850 
866 
868 #define DW_MAPS_SERIALIZATION_FORMAT_XML_VERSION 5
869 
883 dwStatus dwMaps_serialize(const char* filename, dwMapsSerializationFormat format,
884  dwConstMapHandle_t mapHandle);
885 
888 //#######################################################################################
889 // Utility functions
890 //#######################################################################################
891 
915 dwStatus dwMaps_computeBounds(dwMapsBounds* bounds,
916  const dwMapsGeoPoint* p,
917  float32_t radiusMeter);
918 
933  const dwMapsGeoPoint* position,
934  const dwMapsGeoPoint* headingPoint);
935 
956  const dwMatrix3d* localToENURotation33);
957 
975  float32_t bearingRadian);
976 
993  const dwMapsGeoPoint* position,
994  const dwMapsGeoPoint* headingPoint);
1011  const dwVector3f* position,
1012  const dwVector3f* headingPoint);
1013 
1026 dwStatus dwMaps_getPointAhead(dwMapsGeoPoint* pointAhead,
1027  const dwMapsGeoPoint* position,
1028  const dwMatrix3d* localToENURotation33,
1029  float32_t distance);
1030 
1054  const dwMapsGeoPolyline* polylines,
1055  uint32_t polylineCount,
1056  const dwMapsGeoPoint* localOrigin,
1057  const dwMatrix3d* localToENURotation33);
1058 
1081  const dwPolyline3f* polylines,
1082  uint32_t polylineCount,
1083  const dwMapsGeoPoint* localOrigin,
1084  const dwMatrix3d* localToENURotation33);
1085 
1106 dwStatus dwMaps_transformPoint(dwVector3f* transformedPoint,
1107  const dwMapsGeoPoint* point,
1108  const dwMapsGeoPoint* localOrigin,
1109  const dwMatrix3d* localToENURotation33);
1110 
1133 dwStatus dwMaps_transformPointReverse(dwMapsGeoPoint* transformedPoint,
1134  const dwVector3f* point,
1135  const dwMapsGeoPoint* localOrigin,
1136  const dwMatrix3d* localToENURotation33);
1137 
1156  const dwMapsGeoPoint* originSource,
1157  const dwMatrix3d* localToENURotationSource,
1158  const dwMapsGeoPoint* originTarget,
1159  const dwMatrix3d* localToENURotationTarget);
1196 dwStatus dwMaps_interpolatePolylines(uint32_t* srcStartIndex,
1197  uint32_t* targetEndIndex,
1198  dwMapsGeoPointBuffer* interpolatedPoints,
1199  const dwMapsGeoPoint* srcPoints,
1200  uint32_t srcPointCount,
1201  const dwMapsGeoPoint* targetPoints,
1202  uint32_t targetPointCount,
1203  float32_t start,
1204  float32_t end,
1205  float32_t stepSize,
1206  float32_t (*interpolationFn)(float32_t, void*),
1207  void* interpolationFnContext);
1208 
1228 dwStatus dwMaps_getNeighborLaneCount(uint32_t* laneCount,
1229  uint32_t* laneCountAccessible,
1230  const dwMapsLane* lane, dwMapsSide side,
1231  bool sideRelativeToDrivingDirection);
1232 
1252 dwStatus dwMaps_getNeighborLane(const dwMapsLane** otherLane,
1253  const dwMapsLane* currentLane,
1254  dwMapsSide side, uint32_t offset,
1255  bool sideRelativeToDrivingDirection);
1256 
1288 dwStatus dwMaps_getLaneChangeAtGlobalPose(dwMapsSide* laneChangeSide,
1289  uint32_t* laneChangeCount,
1290  float32_t* laneChangeLength,
1291  const dwMapsLane* srcLane,
1292  const dwMapsLane* targetLane,
1293  const dwMapsGeoPoint* position,
1294  const dwMatrix3d* localToENURotation33);
1295 
1331 dwStatus dwMaps_getLaneChangeAtLocalPose(dwMapsSide* laneChangeSide,
1332  uint32_t* laneChangeCount,
1333  float32_t* laneChangeLength,
1334  const dwMapsLane* srcLane,
1335  const dwMapsLane* targetLane,
1336  const dwMapsRoadSegment* referenceRoadSegment,
1337  const dwVector3f* position,
1338  const dwMatrix3d* localToENURotation33);
1339 
1358 dwStatus dwMaps_getLaneChange(dwMapsSide* laneChangeSide,
1359  uint32_t* laneChangeCount,
1360  float32_t* laneChangeLength,
1361  const dwMapsLane* srcLane,
1362  const dwMapsLane* targetLane);
1363 
1379 dwStatus dwMaps_isConnectionDrivable(bool* isDrivable,
1380  const dwMapsLane* lane,
1381  const dwMapsLaneConnection* connection);
1382 
1412  dwMapsPointBuffer* pointBuffer,
1413  const dwMapsFeatureBuffer* features,
1414  const dwMapsGeoPoint* localOrigin,
1415  const dwMatrix3d* localToENURotation33,
1416  const dwMapsLocalBounds* localBounds);
1417 
1434  dwMapsLanePtrBuffer* perPointLanes,
1435  const dwMapsLane* lanes, uint32_t laneCount,
1436  dwMapsLaneGeometry geometrySelection);
1437 
1450  const dwMapsGeoPoint* points, uint32_t pointCount);
1451 
1463 dwStatus dwMaps_computeDistance(float64_t* distance, const dwMapsGeoPoint* p1, const dwMapsGeoPoint* p2);
1464 
1481 dwStatus dwMaps_closestPointOnPolyline(dwMapsGeoPoint* closestPoint,
1482  float64_t* distanceMeters,
1483  uint32_t* lineSegmentIndex,
1484  const dwMapsGeoPoint* p,
1485  const dwMapsGeoPolyline* polyline,
1486  bool ignoreHeight);
1487 
1501  const dwMapsGeoPolyline* polyline,
1502  float32_t stepSize);
1503 
1519 dwStatus dwMaps_computeBoundsSize(float32_t* width, float32_t* height, const dwMapsBounds* bounds);
1520 
1538  const dwMapsLane* localLane,
1539  const dwMapsLane* connectedLane);
1540 
1541 //#######################################################################################
1542 // Find lane splits and merges
1543 //#######################################################################################
1544 
1548 #define DW_MAPS_INVALID_LANE_INDEX 99999999
1549 
1553 typedef enum dwMapsLaneEventType {
1559 
1564 {
1567  uint32_t splitCount;
1570  uint32_t splitIndex;
1572  float32_t laneChangeLengthAfterSplit;
1583 
1587 typedef struct dwMapsLaneSplit
1588 {
1590  uint32_t splitCount;
1591  uint32_t splitIndex;
1593  float32_t laneChangeLengthAfterSplit;
1598 } dwMapsLaneSplit;
1604 
1609 {
1612  uint32_t mergingLaneCount;
1616  uint32_t mergingLaneIndex;
1623 
1627 typedef struct dwMapsLaneMerge
1628 {
1630  uint32_t mergingLaneCount;
1631  uint32_t mergingLaneIndex;
1632 } dwMapsLaneMerge;
1638 
1671 dwStatus dwMaps_getNextLaneEvent(dwMapsLaneEventType* type,
1672  dwMapsLaneSplitDetails* laneSplit,
1673  dwMapsLaneMergeDetails* laneMerge,
1674  float32_t* nextEventDist,
1675  const dwMapsLane* currentLane,
1676  const bool* forwardOnPolyline,
1677  float32_t maxDistance);
1678 
1704  float32_t* laneSplitDistance,
1705  const dwMapsLane* currentLane,
1706  float32_t maxSearchDistance,
1707  const dwMapsRoadSegment* referenceRoadSegment,
1708  const dwVector3f* position,
1709  const dwMatrix3d* localToENURotation33);
1710 
1735  float32_t* laneSplitDistance,
1736  const dwMapsLane* currentLane,
1737  float32_t maxSearchDistance,
1738  const dwMapsGeoPoint* position,
1739  const dwMatrix3d* localToENURotation33);
1740 
1743 //#######################################################################################
1744 // Query functions
1745 //#######################################################################################
1746 
1769 dwStatus dwMaps_getLane(const dwMapsLane** lane, const dwMapsLaneId* id,
1770  dwConstMapHandle_t mapHandle);
1771 
1793  uint32_t typeFilter,
1794  const dwMapsBounds* bounds,
1795  dwConstMapHandle_t mapHandle);
1796 
1813  const dwMapsLaneDividerGroupId* id,
1814  dwConstMapHandle_t mapHandle);
1815 
1837  uint32_t typeFilter,
1838  const dwMapsBounds* bounds,
1839  dwConstMapHandle_t mapHandle);
1840 
1855 dwStatus dwMaps_getFeature(const dwMapsFeature** mapsFeature,
1856  const dwMapsFeatureId* id,
1857  dwConstMapHandle_t mapHandle);
1858 
1878  const dwMapsBounds* bounds,
1879  dwConstMapHandle_t mapHandle);
1880 
1900  const dwMapsBounds* bounds,
1901  dwConstMapHandle_t mapHandle);
1902 
1918  const dwMapsRoadSegmentId* id,
1919  dwConstMapHandle_t mapHandle);
1920 
1941  dwMapsGeoPoint* closestPoint,
1942  const dwMapsGeoPoint* p,
1943  bool onlyDrivable,
1944  bool ignoreHeight,
1945  float32_t maxRadius,
1946  dwConstMapHandle_t mapHandle);
1947 
1967  dwVector3f* closestPoint,
1968  const dwMapsRoadSegment* referenceRoadSegment,
1969  const dwVector3f* position,
1970  bool onlyDrivable,
1971  float32_t maxRadius,
1972  dwConstMapHandle_t mapHandle);
1973 
1992  dwVector3f* closestPoint,
1993  const dwMapsRoadSegment* referenceRoadSegment,
1994  const dwVector3f* position,
1995  bool onlyDrivable);
1996 
2009 dwStatus dwMaps_getBounds(dwMapsBounds* bounds, dwConstMapHandle_t mapHandle);
2010 
2013 //#######################################################################################
2014 // Map Tracker
2015 //#######################################################################################
2016 
2031 typedef struct dwMapTrackerObject* dwMapTrackerHandle_t;
2032 typedef struct dwMapTrackerObject const* dwConstMapTrackerHandle_t;
2033 
2045 dwStatus dwMapTracker_initialize(dwMapTrackerHandle_t* mapTrackerHandle, dwConstMapHandle_t map);
2046 
2056 dwStatus dwMapTracker_release(dwMapTrackerHandle_t mapTrackerHandle);
2057 
2095 dwStatus dwMapTracker_updateWithGlobalPose(const dwMapsGeoPoint* position,
2096  const dwMatrix3d* localToENURotation33,
2097  dwTime_t timestamp,
2098  bool ignoreHeight,
2099  bool reset,
2100  dwMapTrackerHandle_t mapTrackerHandle);
2101 
2129 dwStatus dwMapTracker_updateWithLocalPose(const dwMapsRoadSegment* referenceRoadSegment,
2130  const dwVector3f* position,
2131  const dwMatrix3d* localToENURotation33,
2132  dwTime_t timestamp,
2133  bool reset,
2134  dwMapTrackerHandle_t mapTrackerHandle);
2135 
2147 dwStatus dwMapTracker_getCurrentLane(const dwMapsLane** currentLane,
2148  dwConstMapTrackerHandle_t mapTrackerHandle);
2149 
2162  dwConstMapTrackerHandle_t mapTrackerHandle);
2163 
2166 //#######################################################################################
2167 // Lane Tree
2168 //#######################################################################################
2169 
2181 typedef struct dwMapsLaneTreeObject* dwMapsLaneTreeHandle_t;
2182 typedef struct dwMapsLaneTreeObject const* dwConstMapsLaneTreeHandle_t;
2183 
2188 typedef enum dwMapsLaneTreeLimit {
2192 
2198 typedef struct dwMapsLaneTreeNode dwMapsLaneTreeNode;
2200 {
2201  const dwMapsLane* lane;
2202 
2205  uint32_t childrenCount;
2206 };
2207 
2212 {
2214  uint32_t maxSize;
2215  uint32_t size;
2217 
2229 dwStatus dwMapsLaneTree_initialize(dwMapsLaneTreeHandle_t* laneTreeHandle,
2230  uint32_t maxLaneCount,
2231  dwConstMapHandle_t map);
2232 
2242 dwStatus dwMapsLaneTree_release(dwMapsLaneTreeHandle_t laneTreeHandle);
2243 
2274  float32_t limit, dwMapsLaneTreeLimit limitType,
2275  bool doLaneChanges, bool forward, bool relativeToDrivingDirection,
2276  dwMapsLaneTreeHandle_t laneTree);
2277 
2295  dwConstMapsLaneTreeHandle_t laneTree);
2296 
2308 dwStatus dwMapsLaneTree_getLeafCount(uint32_t* leafCount, dwConstMapsLaneTreeHandle_t laneTree);
2309 
2325 dwStatus dwMapsLaneTree_getLaneListToLeaf(dwMapsLaneBuffer* laneBuffer, uint32_t leafIndex,
2326  dwConstMapsLaneTreeHandle_t laneTree);
2327 
2339 dwStatus dwMapsLaneTree_getLaneCount(uint32_t* laneCount, dwConstMapsLaneTreeHandle_t laneTree);
2340 
2355 dwStatus dwMapsLaneTree_getLanes(dwMapsLaneBuffer* laneBuffer, dwConstMapsLaneTreeHandle_t laneTree);
2356 
2359 //#######################################################################################
2360 // Local Map Layout
2361 //#######################################################################################
2362 
2380 {
2381  uint32_t componentId;
2382  const dwMapsRoadSegment* componentRoot; // segment closest to layoutOrigin in this component
2383  dwTransformation3f segmentToRoot; // segment ENU to root segment's ENU
2384  uint32_t hopsFromRoot; // number of graph hops from the root segment
2386 
2398 dwStatus dwMapsLocalLayout_initialize(dwMapsLocalLayoutHandle_t* localLayoutHandle, uint32_t maxRoadSegments, uint32_t maxComponents);
2399 
2409 dwStatus dwMapsLocalLayout_release(dwMapsLocalLayoutHandle_t localLayoutHandle);
2410 
2419 dwStatus dwMapsLocalLayout_reset(dwMapsLocalLayoutHandle_t localLayoutHandle);
2420 
2434  uint32_t count,
2435  dwMapsLocalLayoutHandle_t localLayoutHandle);
2436 
2449 dwStatus dwMapsLocalLayout_addRoadSegments(const dwMapsRoadSegment* segments, uint32_t count,
2450  dwMapsLocalLayoutHandle_t localLayoutHandle);
2451 
2468 dwStatus dwMapsLocalLayout_build(const dwMapsGeoPoint* layoutOrigin, dwMapsLocalLayoutHandle_t localLayoutHandle);
2469 
2480 dwStatus dwMapsLocalLayout_getComponentCount(uint32_t* componentCount, dwConstMapsLocalLayoutHandle_t localLayoutHandle);
2481 
2494 dwStatus dwMapsLocalLayout_getComponentRoot(const dwMapsRoadSegment** segment, uint32_t componentId,
2495  dwConstMapsLocalLayoutHandle_t localLayoutHandle);
2496 
2511  dwConstMapsLocalLayoutHandle_t localLayoutHandle);
2512 
2552  const dwMapsLaneDividerBuffer* laneDividers,
2553  const dwMapsGeoPoint* localOrigin,
2554  const dwMatrix3d* localToENURotation33,
2555  const dwMapsLocalBounds* localBounds,
2556  const dwVector3f* directionFilterVector,
2557  float32_t directionFilterAngleRadian,
2558  bool ignoreLaneDirection,
2559  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
2560  uint32_t componentId);
2561 
2592  dwMapsPointBuffer* localPoints,
2593  const dwMapsFeatureBuffer* features,
2594  const dwMapsGeoPoint* localOrigin,
2595  const dwMatrix3d* localToENURotation33,
2596  const dwMapsLocalBounds* localBounds,
2597  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
2598  uint32_t componentId);
2599 
2631  const dwMapsLaneDividerBuffer* laneDividers,
2632  const dwMatrix3f rotationLayoutRootToLocal,
2633  const dwVector3f translationLayoutRootToLocal,
2634  const dwMapsLocalBounds* localBounds,
2635  const dwVector3f* directionFilterVector,
2636  float32_t directionFilterAngleRadian,
2637  bool ignoreLaneDirection,
2638  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
2639  uint32_t componentId);
2640 
2664  dwMapsPointBuffer* featurePoints,
2665  const dwMapsFeatureBuffer* dwFeatures,
2666  const dwMatrix3f rotationLayoutRootToLocal,
2667  const dwVector3f translationLayoutRootToLocal,
2668  const dwMapsLocalBounds* localBounds,
2669  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
2670  uint32_t componentId);
2671 
2674 #ifdef __cplusplus
2675 }
2676 #endif
2677 
2682 #endif // DW_MAPS_MAPS_H_
DW_API_PUBLIC dwStatus dwMaps_getNeighborLaneCount(uint32_t *laneCount, uint32_t *laneCountAccessible, const dwMapsLane *lane, dwMapsSide side, bool sideRelativeToDrivingDirection)
Get the number of lanes on the current road segment next to a given lane.
dwMapsRoadSegmentId segmentId
id of the connected road segment.
Definition: Maps.h:387
area type feature
Definition: Maps.h:242
DW_API_PUBLIC dwStatus dwMapTracker_initialize(dwMapTrackerHandle_t *mapTrackerHandle, dwConstMapHandle_t map)
Creates a map tracker handle that allows to track a pose on a map.
dwMapsLaneMeta laneBeforeSplit
lane that splits
Definition: Maps.h:1589
Road feature defined by a polyline, with attributes.
Definition: Maps.h:562
struct dwMapsLaneWaitElement dwMapsLaneWaitElement
Definition: Maps.h:83
DW_API_PUBLIC dwStatus dwMaps_computeBearingFromRotation(float64_t *bearingRadian, const dwMatrix3d *localToENURotation33)
Compute bearing in radian from localToENU rotation.
DW_API_PUBLIC dwStatus dwMaps_transformLaneDividersToLocalLinesViaRelative(dwMapsLaneDividerLineBuffer *lineSegments, const dwMapsLaneDividerBuffer *laneDividers, const dwMatrix3f rotationLayoutRootToLocal, const dwVector3f translationLayoutRootToLocal, const dwMapsLocalBounds *localBounds, const dwVector3f *directionFilterVector, float32_t directionFilterAngleRadian, bool ignoreLaneDirection, dwConstMapsLocalLayoutHandle_t localLayoutHandle, uint32_t componentId)
Get line segments from the list of specified dividers, transformed into the camera coordinate system...
uint32_t maxSize
maximum number of lane dividers that fit into the buffer
Definition: Maps.h:722
struct dwMapTrackerObject * dwMapTrackerHandle_t
Definition: Maps.h:2031
const dwMapsLaneDividerGroup * laneDividerGroups
pointer to lane divider group array of this segment
Definition: Maps.h:617
DW_API_PUBLIC dwStatus dwMaps_getRoadSegments(dwMapsRoadSegmentBuffer *roadSegments, const dwMapsBounds *bounds, dwConstMapHandle_t mapHandle)
Get road segments within bounds.
User provided buffer of boolean variables.
Definition: Maps.h:759
User provided buffer of dwPolyline3f.
Definition: Maps.h:679
NVIDIA DriveWorks API: Core Types
uint32_t previousCount
number of segment connections at segment start
Definition: Maps.h:627
DW_API_PUBLIC dwStatus dwMaps_getNeighborLane(const dwMapsLane **otherLane, const dwMapsLane *currentLane, dwMapsSide side, uint32_t offset, bool sideRelativeToDrivingDirection)
Get a neighbor lane on a given side.
float float32_t
Specifies POD types.
Definition: Types.h:70
const dwMapsRoadSegment * roadSegment
parent road segment
Definition: Maps.h:463
dwMapsLaneMeta laneAfterMerge
lane into which the lanes merge
Definition: Maps.h:1629
Defines a single-precision 3D polyline.
Definition: Types.h:404
DW_API_PUBLIC dwStatus dwMaps_computePolylineLength(float32_t *length, const dwMapsGeoPoint *points, uint32_t pointCount)
Compute length of a polyline of wgs84 points in meters.
Polyline defined by a dwMapsGeoPoint list.
Definition: Maps.h:417
DW_API_PUBLIC dwStatus dwMapsLaneTree_release(dwMapsLaneTreeHandle_t laneTreeHandle)
Release lane tree handle.
DW_API_PUBLIC dwStatus dwMaps_getFeature(const dwMapsFeature **mapsFeature, const dwMapsFeatureId *id, dwConstMapHandle_t mapHandle)
Get a map feature queried by a feature id.
uint32_t size
current number of valid lanes in the buffer
Definition: Maps.h:703
Lane defined by a polyline, with lane attributes.
Definition: Maps.h:512
DW_API_PUBLIC dwStatus dwMapsLocalLayout_build(const dwMapsGeoPoint *layoutOrigin, dwMapsLocalLayoutHandle_t localLayoutHandle)
Computes relative transforms between segments previously added to the layout:
DW_API_PUBLIC dwStatus dwMaps_serialize(const char *filename, dwMapsSerializationFormat format, dwConstMapHandle_t mapHandle)
Stores current map content into a file.
uint32_t laneDividerGroupCount
number of lane divider groups in this segment
Definition: Maps.h:618
dwGeoBounds dwMapsBounds
Map coordinate bounds.
Definition: Maps.h:783
DW_API_PUBLIC dwStatus dwMapTracker_release(dwMapTrackerHandle_t mapTrackerHandle)
Release map tracker handle.
uint32_t size
current number of valid road segments in the buffer
Definition: Maps.h:743
Group of lane dividers, representing one boundary of a lane.
Definition: Maps.h:456
dwMapsGeoPoint * buffer
pointer to geo point buffer
Definition: Maps.h:661
float32_t minY
Definition: Maps.h:791
dwMapsFeature * buffer
pointer to feature buffer
Definition: Maps.h:731
uint32_t laneCount
number of lanes in this segment
Definition: Maps.h:612
DW_API_PUBLIC dwStatus dwMapsLocalLayout_release(dwMapsLocalLayoutHandle_t localLayoutHandle)
Destroys a local layout object.
DW_API_PUBLIC dwStatus dwMapsLaneTree_getLeafCount(uint32_t *leafCount, dwConstMapsLaneTreeHandle_t laneTree)
dwMapsLaneTree_getLeafCount
uint32_t mergingLaneIndex
index of the connection that connects to the lane on the lane plan.
Definition: Maps.h:1616
Defines a three-element floating-point vector.
Definition: Types.h:319
uint32_t mergingLaneIndex
index of the connection that connects to the lane on the lane plan.
Definition: Maps.h:1631
const dwMapsLane * lanes
pointer to lane array of this segment
Definition: Maps.h:611
DW_API_PUBLIC dwStatus dwMaps_transformRoadFeaturesToLocalLines(dwMapsPolyline3fBuffer *localPolylines, dwMapsPointBuffer *localPoints, const dwMapsFeatureBuffer *features, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33, const dwMapsLocalBounds *localBounds, dwConstMapsLocalLayoutHandle_t localLayoutHandle, uint32_t componentId)
Get polylines and points from the list of specified features, transformed into a local cartesian coor...
DW_API_PUBLIC dwStatus dwMaps_transformLaneDividersToLocalLines(dwMapsLaneDividerLineBuffer *lineSegments, const dwMapsLaneDividerBuffer *laneDividers, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33, const dwMapsLocalBounds *localBounds, const dwVector3f *directionFilterVector, float32_t directionFilterAngleRadian, bool ignoreLaneDirection, dwConstMapsLocalLayoutHandle_t localLayoutHandle, uint32_t componentId)
Get line segments from the list of specified dividers, transformed into a local cartesian coordinate ...
Basic lane informatin.
Definition: Maps.h:491
uint32_t maxSize
maximum number of nodes that fit into the buffer
Definition: Maps.h:2214
const dwMapsRoadSegmentConnection * next
pointer to road segment connections at segment end
Definition: Maps.h:623
uint32_t size
current number of valid booleans in the buffer
Definition: Maps.h:763
User provided buffer of dwMapsLines.
Definition: Maps.h:709
uint32_t maxSize
maximum number of lanes that fit into the buffer
Definition: Maps.h:692
Lane Tree Node.
Definition: Maps.h:2199
Geographic coordinate bounds.
Definition: Location.h:61
DW_API_PUBLIC dwStatus dwMapsLocalLayout_getComponentRoot(const dwMapsRoadSegment **segment, uint32_t componentId, dwConstMapsLocalLayoutHandle_t localLayoutHandle)
Returns the root segment of the specified connected component.
uint32_t size
current number of valid features in the buffer
Definition: Maps.h:733
dwMapsLaneType type
lane type
Definition: Maps.h:516
DW_API_PUBLIC dwStatus dwMaps_computeLocalToLocalTransform(dwTransformation3f *transform, const dwMapsGeoPoint *originSource, const dwMatrix3d *localToENURotationSource, const dwMapsGeoPoint *originTarget, const dwMatrix3d *localToENURotationTarget)
Compute transform (translation and rotation) that changes a 3d point from one coordinate system to an...
dwMapsColor color
lane divider color
Definition: Maps.h:430
dwMapsLaneTreeLimit
Enum to select the lane tree limit type.
Definition: Maps.h:2188
dwMapsLaneDividerGroupId id
globally unique id of the group
Definition: Maps.h:458
dwMapsDirection drivingDirection
driving direction compared to geometry polyline direction (which is also the road segment orientation...
Definition: Maps.h:517
uint32_t laneCount
The number of lanes in this group.
Definition: Maps.h:474
DW_API_PUBLIC dwStatus dwMaps_computeDistance(float64_t *distance, const dwMapsGeoPoint *p1, const dwMapsGeoPoint *p2)
Compute Euclidean distance between two points.
Globally unique identifier for lanes.
Definition: Maps.h:336
DW_API_PUBLIC dwStatus dwMaps_transformRoadFeaturesToLocalSpace(dwMapsPolyline3fBuffer *localPolylines, dwMapsPointBuffer *pointBuffer, const dwMapsFeatureBuffer *features, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33, const dwMapsLocalBounds *localBounds)
Get geometry from the list of specified road features, transformed into a local cartesian coordinate ...
crosswalk type feature
Definition: Maps.h:245
uint32_t type
type of a feature
Definition: Maps.h:565
dwMapsGeoPoint origin
origin of segment&#39;s ENU coordinate frame.
Definition: Maps.h:605
dwMapsHDCompliance hdCompliance
hd compliance of contents
Definition: Maps.h:608
User provided buffer of dwVector3f.
Definition: Maps.h:669
const dwMapsRoadSegment ** buffer
pointer to road segment pointer buffer
Definition: Maps.h:751
Defines a graph connection to an adjacent road segment.
Definition: Maps.h:385
NVIDIA DriveWorks API: Core Methods
struct dwMapObject * dwMapHandle_t
Definition: Maps.h:68
User provided buffer of dwMapsGeoPoint.
Definition: Maps.h:659
uint32_t mergingLaneCount
number of merging lanes
Definition: Maps.h:1630
DW_API_PUBLIC dwStatus dwMaps_getFeatures(dwMapsFeatureBuffer *features, uint32_t typeFilter, const dwMapsBounds *bounds, dwConstMapHandle_t mapHandle)
Get features within bounds.
Lane merge on a lane plan.
Definition: Maps.h:1627
uint32_t featureCount
number of features in this segment
Definition: Maps.h:621
float32_t confidence
Definition: Maps.h:641
dwMapsMaterial material
lane divider material
Definition: Maps.h:429
uint32_t maxSize
maximum number of points that fit into the buffer
Definition: Maps.h:672
DW_API_PUBLIC dwStatus dwMapTracker_updateWithLocalPose(const dwMapsRoadSegment *referenceRoadSegment, const dwVector3f *position, const dwMatrix3d *localToENURotation33, dwTime_t timestamp, bool reset, dwMapTrackerHandle_t mapTrackerHandle)
dwMapTracker_updateWithLocalPose
const dwMapsLaneDivider * laneDividers
pointer to lane divider array
Definition: Maps.h:460
bool * buffer
pointer to bool buffer
Definition: Maps.h:761
double float64_t
Definition: Types.h:71
dwMapsRoadSegmentType
Road segment types.
Definition: Maps.h:205
Represents a geometric connection to another lane in the map.
Definition: Maps.h:371
arrow feature, eg, left turn arrow, etc
Definition: Maps.h:247
Specifies a 3D rigid transformation.
Definition: Types.h:462
dwMapsTrafficSignalState
Bitmask to specify the state of a traffic signal.
Definition: Maps.h:287
uint32_t size
current number of valid points in the buffer
Definition: Maps.h:673
DW_API_PUBLIC dwStatus dwMaps_getLaneDividerGroup(const dwMapsLaneDividerGroup **laneDividerGroup, const dwMapsLaneDividerGroupId *id, dwConstMapHandle_t mapHandle)
Get a lane divider group queried by a lane divider group id.
dwMapsDirection drivingDirection
driving direction compared to geometry polyline direction (which is also the road segment orientation...
Definition: Maps.h:495
dwMapsLaneId id
globally unique id of the lane
Definition: Maps.h:514
DW_API_PUBLIC dwStatus dwMaps_getNextLaneSplitAtLocalPose(dwMapsLaneSplitDetails *laneSplit, float32_t *laneSplitDistance, const dwMapsLane *currentLane, float32_t maxSearchDistance, const dwMapsRoadSegment *referenceRoadSegment, const dwVector3f *position, const dwMatrix3d *localToENURotation33)
Get next lane split.
exit line type feature
Definition: Maps.h:249
line type feature
Definition: Maps.h:241
uint64_t id
unique id of a feature
Definition: Maps.h:564
dwMapsLaneId id
globally unique id of the lane
Definition: Maps.h:493
DW_API_PUBLIC dwStatus dwMaps_getPointAhead(dwMapsGeoPoint *pointAhead, const dwMapsGeoPoint *position, const dwMatrix3d *localToENURotation33, float32_t distance)
Get wgs84 point moving forward from a position.
DW_API_PUBLIC dwStatus dwMaps_resamplePolyline(dwMapsGeoPointBuffer *result, const dwMapsGeoPolyline *polyline, float32_t stepSize)
Resample a polyline of WGS84 points to a polyline with fixed step size.
uint32_t laneGroupCount
lane group count
Definition: Maps.h:615
DW_API_PUBLIC dwStatus dwMapsLaneTree_getLaneListToLeaf(dwMapsLaneBuffer *laneBuffer, uint32_t leafIndex, dwConstMapsLaneTreeHandle_t laneTree)
Get the list of lanes that connect the root lane to a leaf.
uint32_t maxSize
maximum number of lanes that fit into the buffer
Definition: Maps.h:702
uint32_t maxSize
maximum number of points that fit into the buffer
Definition: Maps.h:662
uint32_t size
current number of valid lanes in the buffer
Definition: Maps.h:693
uint32_t maxSize
maximum number of features that fit into the buffer
Definition: Maps.h:732
dwStatus
Status definition.
Definition: Status.h:178
DW_API_PUBLIC dwStatus dwMaps_computeBearingFromGeoPoints(float64_t *bearingRadian, const dwMapsGeoPoint *position, const dwMapsGeoPoint *headingPoint)
Compute bearing in radian from two points.
User provided buffer of dwMapsRoadSegments.
Definition: Maps.h:739
float32_t threshold
Definition: Maps.h:642
DW_API_PUBLIC dwStatus dwMaps_computeBounds(dwMapsBounds *bounds, const dwMapsGeoPoint *p, float32_t radiusMeter)
Compute WGS84 query bounds from position and radius in meters.
dwMapsLaneDividerType type
lane divider type
Definition: Maps.h:428
symbol type feature, eg, car pool symbol, etc
Definition: Maps.h:246
uint32_t splitCount
number of lanes emerging from the lane before the split
Definition: Maps.h:1590
DW_API_PUBLIC dwStatus dwMapsLaneTree_get(dwMapsLaneTreeNode **root, dwMapsLaneTreeNodeBuffer *laneTreeNodes, dwConstMapsLaneTreeHandle_t laneTree)
Get the created lane tree.
DW_API_PUBLIC dwStatus dwMapTracker_getCurrentLane(const dwMapsLane **currentLane, dwConstMapTrackerHandle_t mapTrackerHandle)
Get current lane that has been evaluated in the last update.
uint32_t maxSize
maximum number of road segments that fit into the buffer
Definition: Maps.h:742
dwMapsLaneEventType
Lane event type indicates whether the next lane event is a lane split, a lane merge, or both.
Definition: Maps.h:1553
const dwMapsLane *const * lanes
The lanes in this group from left to right.
Definition: Maps.h:475
Location point defined by WGS84 coordinates.
Definition: Types.h:575
dwMapsSide
Enum for sides.
Definition: Maps.h:257
dwMapsRoadSegment * buffer
pointer to road segment buffer
Definition: Maps.h:741
Lane merge on a lane plan.
Definition: Maps.h:1608
const dwMapsRoadSegment * roadSegment
parent road segment
Definition: Maps.h:485
dwPolyline3f * buffer
pointer to polyline buffer
Definition: Maps.h:681
#define DW_MAPS_MAX_LANE_CONNECTIONS
Definition: Maps.h:361
exit type feature
Definition: Maps.h:244
DW_API_PUBLIC dwStatus dwMaps_getLaneChange(dwMapsSide *laneChangeSide, uint32_t *laneChangeCount, float32_t *laneChangeLength, const dwMapsLane *srcLane, const dwMapsLane *targetLane)
Check if there&#39;s a valid lane change from one lane to another on the same road segment.
struct dwMapsLaneWaitGroup dwMapsLaneWaitGroup
Definition: Maps.h:84
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
dwMapsMaterial
Material type values.
Definition: Maps.h:100
const dwMapsLane * lane
pointer to the connected lane.
Definition: Maps.h:374
dwMapsLaneGeometry
Enum for selection of lane geometry.
Definition: Maps.h:268
The maps confidence in an element.
Definition: Maps.h:639
User provided buffer of dwMapsFeatures.
Definition: Maps.h:729
#define DW_DEPRECATED(msg)
Definition: Exports.h:68
const dwMapsLaneGroup * laneGroups
pointer to array of lane groups in this segment
Definition: Maps.h:614
DW_API_PUBLIC dwStatus dwMapsLocalLayout_addRoadSegments(const dwMapsRoadSegment *segments, uint32_t count, dwMapsLocalLayoutHandle_t localLayoutHandle)
Add road segments to the layout.
DW_API_PUBLIC dwStatus dwMaps_transformPointReverse(dwMapsGeoPoint *transformedPoint, const dwVector3f *point, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33)
Transform a point in a local coordinate system defined by position &#39;localOrigin&#39; and rotation matrix ...
float32_t minX
Definition: Maps.h:790
DW_API_PUBLIC dwStatus dwMapsLocalLayout_getComponentCount(uint32_t *componentCount, dwConstMapsLocalLayoutHandle_t localLayoutHandle)
Returns the number of connected components discovered while building the layout.
dwMapsLaneTreeNode * buffer
pointer to node buffer
Definition: Maps.h:2213
dwMapsFeatureType
Feature types.
Definition: Maps.h:223
DW_API_PUBLIC dwStatus dwMapsLocalLayout_reset(dwMapsLocalLayoutHandle_t localLayoutHandle)
Clear out previously added road segments.
struct dwMapTrackerObject const * dwConstMapTrackerHandle_t
Definition: Maps.h:2032
Globally unique identifier for road segments.
Definition: Maps.h:344
DW_API_PUBLIC dwStatus dwMapsLocalLayout_addRoadSegmentPointers(const dwMapsRoadSegment **segmentPointers, uint32_t count, dwMapsLocalLayoutHandle_t localLayoutHandle)
Add road segment pointers to the layout.
dwVector3f * buffer
pointer to point buffer
Definition: Maps.h:671
DW_API_PUBLIC dwStatus dwMapsLocalLayout_getSegmentPose(dwMapsLocalLayoutSegmentPose *pose, const dwMapsRoadSegmentId *segmentId, dwConstMapsLocalLayoutHandle_t localLayoutHandle)
Provides information about road segment pose relative to layout component root.
Lane divider line defined by two points and the owner of a line.
Definition: Maps.h:443
dwGeoPoint dwMapsGeoPoint
Point defined by WGS84 coordinates.
Definition: Maps.h:404
uint32_t size
current number of valid nodes in the buffer
Definition: Maps.h:2215
struct dwMapsLaneTreeObject * dwMapsLaneTreeHandle_t
Definition: Maps.h:2181
Defines a 3x3 matrix of double floating point numbers.
Definition: Types.h:250
Defines a 3x3 matrix of floating point numbers.
Definition: Types.h:237
DW_API_PUBLIC dwStatus dwMaps_transformPoint(dwVector3f *transformedPoint, const dwMapsGeoPoint *point, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33)
Transform a WGS84 point into a point in a local coordinate system defined by position &#39;localOrigin&#39; a...
DW_API_PUBLIC dwStatus dwMaps_interpolatePolylines(uint32_t *srcStartIndex, uint32_t *targetEndIndex, dwMapsGeoPointBuffer *interpolatedPoints, const dwMapsGeoPoint *srcPoints, uint32_t srcPointCount, const dwMapsGeoPoint *targetPoints, uint32_t targetPointCount, float32_t start, float32_t end, float32_t stepSize, float32_t(*interpolationFn)(float32_t, void *), void *interpolationFnContext)
Interpolate between 2 polylines.
User provided buffer of dwMapsLaneDividers.
Definition: Maps.h:719
DW_API_PUBLIC dwStatus dwMaps_getLane(const dwMapsLane **lane, const dwMapsLaneId *id, dwConstMapHandle_t mapHandle)
Get a lane queried by a lane id.
dwTransformation3f segmentToRoot
Definition: Maps.h:2383
dwMapsSerializationFormat
Serialization formats.
Definition: Maps.h:862
const dwMapsLane ** buffer
pointer to lane buffer
Definition: Maps.h:701
struct dwMapsLocalLayoutObject * dwMapsLocalLayoutHandle_t
Definition: Maps.h:71
DW_API_PUBLIC dwStatus dwMaps_transformFeaturesToLocalLinesViaRelative(dwMapsPolyline3fBuffer *featureLineSegments, dwMapsPointBuffer *featurePoints, const dwMapsFeatureBuffer *dwFeatures, const dwMatrix3f rotationLayoutRootToLocal, const dwVector3f translationLayoutRootToLocal, const dwMapsLocalBounds *localBounds, dwConstMapsLocalLayoutHandle_t localLayoutHandle, uint32_t componentId)
Get featureLineSegments and featurePoints from the list of specified dwFeatures, transformed into the...
DW_API_PUBLIC dwStatus dwMapTracker_getCurrentCandidateLanes(dwMapsLaneBuffer *lanes, dwConstMapTrackerHandle_t mapTrackerHandle)
Get current lane candidates that have been used to find the current lane.
float32_t maxX
Definition: Maps.h:793
uint32_t size
current number of valid points in the buffer
Definition: Maps.h:663
Provides information about road segment pose relative to layout component root.
Definition: Maps.h:2379
DW_API_PUBLIC dwStatus dwMaps_getLaneChangeAtGlobalPose(dwMapsSide *laneChangeSide, uint32_t *laneChangeCount, float32_t *laneChangeLength, const dwMapsLane *srcLane, const dwMapsLane *targetLane, const dwMapsGeoPoint *position, const dwMatrix3d *localToENURotation33)
Check if there&#39;s a valid lane change from one lane to another on the same road segment.
DW_API_PUBLIC dwStatus dwMaps_getClosestLaneFromGeoPoint(const dwMapsLane **closestLane, dwMapsGeoPoint *closestPoint, const dwMapsGeoPoint *p, bool onlyDrivable, bool ignoreHeight, float32_t maxRadius, dwConstMapHandle_t mapHandle)
Get closest lane in the map to a global gps point.
DW_API_PUBLIC dwStatus dwMaps_transformPolylinesReverse(dwMapsGeoPointBuffer *transformedPoints, const dwPolyline3f *polylines, uint32_t polylineCount, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33)
Transform local space polylines into WGS84 point polylines.
uint32_t laneDividerCount
number of lane dividers in group
Definition: Maps.h:461
DW_API_PUBLIC dwStatus dwMapsLaneTree_getLaneCount(uint32_t *laneCount, dwConstMapsLaneTreeHandle_t laneTree)
Get total number of lanes in the lane tree.
uint32_t pointCount
number of points defining the polyline
Definition: Maps.h:420
const dwMapsLane * lane
lane
Definition: Maps.h:2201
DW_API_PUBLIC dwStatus dwMapsLaneTree_getLanes(dwMapsLaneBuffer *laneBuffer, dwConstMapsLaneTreeHandle_t laneTree)
Get all lanes in lane tree.
dwMapsLaneDividerType
Lane divider type and filter values.
Definition: Maps.h:133
DW_API_PUBLIC dwStatus dwMapsLaneTree_create(const dwMapsLane *lane, float32_t limit, dwMapsLaneTreeLimit limitType, bool doLaneChanges, bool forward, bool relativeToDrivingDirection, dwMapsLaneTreeHandle_t laneTree)
Create a lane tree starting at a given lane.
float32_t maxZ
Definition: Maps.h:795
uint64_t dwMapsFeatureId
Definition: Maps.h:466
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:80
uint32_t childrenCount
size of children node array
Definition: Maps.h:2205
dwMapsLaneType
Lane types.
Definition: Maps.h:165
const dwMapsLaneDivider * divider
owner of a line
Definition: Maps.h:446
DW_API_PUBLIC dwStatus dwMapsLocalLayout_initialize(dwMapsLocalLayoutHandle_t *localLayoutHandle, uint32_t maxRoadSegments, uint32_t maxComponents)
Creates a local map layout object, which provides locally-accurate relative poses of road segments...
User provided buffer of dwMapsLaneTreeNode.
Definition: Maps.h:2211
entry line type Feature
Definition: Maps.h:248
DW_API_PUBLIC dwStatus dwMaps_computeRotationFromLocalPoints(dwMatrix3d *localToENURotation33, const dwVector3f *position, const dwVector3f *headingPoint)
Compute orientation matrix from two local points in an ENU space.
DW_API_PUBLIC dwStatus dwMaps_computeBoundsSize(float32_t *width, float32_t *height, const dwMapsBounds *bounds)
Compute width and height of bounds in meters.
DW_API_PUBLIC dwStatus dwMaps_getClosestLaneOnRoadSegment(const dwMapsLane **closestLane, dwVector3f *closestPoint, const dwMapsRoadSegment *referenceRoadSegment, const dwVector3f *position, bool onlyDrivable)
Get closest lane on a road segment, given a position in coordinates of the same road segment...
struct dwMapObject const * dwConstMapHandle_t
Definition: Maps.h:69
unknown and default type
Definition: Maps.h:240
uint32_t nextCount
number of segment connections at segment end
Definition: Maps.h:624
dwMapsLaneDividerLine * buffer
pointer to line buffer
Definition: Maps.h:711
dwMapsRoadMarkingType
Subtypes of DW_MAPS_FEATURE_ROAD_MARKING.
Definition: Maps.h:239
uint32_t maxSize
maximum number of booleans that can fit into the buffer
Definition: Maps.h:762
DW_API_PUBLIC dwStatus dwMaps_getRoadSegment(const dwMapsRoadSegment **roadSegment, const dwMapsRoadSegmentId *id, dwConstMapHandle_t mapHandle)
Get a road segment queried by a road segment id.
dwMapsLaneTraversability
Definition: Maps.h:306
Globally unique identifier for lane divider groups.
Definition: Maps.h:328
DW_API_PUBLIC dwStatus dwMaps_release(dwMapHandle_t mapHandle)
Release map handle.
DW_API_PUBLIC dwStatus dwMaps_getRoadSegmentPointers(dwMapsRoadSegmentPointerBuffer *roadSegmentPointers, const dwMapsBounds *bounds, dwConstMapHandle_t mapHandle)
Get pointers to road segments within bounds.
Identifier for general map elements.
Definition: Maps.h:352
DW_API_PUBLIC dwStatus dwMaps_getClosestLaneFromLocalPoint(const dwMapsLane **closestLane, dwVector3f *closestPoint, const dwMapsRoadSegment *referenceRoadSegment, const dwVector3f *position, bool onlyDrivable, float32_t maxRadius, dwConstMapHandle_t mapHandle)
Get closest lane in the map to a point in a local coordinate of a road segment.
dwMapsLaneId laneId
id of the connected lane.
Definition: Maps.h:373
User provided buffer of dwMapsLane.
Definition: Maps.h:689
const dwMapsRoadSegment * segment
pointer to the connected road segment.
Definition: Maps.h:388
NVIDIA DriveWorks API: Core Exports
float32_t maxY
Definition: Maps.h:794
Local coordinate bounds.
Definition: Maps.h:788
uint32_t size
current number of valid polylines in the buffer
Definition: Maps.h:683
struct dwMapsLocalLayoutObject const * dwConstMapsLocalLayoutHandle_t
Definition: Maps.h:72
uint32_t type
road segment type. this can be a bitwise combination of dwMapsRoadSegmentType.
Definition: Maps.h:603
Lane divider defined by a polyline, with type, material and color information.
Definition: Maps.h:426
DW_API_PUBLIC dwStatus dwMaps_getNextLaneEvent(dwMapsLaneEventType *type, dwMapsLaneSplitDetails *laneSplit, dwMapsLaneMergeDetails *laneMerge, float32_t *nextEventDist, const dwMapsLane *currentLane, const bool *forwardOnPolyline, float32_t maxDistance)
Get the next lane split and/or lane merge.
DW_API_PUBLIC dwStatus dwMaps_computeRotationFromBearing(dwMatrix3d *localToENURotation33, float32_t bearingRadian)
Create a rotation matrix that transfroms from a local coordinate system with x-axis pointing towards ...
DW_API_PUBLIC dwStatus dwMaps_stitchLaneGeometry(dwMapsPointBuffer *polyline, dwMapsLanePtrBuffer *perPointLanes, const dwMapsLane *lanes, uint32_t laneCount, dwMapsLaneGeometry geometrySelection)
Stitches the polylines of a list of lanes into a single polyline.
DW_API_PUBLIC dwStatus dwMaps_getConnectedToLocal(dwTransformation3f *connectedToLocal, const dwMapsLane *localLane, const dwMapsLane *connectedLane)
Get coordinate transform to transform a point in connectedLane&#39;s coordinate system into the localLane...
DW_API_PUBLIC dwStatus dwMaps_getNextLaneSplitAtGlobalPose(dwMapsLaneSplitDetails *laneSplit, float32_t *laneSplitDistance, const dwMapsLane *currentLane, float32_t maxSearchDistance, const dwMapsGeoPoint *position, const dwMatrix3d *localToENURotation33)
Get next lane split.
uint32_t size
current number of valid road segment pointers in the buffer
Definition: Maps.h:753
Lane split on a lane plan.
Definition: Maps.h:1587
const dwMapsRoadSegment * componentRoot
Definition: Maps.h:2382
uint32_t maxSize
maximum number of lines that fit into the buffer
Definition: Maps.h:712
uint32_t size
current number of valid lines in the buffer
Definition: Maps.h:713
A group of neighboring lanes and their traversability.
Definition: Maps.h:472
DW_API_PUBLIC dwStatus dwMaps_getLaneDividers(dwMapsLaneDividerBuffer *laneDividers, uint32_t typeFilter, const dwMapsBounds *bounds, dwConstMapHandle_t mapHandle)
Get lane dividers within bounds.
uint32_t maxSize
maximum number of polylines that fit into the buffer
Definition: Maps.h:682
uint32_t size
current number of valid lane dividers in the buffer
Definition: Maps.h:723
DW_API_PUBLIC dwStatus dwMaps_computeRotationFromGeoPoints(dwMatrix3d *localToENURotation33, const dwMapsGeoPoint *position, const dwMapsGeoPoint *headingPoint)
Compute orientation matrix from two WGS84 points.
Line defined by 2 points in user defined coordinates.
Definition: Maps.h:409
const dwMapsFeature * features
pointer to features of this segment
Definition: Maps.h:620
struct dwMapsLaneTreeObject const * dwConstMapsLaneTreeHandle_t
Definition: Maps.h:2182
NVIDIA DriveWorks API: Location
Lane split on a lane plan.
Definition: Maps.h:1563
dwMapsRoadSegmentId id
globally unique id of the road segment
Definition: Maps.h:601
float32_t minZ
Definition: Maps.h:792
DW_API_PUBLIC dwStatus dwMapsLaneTree_initialize(dwMapsLaneTreeHandle_t *laneTreeHandle, uint32_t maxLaneCount, dwConstMapHandle_t map)
Creates a lane tree object that allows to create a tree of connected lanes.
const dwMapsLane * laneBeforeSplit
lane that splits
Definition: Maps.h:1565
exit area type feature
Definition: Maps.h:251
DW_API_PUBLIC dwStatus dwMaps_getBounds(dwMapsBounds *bounds, dwConstMapHandle_t mapHandle)
Get bounds of map data currently in memory.
uint32_t dwMapsLaneTraversabilityMask
A mask composed of traversability information from enum dwMapsLaneTraversability. ...
Definition: Maps.h:320
DW_API_PUBLIC dwStatus dwMaps_initialize(dwMapHandle_t *mapHandle, const char *filename, dwContextHandle_t contextHandle)
Creates a map handle and initializes the map data by deserializing a driveworks maps file...
const dwMapsGeoPoint * points
pointer to polyline point array
Definition: Maps.h:419
#define DW_API_PUBLIC
Definition: Exports.h:56
dwMapsColor
Colors.
Definition: Maps.h:115
dwMapsLaneDivider * buffer
pointer to lane divider buffer
Definition: Maps.h:721
DW_API_PUBLIC dwStatus dwMapTracker_updateWithGlobalPose(const dwMapsGeoPoint *position, const dwMatrix3d *localToENURotation33, dwTime_t timestamp, bool ignoreHeight, bool reset, dwMapTrackerHandle_t mapTrackerHandle)
Update the tracker with the current pose defined by a WGS84 point and a rotation matrix.
entry type feature
Definition: Maps.h:243
dwMapsLane * buffer
pointer to lane buffer
Definition: Maps.h:691
DW_API_PUBLIC dwStatus dwMaps_transformPolylines(dwMapsPointBuffer *transformedPoints, const dwMapsGeoPolyline *polylines, uint32_t polylineCount, const dwMapsGeoPoint *localOrigin, const dwMatrix3d *localToENURotation33)
Transform polylines into points in a local coordinate system defined by position &#39;localOrigin&#39; and ro...
DW_API_PUBLIC dwStatus dwMaps_closestPointOnPolyline(dwMapsGeoPoint *closestPoint, float64_t *distanceMeters, uint32_t *lineSegmentIndex, const dwMapsGeoPoint *p, const dwMapsGeoPolyline *polyline, bool ignoreHeight)
Find closest point on a polyline of WGS84 points.
dwMapsLaneTreeNode * children
children node array
Definition: Maps.h:2204
DW_API_PUBLIC dwStatus dwMaps_getLaneChangeAtLocalPose(dwMapsSide *laneChangeSide, uint32_t *laneChangeCount, float32_t *laneChangeLength, const dwMapsLane *srcLane, const dwMapsLane *targetLane, const dwMapsRoadSegment *referenceRoadSegment, const dwVector3f *position, const dwMatrix3d *localToENURotation33)
Check if there&#39;s a valid lane change from one lane to another on the same road segment.
NVIDIA DriveWorks API: Core Status Methods
Road Segment represents an atomic element of the core layer of a Map.
Definition: Maps.h:599
User provided buffer of dwMapsRoadSegment pointers.
Definition: Maps.h:749
const dwMapsRoadSegmentConnection * previous
pointer to road segment connections at segment start
Definition: Maps.h:626
DW_API_PUBLIC dwStatus dwMaps_isConnectionDrivable(bool *isDrivable, const dwMapsLane *lane, const dwMapsLaneConnection *connection)
Check whether it is possible/allowed to drive from the given onto the given connection.
User provided buffer of dwMapsLane pointers.
Definition: Maps.h:699
uint32_t maxSize
maximum number of road segment pointers that fit into the buffer
Definition: Maps.h:752
entry area type Feature
Definition: Maps.h:250
dwMapsDirection
Direction compared to geometry (polyline order).
Definition: Maps.h:195
float32_t variance
Definition: Maps.h:643
dwMapsHDCompliance
Enum for road segment hd compliance.
Definition: Maps.h:277
const dwMapsLane * laneAfterMerge
lane into which the lanes merge
Definition: Maps.h:1610
dwMapsLaneType type
lane type
Definition: Maps.h:494
dwMapsLaneTreeNode * parent
parent node
Definition: Maps.h:2203