:8.414MB : :1 :2022-10-11 15:16:53
高精地图-车道级对象模型-Lanelet实现如果开发者对于本文件有需要的可以参考。
高精地图-车道级对象模型-Lanelet实现
Lanelet2 is a C library for handling map data in the context of automated driving. It is designed to utilize high-definition map data in order to efficiently handle the challenges posed to a vehicle in complex traffic scenarios. Flexibility and extensibility are some of the core principles to handle the upcoming challenges of future maps.
Features:
2D and 3D support
Consistent modification: if one point is modified, all owning objects see the change
Supports lane changes, routing through areas, etc.
Separated routing for pedestrians, vehicles, bikes, etc.
Many customization points to add new traffic rules, routing costs, parsers, etc.
Simple convenience functions for common tasks when handling maps
Accurate Projection between the lat/lon geographic world and local metric coordinates
IO Interface for reading and writing e.g. osm data formats (this does not mean it can deal with osm maps)
Python bindings for the whole C interface
Boost Geometry support for all thinkable kinds of geometry calculations on map primitives
Released under the BSD 3-Clause license
Support for ROS1, ROS2, Docker and Conan (see instructions below)
.
└── Lanelet2
├── CODEOWNERS
├── Dockerfile
├── LICENSE
├── README.md
├── conanfile.py
├── lanelet2
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── clang-tidy-fixes.yaml
│ ├── codeclimate.json
│ └── package.xml
├── lanelet2_core
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── doc
│ │ ├── Architecture.md
│ │ ├── GeometryPrimer.md
│ │ ├── Lanelet1Compability.md
│ │ ├── LaneletAndAreaTagging.md
│ │ ├── LaneletPrimitives.md
│ │ ├── LinestringTagging.md
│ │ ├── RegulatoryElementTagging.md
│ │ └── images
│ │ ├── architecture.png
│ │ ├── area.png
│ │ ├── lanelet.png
│ │ ├── lanelet2_example_image.png
│ │ ├── linestring.png
│ │ ├── max_hose_problem_small.png
│ │ └── regulatory_element.png
│ ├── example
│ │ └── api_style_example.cpp
│ ├── include
│ │ └── lanelet2_core
│ │ ├── Attribute.h
│ │ ├── Exceptions.h
│ │ ├── Forward.h
│ │ ├── LaneletMap.h
│ │ ├── geometry
│ │ │ ├── Area.h
│ │ │ ├── BoundingBox.h
│ │ │ ├── GeometryHelper.h
│ │ │ ├── Lanelet.h
│ │ │ ├── LaneletMap.h
│ │ │ ├── LineString.h
│ │ │ ├── Point.h
│ │ │ ├── Polygon.h
│ │ │ ├── RegulatoryElement.h
│ │ │ └── impl
│ │ │ ├── Area.h
│ │ │ ├── Lanelet.h
│ │ │ ├── LaneletMap.h
│ │ │ ├── LineString.h
│ │ │ └── Polygon.h
│ │ ├── primitives
│ │ │ ├── Area.h
│ │ │ ├── BasicRegulatoryElements.h
│ │ │ ├── BoundingBox.h
│ │ │ ├── CompoundLineString.h
│ │ │ ├── CompoundPolygon.h
│ │ │ ├── GPSPoint.h
│ │ │ ├── Lanelet.h
│ │ │ ├── LaneletOrArea.h
│ │ │ ├── LaneletSequence.h
│ │ │ ├── LineString.h
│ │ │ ├── LineStringOrPolygon.h
│ │ │ ├── Point.h
│ │ │ ├── Polygon.h
│ │ │ ├── Primitive.h
│ │ │ ├── RegulatoryElement.h
│ │ │ └── Traits.h
│ │ └── utility
│ │ ├── CompoundIterator.h
│ │ ├── HybridMap.h
│ │ ├── Optional.h
│ │ ├── ReverseAndForwardIterator.h
│ │ ├── TransformIterator.h
│ │ ├── Units.h
│ │ └── Utilities.h
│ ├── package.xml
│ ├── res
│ │ ├── lanelet_gdb.py
│ │ └── qtcreator_debugging_helpers.py
│ ├── src
│ │ ├── Attribute.cpp
│ │ ├── BasicRegulatoryElements.cpp
│ │ ├── Lanelet.cpp
│ │ ├── LaneletMap.cpp
│ │ ├── LaneletSequence.cpp
│ │ ├── LineStringGeometry.cpp
│ │ ├── PolygonTriangulationGeometry.cpp
│ │ ├── RegulatoryElement.cpp
│ │ └── RegulatoryElementGeometry.cpp
│ └── test
│ ├── lanelet_map_test_case.h
│ ├── test_area.cpp
│ ├── test_attribute.cpp
│ ├── test_lanelet.cpp
│ ├── test_lanelet_map.cpp
│ ├── test_lanelet_map_geometry.cpp
│ ├── test_lanelet_or_area.cpp
│ ├── test_lanelet_sequence.cpp
│ ├── test_linestring.cpp
│ ├── test_point.cpp
│ ├── test_polygon.cpp
│ └── test_regulatory_element.cpp
├── lanelet2_examples
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── custom.cmake
│ ├── include
│ │ └── lanelet2_examples
│ │ └── internal
│ │ └── ExampleHelpers.h
│ ├── package.xml
│ ├── scripts
│ │ └── tutorial.py
│ ├── src
│ │ ├── 01_dealing_with_lanelet_primitives
│ │ │ └── main.cpp
│ │ ├── 02_regulatory_elements
│ │ │ └── main.cpp
│ │ ├── 03_lanelet_map
│ │ │ └── main.cpp
│ │ ├── 04_reading_and_writing
│ │ │ └── main.cpp
│ │ ├── 05_traffic_rules
│ │ │ └── main.cpp
│ │ └── 06_routing
│ │ └── main.cpp
│ └── test
│ └── test_examples.py
├── lanelet2_io
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── include
│ │ └── lanelet2_io
│ │ ├── Configuration.h
│ │ ├── Exceptions.h
│ │ ├── Io.h
│ │ ├── Projection.h
│ │ ├── internal
│ │ └── io_handlers
│ │ ├── BinHandler.h
│ │ ├── Factory.h
│ │ ├── IoHandler.h
│ │ ├── OsmFile.h
│ │ ├── OsmHandler.h
│ │ ├── Parser.h
│ │ ├── Serialize.h
│ │ └── Writer.h
│ ├── package.xml
│ ├── src
│ │ ├── BinHandler.cpp
│ │ ├── Factory.cpp
│ │ ├── Io.cpp
│ │ ├── OsmFile.cpp
│ │ ├── OsmHandlerLoad.cpp
│ │ └── OsmHandlerWrite.cpp
│ └── test
│ ├── TestBinHandler.cpp
│ ├── TestLanelet2Io.cpp
│ ├── TestOsmFile.cpp
│ ├── TestOsmHandler.cpp
│ ├── TestSetup.h
│ └── TestSimpleUsage.cpp
├── lanelet2_maps
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── include
│ │ └── lanelet2_maps
│ │ └── internal
│ ├── josm
│ │ ├── laneletpresets.xml
│ │ ├── lanelets.mapcss
│ │ ├── lines.mapcss
│ │ └── style_images.zip
│ ├── package.xml
│ └── res
│ ├── mapping_example-debug.osm
│ └── mapping_example.osm
├── lanelet2_matching
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── custom.cmake
│ ├── include
│ │ └── lanelet2_matching
│ │ ├── Exceptions.h
│ │ ├── LaneletMatching.h
│ │ ├── Types.h
│ │ ├── Utilities.h
│ │ └── internal
│ ├── package.xml
│ ├── src
│ │ ├── LaneletMatching.cpp
│ │ └── Utilities.cpp
│ └── test
│ ├── lanelet2_matching.cpp
│ ├── lanelet2_matching_integration.cpp
│ └── mapping_example.osm
├── lanelet2_projection
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── doc
│ │ └── Map_Projections_Coordinate_Systems.md
│ ├── include
│ │ └── lanelet2_projection
│ │ ├── Mercator.h
│ │ ├── UTM.h
│ │ └── internal
│ ├── package.xml
│ ├── src
│ │ └── UTM.cpp
│ └── test
│ ├── test_Mercator.cpp
│ └── test_UTM.cpp
├── lanelet2_python
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── include
│ │ └── lanelet2_python
│ │ └── internal
│ │ └── converter.h
│ ├── package.xml
│ ├── python_api
│ │ ├── core.cpp
│ │ ├── geometry.cpp
│ │ ├── io.cpp
│ │ ├── matching.cpp
│ │ ├── projection.cpp
│ │ ├── routing.cpp
│ │ └── traffic_rules.cpp
│ ├── scripts
│ │ ├── create_debug_routing_graph.py
│ │ ├── make_ids_positive.py
│ │ └── print_ids.py
│ └── test
│ ├── test_lanelet2.py
│ └── test_lanelet2_matching.py
├── lanelet2_routing
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── doc
│ │ ├── images
│ │ │ ├── components.png
│ │ │ ├── components.svg
│ │ │ ├── lanelet_map_route.png
│ │ │ ├── lanelet_map_route.svg
│ │ │ ├── lanelet_map_route_oststadtkreisel_small.jpg
│ │ │ ├── lanelet_map_routing_graph.png
│ │ │ ├── lanelet_map_routing_graph.svg
│ │ │ ├── max-hose.png
│ │ │ ├── max-hose.svg
│ │ │ ├── shortest_path_and_route.png
│ │ │ └── shortest_path_and_route.svg
│ │ └── lanelet2_routing.html
│ ├── include
│ │ └── lanelet2_routing
│ │ ├── Exceptions.h
│ │ ├── Forward.h
│ │ ├── LaneletPath.h
│ │ ├── Route.h
│ │ ├── RoutingCost.h
│ │ ├── RoutingGraph.h
│ │ ├── RoutingGraphContainer.h
│ │ ├── Types.h
│ │ └── internal
│ │ ├── Graph.h
│ │ ├── GraphUtils.h
│ │ ├── RouteBuilder.h
│ │ ├── RoutingGraphBuilder.h
│ │ ├── RoutingGraphVisualization.h
│ │ └── ShortestPath.h
│ ├── package.xml
│ ├── res
│ │ └── routing.mapcss
│ ├── src
│ │ ├── LaneletPath.cpp
│ │ ├── Route.cpp
│ │ ├── RouteBuilder.cpp
│ │ ├── RoutingCost.cpp
│ │ ├── RoutingGraph.cpp
│ │ └── RoutingGraphBuilder.cpp
│ └── test
│ ├── LaneletTestMap.xml
│ ├── test_lanelet_or_area_path.cpp
│ ├── test_relations.cpp
│ ├── test_route.cpp
│ ├── test_routing.cpp
│ ├── test_routing_graph_container.cpp
│ ├── test_routing_map.h
│ └── test_routing_visualization.cpp
├── lanelet2_traffic_rules
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── include
│ │ └── lanelet2_traffic_rules
│ │ ├── Exceptions.h
│ │ ├── GenericTrafficRules.h
│ │ ├── GermanTrafficRules.h
│ │ ├── TrafficRules.h
│ │ ├── TrafficRulesFactory.h
│ │ └── internal
│ ├── package.xml
│ ├── src
│ │ ├── GenericTrafficRules.cpp
│ │ ├── GermanTrafficRules.cpp
│ │ └── TrafficRulesFactory.cpp
│ └── test
│ └── lanelet2_traffic_rules.cpp
├── lanelet2_validation
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── include
│ │ └── lanelet2_validation
│ │ ├── BasicValidator.h
│ │ ├── Cli.h
│ │ ├── Issue.h
│ │ ├── Validation.h
│ │ ├── ValidatorFactory.h
│ │ ├── internal
│ │ └── validators
│ │ ├── mapping
│ │ │ ├── BoolTags.h
│ │ │ ├── CurvatureTooBig.h
│ │ │ ├── DuplicatedPoints.h
│ │ │ ├── MandatoryTags.h
│ │ │ ├── PointsTooClose.h
│ │ │ ├── UnknownTagValue.h
│ │ │ └── UnknownTags.h
│ │ └── routing
│ │ └── RoutingGraphIsValid.h
│ ├── package.xml
│ ├── src
│ │ ├── BasicValidator.cpp
│ │ ├── Cli.cpp
│ │ ├── Validation.cpp
│ │ ├── ValidatorFactory.cpp
│ │ └── validators
│ │ ├── CheckTags.cpp
│ │ ├── CurvatureTooBig.cpp
│ │ ├── DuplicatedPoints.cpp
│ │ ├── PointsTooClose.cpp
│ │ └── RoutingGraphIsValid.cpp
│ ├── test
│ │ └── lanelet2_validation.cpp
│ └── tools
│ └── lanelet2_validate
│ └── main.cpp
└── rosdoc.yaml
88 directories, 272 files