@@ -240,27 +240,69 @@ message LogicalLaneBoundary
240
240
// A logical lane is part of a road. Compared to a physical lane (OSI type
241
241
// \c Lane), its existence doesn't hinge on the existence of road markings. So
242
242
// e.g. a narrow urban road with two driving directions but no road markings
243
- // in-between would be presented as two LogicalLanes, but only one Lane. So one
244
- // Lane can consist of multiple LogicalLanes. E.g. on intersections, each
245
- // driving path is one LogicalLane, but the whole area is one \c Lane of type
246
- // \c #TYPE_INTERSECTION.
243
+ // in-between would be presented as two \link LogicalLane LogicalLanes\endlink,
244
+ // but only one Lane. So one Lane can consist of multiple \link LogicalLane
245
+ // LogicalLanes\endlink. E.g. on intersections, each driving path is one
246
+ // LogicalLane, but the whole area is one \c Lane of type \link
247
+ // osi3::Lane::Classification::TYPE_INTERSECTION \c TYPE_INTERSECTION \endlink.
247
248
//
248
249
// Outside of junctions, logical lanes are constructed such that each point on
249
250
// the road belongs to at least one (typically: exactly one) logical lane. So
250
251
// there are no gaps between logical lanes, and no areas that don't belong to a
251
252
// logical lane.
252
253
//
253
- // If OSI is generated from OpenDRIVE, then LogicalLanes map directly to
254
- // OpenDRIVE lanes. However, it is allowed to merge multiple consecutive
255
- // OpenDRIVE lanes with the same type into one OSI LogicalLane: if an OpenDRIVE
256
- // lane has a single successor, which has the same lane type, and this
257
- // successor has only one predecessor (so no lane merging or splitting) then
258
- // the two lanes may be presented as one continuous LogicalLane. This may be
259
- // done recursively.
254
+ // If OSI is generated from OpenDRIVE, then \link LogicalLane
255
+ // LogicalLanes\endlink map directly to OpenDRIVE lanes. However, it is allowed
256
+ // to merge multiple consecutive OpenDRIVE lanes with the same type into one
257
+ // OSI LogicalLane: if an OpenDRIVE lane has a single successor, which has the
258
+ // same lane type, and this successor has only one predecessor (so no lane
259
+ // merging or splitting) then the two lanes may be presented as one continuous
260
+ // LogicalLane. This may be done recursively.
260
261
//
261
- // The reference line pointed to by reference_line_id defines an ST coordinate
262
- // system for the lane. This ST coordinate system is used to describe positions
263
- // on the lane.
262
+ // The \link ReferenceLine reference line\endlink pointed to by
263
+ // #reference_line_id defines an ST coordinate system for the lane. This ST
264
+ // coordinate system is used to describe positions on the lane.
265
+ //
266
+ // ## Example
267
+ //
268
+ // The example below shows two logical lanes on an intersection, with a focus
269
+ // on the left-turn lane (\c l1):
270
+ // \image html OSI_LogicalLane1.png "Two logical lanes on an intersection"
271
+ //
272
+ // Assumptions not shown in the image:
273
+ // - This is right-hand traffic (and thus vehicles on \c l1 drive from the bottom
274
+ // to the left, vehicles on \c l2 drive from right to left).
275
+ // - The yellow line is a ReferenceLine, defined starting at the bottom, and
276
+ // going to the left.
277
+ //
278
+ // Some features shown in the image relative to \c l1:
279
+ // - The yellow line is the ReferenceLine of \c l1 . The ReferenceLine can be
280
+ // shared with other lanes. Because the ReferenceLine has the same direction
281
+ // as the driving direction of \c l1 in this example,
282
+ // <code>#reference_line_is_driving_direction == true</code>.
283
+ // - The red line marks the area where \c l2 is left of
284
+ // \c l1 - this info is recorded in #left_adjacent_lane of \c l1.
285
+ // - The red area is the area where \c l2 overlaps \c l1. This is recorded in
286
+ // #overlapping_lane of \c l1.
287
+ //
288
+ // The image below shows the same two lanes, but from the perspective of \c l2:
289
+ // \image html OSI_LogicalLane2.png "Two logical lanes on an intersection"
290
+ //
291
+ // Assumptions not shown in the image:
292
+ // - The yellow line is a ReferenceLine, defined starting at the right, going
293
+ // to the left.
294
+ //
295
+ // Some features shown in the image relative to \c l2:
296
+ // - The yellow line is the ReferenceLine of \c l2 . The ReferenceLine can be
297
+ // shared with other lanes. Because the ReferenceLine has the same direction
298
+ // as the driving direction of \c l2 in this example,
299
+ // <code>#reference_line_is_driving_direction == true</code>.
300
+ // - The green line marks the area where \c l1 is right of
301
+ // \c l2 - this info is recorded in #right_adjacent_lane of \c l2.
302
+ // - The red area is the area where \c l1 overlaps \c l2. This is recorded in
303
+ // #overlapping_lane of \c l1.
304
+ //
305
+ // Note: all these relations are also defined outside of intersections.
264
306
//
265
307
message LogicalLane
266
308
{
0 commit comments