@@ -240,27 +240,69 @@ message LogicalLaneBoundary
240240// A logical lane is part of a road. Compared to a physical lane (OSI type
241241// \c Lane), its existence doesn't hinge on the existence of road markings. So
242242// 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.
247248//
248249// Outside of junctions, logical lanes are constructed such that each point on
249250// the road belongs to at least one (typically: exactly one) logical lane. So
250251// there are no gaps between logical lanes, and no areas that don't belong to a
251252// logical lane.
252253//
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.
260261//
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.
264306//
265307message LogicalLane
266308{
0 commit comments