ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Autoware Map WG: HD Map functional requirements

I would like to discuss developing the initial Use Cases for HD Maps scenarios the AW Map WG proposed, and the requirements based cases from last meeting, into a functional description of the use cases - starting to define what functions a map API would need in order to realise the use cases.

As part of defining requirements for an HD map API it is also useful to think about the minimal performance levels we assume from other AD modules. The purpose of an HD maps is support the perception, decision making and motion planning of AVs and although we would like to define a best case HD map, it must be made with respect to a minimal level of performance of an AV and its AD modules.

So I propose for each use case scenario list 1) any assumptions we are making about the AD systems , and 2) the functional requirements.

First off, focusing on Valet Parking, and in extension to the general AD challenge.

The general use cases/requirements of HD map were determined to be (please add any):

Valet Parking: Use cases

  • Driving according to traffic light
  • General traffic signs perception and use for regulation
  • Stop lines and required behavior, links to other elements
  • Detection of pedestrians in crosswalk regions
  • Definition of drivable areas, their regulations, associated regulatory elements
  • Planning (route, lane, local)
  • Parking in a given parking location
  • Localisation

To start:

Requirements for traffic light use case:

  1. Assumes
  • camera based traffic light detection module requiring image region of interest of traffic lights linked to a given lane
  1. Functional Requirements
  • Given poses along current path (range?) return lane/lanes which will be travelled
  • Given a lane return any associated traffic lights
  • Get 3D geometry of traffic lights (point,polygon)
  • Project 3D geometry into 2D camera plane (map function? support query?)
  • For a specific traffic light, return stop line.
  • For a stop line, return related traffic lights if any?

Any thoughts on this (it’s just a starting point for discussion), or on any of the use cases, or on the requirements process in general?

For Reference:

past work on defining use cases:

and their requirements:

2 Likes

Thank you for your suggestion. (I’m sorry for my late reaction.)
I believe considering what functions we will need is so important for defining an efficient map model.

So I considered some use cases.
Let’s continue this work and make things more concrete!

Note:
At this stage, I don’t want to make things so strict, so please ignore little things.
Also, the purpose of this post is NOT to list up all functions but to list up major ones and to utilize it for considering the map model for Autoware.Auto.


Use case: Map Matching

Description

The vehicle should recognize where(which lane) it is driving on the route, based on the localized pose.

Required functions

- Lane findNearestLane(pose);
- Lane findNearestLane(route, pose); // When we have the route
- vector<Lane> findNearLanes(pose, range);

Use case: Traffic Light Detection

Description

The vehicle should detect traffic lights associated with the current route. (not only the nearest one but also the next one in some cases)

Required functions

- Path(vector<Lane>?) getForwardPath(lane, distance);
- vector<TrafficLight> getTrafficLights(lane); // Assuming to iterate path

Similarly, we would need functions for finding other features from a Lane.

- vector<Crosswalk> getCrosswalks(lane);
- vector<StopLine> getStopLInes(lane);

If we just want to use features for localization, finding near features can be useful.
(It’s hard to use features that were found by distance for planning.)

- vector<TrafficLight> findNearTrafficLights(pose, range);
- vector<Crosswalk> findNearCrosswalks(pose, range);
- vector<StopLine> findNearStopLines(pose, range);
- vector<TrafficSign> findNearTrafficSigns(pose, range);

Use case: Stop Position Decision

Description

The vehicle should decide where to stop according to stop lines.
If it stops due to red traffic lights or crosswalks, it should know which is the associated stop line.

Sometimes crosswalks don’t have the stop lines, so it has to calculate where to stop from the shape of crosswalks.
However, I think it’s an application-level matter, not a map level one.

Required functions

- StopLine getStopLine(traffic_light);
- StopLine getStopLine(crosswalk);

I think it’s good for us to take these next actions:

  1. List up more functions using more use cases.

  2. Classify each function

    • can be efficiently/inefficiently implemented with Lanelet2
    • can be efficiently/inefficiently implemented with Lanelet2 if we extend it
    • cannot be implemented with Lanelet2
  3. Write pseudo-code for each use case

    • If it’s already implemented in Autoware.AI, evaluate the efficiency
1 Like