-
Notifications
You must be signed in to change notification settings - Fork 130
New lane model (Handling Junctions with OSI::GroundTruth::Lane - issue #80) #110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
This looks good to me at first glance, but I think it would be good to get feedback from the other workshop participants, e.g. @HendrikAmelunxen, @AndreHildebrandt, @MHerrmannIPG, @JonathanSchmalhoferBMW, or @AndreasVIRES if this matches what they expect. |
pmai
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just a review of the technical changes needed to retain technical backward compatibility; this can be ignored to a certain degree if we decide to switch to V3.0.0 release, which might make sense since even if we stay technically backward compatible, I do not think that the changes to the lane model makes new code usable with old data or vice versa...
| // also be additional free lanes. | ||
| repeated LaneBoundary lane_boundary = 4; | ||
| // \note CenterlineIsDrivingDirection is defined for \c Lane::type = TYPE_DRIVING. | ||
| optional bool center_line_is_driving_direction = 4; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To maintain basic backward compatibility field tag 4 should be reserved and center_line_is_driving_direction should get a new tag (after existing ones).
|
|
||
| // The id of the free boundary ID. | ||
| // | ||
| optional LaneFraming lane_framing = 9; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lane_framing tag number should be reserved, and not reused.
|
|
||
| // A normal lane. | ||
| // E.g. lanes with ids 1, 2, 3, 4 and 7 of the highway_exit image. | ||
| TYPE_NORMAL = 2; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To retain backward compatiblity TYPE_NORMAL can be changed to TYPE_DRIVING, I think, but the new TYPE_NONDRIVING and TYPE_INTERSECTION enum values should be new unused values to avoid misinterpretation, I think...
| // | ||
| message LaneBoundary | ||
| { | ||
| //The id of the lane boundary. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, if we want to technically remain backward compatible, the id field need to use a new tag number and the remaining fields should retain their tag numbers.
|
@CarloVanDriestenBMW I think we need to decide soonish whether it makes more sense to release as 3.0.0 rather than 2.3.0 given the changes to the lane model (and some other changes)... |
|
I am starting to think that the version change to 3.0.0 is reflecting the now aligned development with VDA in a better way -> and yes it may not be backward compatible |
|
BTW, I think this changeset is still missing the predecessor/successor pairings that @CarloVanDriestenBMW suggested to better express valid ways to cross a junction, right? |
|
@pmai no, there will be no pairings for junctions. This decision was taken at OSI workshop in Ulm (2017). Valid ways depend on road markings, traffic signs linked to predecessor lanes and road markings and free lane boundaries of the junction. For this purpose, junctions have no center lines... |
|
Yes the Ulm consensous was to throw out the relationships for junctions. @CarloVanDriestenBMW proposed switching from separate predecessor/successor lists to a new combined pair list afterwards, to enable the logical possibilities to be still represented after the Workshop. Just wanted to ensure that it was clear whether this changeset included that or not. Thanks, will merge as soon as someone from the Environment Simulation side has reviewed. |
|
we add the lane pairing to OSI::Lanes. We have to improve the documentation with this image. So for lane 6 the lane pairing will be (4,7) and (4,8). @pmai and @CarloVanDriestenBMW: PR now with lane pairing. |
|
In this case lane 4 has two right adjacent lanes (lane 5 and 6). 6 is no successor lane of lane 4. @pmai and @CarloVanDriestenBMW do you agree? |
Restructuring the lane model: Lane boundaries are seperated from the lanes and only referenced in lanes.
Logical definition for possible lane pairings, improved logic for intersections.
pmai
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The proposed changes look good to me, and are in line with the Ulm Workshop findings, will merge with cleanup.
solosito
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added some comments that, in my opinion, are making it more understandable.
| // | ||
| repeated Lane lane = 9; | ||
|
|
||
| // A list of lane boundaries from lanes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my opinion this is redundant. Just A list of lane boundaries. would be enough.
|
|
||
| // Marking with violet color. | ||
| // |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion: the same typo might be fixed in the line 58
| // might be used e.g. in construction sites. The lane markings do not have to be parallel to the center_line, but | ||
| // they are the basis for calculating the width of the lane at any given distance. | ||
| // Defined and used for driving lanes. | ||
| // true means driving direction is according to ascending order of center line points. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
true means driving direction agrees with ascending storage order of the points defining the center_line.
| // they are the basis for calculating the width of the lane at any given distance. | ||
| // Defined and used for driving lanes. | ||
| // true means driving direction is according to ascending order of center line points. | ||
| // false means driving direction is according to descending order of center line points. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
false means driving direction disagrees with descending storage order of the points defining the center_line.


According to the OSI workshop in Ulm (November 2017), I propose this new lane model and the corresponding OSI messages. Change break downward compatibility.