Describe the bugRule 106 ("road.lane.link.new_lane_appear") states that when a new lane appears in a new road or lane section, if it has zero-width, it shall not have a predecessor or successor, depending on which side has zero width.
From my testing, it seems like a bug is present in situations in which the following characteristics are present:
Two "nearby" roads (as in, one is predecessor/successor of the other). For simplicity, let's call them Road A and B
The two roads have reference lines defined in opposite directions. This means that either:
A is successor of B, and B is successor of A
A is predecessor of B, and B is predecessor of A
Road B has a lane starting with zero width, but NOT on the interface in contact with the other road. The interface between the two roads is defined by lanes with non-zero widths
In this situation, the width of the wrong "side" (start vs end) of the road appears to be used for the check, triggering errors even in situations in which the linking is correct. It is possible that the implementation is not taking into consideration the fact that, if the reference line direction changes between two roads, the relation between predecessors and successors changes.
If the reference lines are in the same direction, if B is successor of A, then A is predecessor of B
If the reference lines are in opposite directions, if B is successor of A, then A is successor of B. Failing to take this into consideration may lead to the described issue.
A screenshot describing the situation has been attached below. The OpenDRIVE shown in the picture can be found here:
lane_linking_bug_example.zip (uploaded as zip as GitHub does not let me upload .xodr files)
In the Report.txt file, the indicated error is as follows:
Error: #0: If a new lane appears besides, only the continuing lane shall be connected to the original lane, not the appearing lane.
Lane with successors with width zero.
XPath: /OpenDRIVE/road[1]/lanes/laneSection/left/lane[1]
Successor lane with width zero.
XPath: /OpenDRIVE/road[2]/lanes/laneSection/right/lane[3]
To Reproduce
Steps to reproduce the behavior:
Get an OpenDRIVE file with the characteristics described above
Run the checker including rule 106
Open the Report.txt file
Notice that an error is being indicated, even though the OpenDRIVE does not have linking issues
Expected behavior
No errors should be raised for this situation, as this is compliant with the OpenDRIVE standard
Describe the bug Rule 106 ("road.lane.link.new_lane_appear") states that when a new lane appears in a new road or lane section, if it has zero-width, it shall not have a predecessor or successor, depending on which side has zero width.
From my testing, it seems like a bug is present in situations in which the following characteristics are present:
In this situation, the width of the wrong "side" (start vs end) of the road appears to be used for the check, triggering errors even in situations in which the linking is correct. It is possible that the implementation is not taking into consideration the fact that, if the reference line direction changes between two roads, the relation between predecessors and successors changes.
A screenshot describing the situation has been attached below. The OpenDRIVE shown in the picture can be found here: lane_linking_bug_example.zip (uploaded as zip as GitHub does not let me upload
.xodr
files)In the
Report.txt
file, the indicated error is as follows:To Reproduce Steps to reproduce the behavior:
Report.txt
fileExpected behavior No errors should be raised for this situation, as this is compliant with the OpenDRIVE standard
Screenshots
Bundle
xodrBundle
2024-06-05
0.1.0