|
1 |
| -# autoware_lanelet2_extension |
2 |
| -Extension library of Lanelet2 |
| 1 | +# lanelet2_extension package |
| 2 | + |
| 3 | +This package contains external library for Lanelet2 and is meant to ease the use of Lanelet2 in Autoware. |
| 4 | + |
| 5 | +## Lanelet Format for Autoware |
| 6 | + |
| 7 | +Autoware uses extended Lanelet2 Format for Autoware, which means you need to add some tags to default OSM file if you want to fully use Lanelet2 maps. For details about custom tags, please refer to this [document](./docs/lanelet2_format_extension.md). |
| 8 | + |
| 9 | +## Code API |
| 10 | + |
| 11 | +### IO |
| 12 | + |
| 13 | +#### Autoware OSM Parser |
| 14 | + |
| 15 | +Autoware Lanelet2 Format uses .osm extension as original Lanelet2. |
| 16 | +However, there are some custom tags that is used by the parser. |
| 17 | + |
| 18 | +Currently, this includes: |
| 19 | + |
| 20 | +- reading `<MapMetaInfo>` tag which contains information about map format version and map version. |
| 21 | + |
| 22 | +The parser is registered as "autoware_osm_handler" as lanelet parser |
| 23 | + |
| 24 | +### Projection |
| 25 | + |
| 26 | +#### MGRS Projector |
| 27 | + |
| 28 | +MGRS projector projects latitude longitude into MGRS Coordinates. |
| 29 | + |
| 30 | +#### Transverse Mercator Projector |
| 31 | + |
| 32 | +This projector projects latitude and longitude into Transverse Mercator coordinate. |
| 33 | +This is similar to [UTM projector](https://github.com/fzi-forschungszentrum-informatik/Lanelet2/blob/master/lanelet2_projection/src/UTM.cpp) in the Lanelet2 library, but uses a custom central meridian on a given origin. |
| 34 | + |
| 35 | +### Regulatory Elements |
| 36 | + |
| 37 | +#### Autoware Traffic Light |
| 38 | + |
| 39 | +Autoware Traffic Light class allows you to retrieve information about traffic lights. |
| 40 | +Autoware Traffic Light class contains following members: |
| 41 | + |
| 42 | +- traffic light shape |
| 43 | +- light bulbs information of traffic lights |
| 44 | +- stopline associated to traffic light |
| 45 | + |
| 46 | +#### Right Of Way |
| 47 | + |
| 48 | +Autoware intersection module requires the information on which lanes can be ignored for object detection, like those lanes whose traffic light color is red when that of ego is green, etc. `right_of_way` tag is a regulatory element that consists of a tuple of (`right_of_way`s and `yield_lane`s), and `right_of_way`s have priority over`yield_lane`s. Although `right_of_way` tag itself is defined in Lanelet2, this package provides proper conditions on how this tag should be set. |
| 49 | + |
| 50 | +### Utility |
| 51 | + |
| 52 | +#### Message Conversion |
| 53 | + |
| 54 | +This contains functions to convert lanelet map objects into ROS messages. |
| 55 | +Currently it contains following conversions: |
| 56 | + |
| 57 | +- lanelet::LaneletMapPtr to/from autoware_auto_mapping_msgs::msg::HADMapBin |
| 58 | +- lanelet::Point3d to geometry_msgs::Point |
| 59 | +- lanelet::Point2d to geometry_msgs::Point |
| 60 | +- lanelet::BasicPoint3d to geometry_msgs::Point |
| 61 | + |
| 62 | +#### Query |
| 63 | + |
| 64 | +This module contains functions to retrieve various information from maps. |
| 65 | +e.g. crosswalks, trafficlights, stoplines |
| 66 | + |
| 67 | +#### Utilities |
| 68 | + |
| 69 | +This module contains other useful functions related to Lanelet. |
| 70 | +e.g. matching waypoint with lanelets |
| 71 | + |
| 72 | +#### Route Checker |
| 73 | + |
| 74 | +This module contains a function to check the loading route is valid or not. |
| 75 | +If it is invalid, puts warning without dying. |
| 76 | +The case valid is when the route is created on the same map as the current one. |
| 77 | + |
| 78 | +### Visualization |
| 79 | + |
| 80 | +Visualization contains functions to convert lanelet objects into visualization marker messages. |
| 81 | +Currently it contains following conversions: |
| 82 | + |
| 83 | +- lanelet::Lanelet to Triangle Markers |
| 84 | +- lanelet::LineString to LineStrip Markers |
| 85 | +- TrafficLights to Triangle Markers |
| 86 | + |
| 87 | +## Nodes |
| 88 | + |
| 89 | +### lanelet2_extension_sample |
| 90 | + |
| 91 | +Code for this explains how this lanelet2_extension library is used. |
| 92 | +The executable is not meant to do anything. |
| 93 | + |
| 94 | +### autoware_lanelet2_extension |
| 95 | + |
| 96 | +This node checks if an .osm file follows the Autoware version of Lanelet2 format. |
| 97 | +You can check by running: |
| 98 | + |
| 99 | +```sh |
| 100 | +ros2 run lanelet2_extension autoware_lanelet2_validation --ros-args -p map_file:=<path/to/map.osm> |
| 101 | +``` |
0 commit comments