Skip to content

Commit f3b6cac

Browse files
committed
Adaptations from first round of review
1 parent 2485c1b commit f3b6cac

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed

osi_common.proto

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,12 @@ message Spherical3d
346346
// a part of the object overlaps.
347347
//
348348
// As an exception to this, \c TrafficSign and \c TrafficLight are assigned to
349-
// a logical lane if they control traffic on that lane.
349+
// a logical lane if they control traffic on that lane. For \c TrafficSign and
350+
// \c TrafficLight , s_position refers to the position where the sign or light
351+
// is valid (e.g. where vehicles should stop in case of a red traffic light),
352+
// not the physical position (where the sign or light is in the world).
353+
// Typically, t_position and angle_to_lane do not have any meaning in this
354+
// case, and will be 0.
350355
//
351356
message LogicalLaneAssignment
352357
{

osi_logicallane.proto

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ message ReferenceLine
5656
// Together, these rules allow directly putting OpenDRIVE S coordinates
5757
// into an OSI ReferenceLine.
5858
//
59+
// If the reference line approximates a curve (e.g. a clothoid in
60+
// OpenDRIVE), the points must be chosen in a way that the lateral distance
61+
// to the ideal line does not exceed 5cm. As shown in the following image:
62+
//
63+
// \image html line_approximation_error.svg "Approximation error"
64+
// Approximation error green line.
65+
//
5966
// Between two ReferenceLinePoints, both the world coordinate and the S
6067
// coordinate is interpolated linearly. So each S value uniquely describes
6168
// a point on the polyline.
@@ -106,7 +113,8 @@ message ReferenceLine
106113
// coordinate is no longer calculated in the XY plane (as proposed for
107114
// OSI). It doesn't seem feasable to implement the same tilting for OSI,
108115
// so simulation tools will have to consider superElevation and convert
109-
// the T coordinate accordingly.
116+
// the T coordinate accordingly: t_OSI = t_OpenDRIVE * cos(alpha), where
117+
// alpha is the superelevation angle.
110118
// - The angle will not be perfectly the same, due to the use of line
111119
// segments in OSI, and curves in OpenDRIVE. In the authors opinion, the
112120
// difference will be negligible if the poly_line is suitably sampled.
@@ -120,9 +128,6 @@ message ReferenceLine
120128
// for lanes without superelevation, and to make it easier to convert
121129
// between OSI and OpenDRIVE in case superelevation is present.
122130
//
123-
// TODO Describe needed precision.
124-
// TODO Describe how large angles between line segments are allowed to be.
125-
//
126131
repeated ReferenceLinePoint poly_line = 2;
127132

128133
// A point on the reference line
@@ -186,6 +191,21 @@ message LogicalLaneBoundary
186191
// At the place where the boundary suddenly increases, two points will have
187192
// the same S coordinate.
188193
//
194+
// If the boundary approximates a curve (e.g. a cubic function in
195+
// OpenDRIVE), the points must be chosen in a way that the lateral distance
196+
// to the ideal line does not exceed 5cm. As shown in the following image:
197+
//
198+
// \image html line_approximation_error.svg "Approximation error"
199+
// Approximation error green line.
200+
//
201+
// The Z error (difference in Z height between boundary_line and the "real"
202+
// line) must also not exceed 5cm.
203+
//
204+
// Note: if two lanes have different Z heights (e.g. a driving lane is
205+
// beside a sidewalk, where the sidewalk is 10cm higher than the road),
206+
// then these lanes cannot share a boundary, since their boundaries have
207+
// different Z heights.
208+
//
189209
repeated LogicalBoundaryPoint boundary_line = 2;
190210

191211
// The reference line for this boundary.
@@ -366,18 +386,21 @@ message LogicalLane
366386
// Lanes that are directly right of this lane, without gap or overlap.
367387
// "Right" is in definition direction (not driving direction), so right lanes
368388
// have smaller T coordinates.
389+
// Entries must be ordered: first by start_s, then by end_s.
369390
//
370391
repeated LaneRelation right_adjacent_lane = 9;
371392

372393
// Lanes that are directly left of this lane, without gap or overlap.
373394
// "Left" is in definition direction (not driving direction), so left lanes
374395
// have larger T coordinates.
396+
// Entries must be ordered: first by start_s, then by end_s.
375397
//
376398
repeated LaneRelation left_adjacent_lane = 10;
377399

378400
// Lanes that partially or completely overlap this lane. Only overlaps
379401
// laterally larger than 5cm are considered overlaps for the purpose of
380402
// this relation.
403+
// Entries must be ordered: first by start_s, then by end_s.
381404
//
382405
repeated LaneRelation overlapping_lane = 11;
383406

@@ -386,7 +409,11 @@ message LogicalLane
386409
// All LogicalLaneBoundary elements referenced here must refer to the same
387410
// ReferenceLine as this lane.
388411
// The boundaries together must cover the whole length of the lane (the
389-
// range [start_s,end_s]) without gap or overlap.
412+
// range [start_s,end_s]) without gap or overlap. The boundaries must be
413+
// stored in ascending order, starting with the smallest S position.
414+
// Consecutive boundaries must share a point: the last point of the
415+
// previous boundary must be identical to the first point of the next
416+
// boundary.
390417
//
391418
// TODO Is it allowed for the boundaries to be longer than the lane?
392419
// Theoretically, this could be done. Then the user would have to limit the
@@ -399,7 +426,11 @@ message LogicalLane
399426
// All LogicalLaneBoundary elements referenced here must refer to the same
400427
// ReferenceLine as this lane.
401428
// The boundaries together must cover the whole length of the lane (the
402-
// range [start_s,end_s]) without gap or overlap.
429+
// range [start_s,end_s]) without gap or overlap. The boundaries must be
430+
// stored in ascending order, starting with the smallest S position.
431+
// Consecutive boundaries must share a point: the last point of the
432+
// previous boundary must be identical to the first point of the next
433+
// boundary.
403434
//
404435
// TODO Is it allowed for the boundaries to be longer than the lane?
405436
// Theoretically, this could be done. Then the user would have to limit the

0 commit comments

Comments
 (0)