Adding Lanelet2 support for all nodes that use Aisan Vector Map
Description
There has been discussion of moving away from Aisan Vector Map format, which is proprietary. https://github.com/autowarefoundation/autoware/issues/1701
There are many nodes that rely on Aisan Format, which makes them hard for the developers to understand its code. This feature will add replacement for such nodes, which behaves like old node, but uses Lanelet2 format implementation.
Implementation considerations
We will add Lanelet2 version of nodes to the packages that depend on vector map(Aisan Format). Lanelet2 implementation will be done as separate node rather than modifying Aisan Format node to add ROS param to switch between the formats. This is because some nodes(e.g. velocity_set) were heavily dependent on the Aisan Format structure messages, and would severely decrease code readability. Also, we have noticed that many of the nodes need refactoring(e.g. feat_proj) due to bad coding style. As long as node are separated, a developer wouldn't have to care about Aisan Format when refactoring the code. From v1.13, developers are encouraged to modify Lanelet2 nodes rather than Aisan Format nodes which will be deprecated.
We will also add checkbox for each nodes in runtime_manager for the users to choose between Aisan format or Lanelet2 format.
The road map is:
autoware.ai v1.13: Aisan Format is default option
autoware.ai v1.14: Lanelet Format is default option
autoware.ai v1.15: Aisan Format is deleted from repository
Alternatives
Alternative method I though of was to modify current Aisan Format node to add ROS param to switch between different map formats. This way, codes that are irrelevant from map format are shared, and code maintenance work load could be lighter. However, we have noticed that this would just decrease the code readability and actually could increase the maintenance difficulty.
Additional information
Changes that needs to be done:
-
add lanelet2_messages messages!12 (merged) -
add lanelet2_map_loader common!28 (merged) -
add lanelet2_feat_proj core_perception!45 (merged) -
add lanelet2_decision_maker core_planning!38 (merged) common!50 (merged) -
add lanelet2_velocity_set core_planning!36 (merged) -
add lanelet2_lane_rule core_planning!31 (merged) -
add lanelet2_imm_ukf_pda_track core_perception!49 (merged) -
add lanelet2_costmap_generator core_planning!32 (merged) -
add lanelet2_wayarea2grid common!45 (merged) -
add lanelet2 option to runtime_manager utilities!45 (merged) utilities!46 (merged) utilities!47 (merged) utilities!48 (merged) utilities!49 (merged) utilities!50 (merged) utilities!51 (merged)