实例介绍
【实例简介】高精地图-车道级对象模型-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
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论