fzi-forschungszentrum-informatik / Lanelet2

Map handling framework for automated driving
BSD 3-Clause "New" or "Revised" License
799 stars 327 forks source link

Problematic default lane_change=no value for virtual lines #347

Open johschmitz opened 3 months ago

johschmitz commented 3 months ago

In https://github.com/fzi-forschungszentrum-informatik/Lanelet2/blob/master/lanelet2_core/doc/LinestringTagging.md#as-lane-boundary it is described that it is not possible to execute a lane change over a virtual line by default. We had multiple discussions about this and so far could not come up with a situation where this would be a problem. Could you describe one? On the other hand we can imagine multiple cases where a lane change across a virtual lane border would make sense. For example cases, where the lane markings are "missing" in the real world and virtual lines have been used to model this.

poggenhans commented 3 months ago

Virtual lines are frequently used in intersections if there are not enough road markings. Since things like overtaking are usually not allowed in intersections and lane changes are at least not a good idea, we chose to disallow lane changes by default. And I personally think it is a good idea to be too restrictive rather than too lax when it comes to choosing default behaviors.

But the document just describes the behaviour of the default-provided traffic rules. Nothing keeps you from either writing your own traffic rules that allow this or writing a small script that adds an override to every virtual line.

johschmitz commented 3 months ago

How do you handle then situations like this: Consider a single right turn lane and two lanes in the road going out. Now the vehicle may use both of those lanes when exiting the intersection/junction. Do you then always add two lanelets for those two possible paths?

Another situation is two left turn connecting to two outgoing lanes where a lane change is possible in the middle of the intersection. Do you then build 4 lanelets for that? Usually when there is no other vehicle nearby a lane change is not a problem in this kind of situation and neither is it illegal to the best of my knowledge. Of course attention must be paid and no lane change shall be attempted otherwise.

Here a real world example:

image

I admit that this particular situation on the left with the two turn lanes would probably have no virtual lines since there are lane markings but I can post another example without lane markings if needed.

Regarding overtaking I think that is nothing which would be possible since there is just not enough distance/space for that in order to even consider that usually. So that is nothing we ever had in mind.

poggenhans commented 3 months ago

Consider a single right turn lane and two lanes in the road going out. Now the vehicle may use both of those lanes when exiting the intersection/junction. Do you then always add two lanelets for those two possible paths?

Yes

Another situation is two left turn connecting to two outgoing lanes where a lane change is possible in the middle of the intersection. Do you then build 4 lanelets for that?

I would create two lanelets and if I really want make lane changes possible and there is no dashed marking I would tag it with lane_change=yes.

johschmitz commented 3 months ago

Alright this can technically work but I still don't understand why it is the right default. Just to wrap it up, could you describe a typical concrete situation where lane_change=no on virtual lines is really necessary (not just to simplify the path planing)? So far I honestly couldn't come up with one.

github-actions[bot] commented 1 week ago

This issue is stale because it has been open for 90 days with no activity. Is this issue still work in progress? If yes, mark it as "WIP" or comment, otherwise it will be closed in 30 days.