maliput
Lane Class Referenceabstract

## Detailed Description

A Lane represents a lane of travel in a road network.

A Lane defines a curvilinear coordinate system covering the road surface, with a longitudinal 's' coordinate that expresses the arc-length along a central reference curve. The reference curve nominally represents an ideal travel trajectory along the Lane.

Lanes are grouped by Segment. All Lanes belonging to a Segment represent the same road surface, but with different coordinate parameterizations (e.g., each Lane has its own reference curve).

#include <include/maliput/api/lane.h>

Inheritance diagram for Lane:
[legend]

## Public Member Functions

virtual ~Lane ()=default

LaneId id () const
Returns the persistent identifier. More...

const Segmentsegment () const
Returns the Segment to which this Lane belongs. More...

int index () const
Returns the index of this Lane within the Segment which owns it. More...

const Laneto_left () const
Returns a pointer to the adjacent Lane to the left of this Lane. More...

const Laneto_right () const
Returns a pointer to the adjacent Lane to the right of this Lane. More...

double length () const
Returns the arc-length of the Lane along its reference curve. More...

RBounds lane_bounds (double s) const
Returns the nominal lateral (r) bounds for the lane as a function of s. More...

RBounds segment_bounds (double s) const
Returns the lateral segment (r) bounds of the lane as a function of s. More...

HBounds elevation_bounds (double s, double r) const
Returns the elevation (h) bounds of the lane as a function of (s, r). More...

InertialPosition ToInertialPosition (const LanePosition &lane_pos) const
Returns the InertialPosition corresponding to the given LanePosition. More...

LanePositionResult ToLanePosition (const InertialPosition &inertial_pos) const
Determines the LanePosition corresponding to InertialPosition inertial_pos. More...

LanePositionResult ToSegmentPosition (const InertialPosition &inertial_pos) const
Determines the LanePosition corresponding to InertialPosition inertial_pos. More...

Rotation GetOrientation (const LanePosition &lane_pos) const
Returns the rotation which expresses the orientation of the Lane-frame basis at lane_pos with respect to the Inertial-frame basis. More...

LanePosition EvalMotionDerivatives (const LanePosition &position, const IsoLaneVelocity &velocity) const
Computes derivatives of LanePosition given a velocity vector velocity. More...

const BranchPointGetBranchPoint (const LaneEnd::Which which_end) const
Returns the lane's BranchPoint for the end specified by which_end. More...

const LaneEndSetGetConfluentBranches (const LaneEnd::Which which_end) const
Returns the set of LaneEnd's which connect with this lane on the same side of the BranchPoint at which_end. More...

const LaneEndSetGetOngoingBranches (const LaneEnd::Which which_end) const
Returns the set of LaneEnd's which continue onward from this lane at the BranchPoint at which_end. More...

std::optional< LaneEndGetDefaultBranch (const LaneEnd::Which which_end) const
Returns the default ongoing LaneEnd connected at which_end, or std::nullopt if no default branch has been established at which_end. More...

bool Contains (const LanePosition &lane_position) const
Returns if this lane contains lane_position. More...

Lane ()=default

## ◆ ~Lane()

 virtual ~Lane ( )
virtualdefault

Reimplemented in Lane.

## ◆ Lane()

 Lane ( )
protecteddefault

## ◆ Contains()

 bool Contains ( const LanePosition & lane_position ) const

Returns if this lane contains lane_position.

## ◆ elevation_bounds()

 HBounds elevation_bounds ( double s, double r ) const

Returns the elevation (h) bounds of the lane as a function of (s, r).

These are the elevation bounds for a position that is considered to be within the Lane's volume modeled by the RoadGeometry.

s is within [0, length()] of this Lane and r is within lane_bounds(s).

## ◆ EvalMotionDerivatives()

 LanePosition EvalMotionDerivatives ( const LanePosition & position, const IsoLaneVelocity & velocity ) const

Computes derivatives of LanePosition given a velocity vector velocity.

velocity is a isometric velocity vector oriented in the Lane-frame at position.

Returns
Lane-frame derivatives packed into a LanePosition struct.

## ◆ GetBranchPoint()

 const BranchPoint * GetBranchPoint ( const LaneEnd::Which which_end ) const

Returns the lane's BranchPoint for the end specified by which_end.

## ◆ GetConfluentBranches()

 const LaneEndSet * GetConfluentBranches ( const LaneEnd::Which which_end ) const

Returns the set of LaneEnd's which connect with this lane on the same side of the BranchPoint at which_end.

At a minimum, this set will include this Lane.

## ◆ GetDefaultBranch()

 std::optional< LaneEnd > GetDefaultBranch ( const LaneEnd::Which which_end ) const

Returns the default ongoing LaneEnd connected at which_end, or std::nullopt if no default branch has been established at which_end.

## ◆ GetOngoingBranches()

 const LaneEndSet * GetOngoingBranches ( const LaneEnd::Which which_end ) const

Returns the set of LaneEnd's which continue onward from this lane at the BranchPoint at which_end.

## ◆ GetOrientation()

 Rotation GetOrientation ( const LanePosition & lane_pos ) const

Returns the rotation which expresses the orientation of the Lane-frame basis at lane_pos with respect to the Inertial-frame basis.

## ◆ id()

 LaneId id ( ) const

Returns the persistent identifier.

## ◆ index()

 int index ( ) const

Returns the index of this Lane within the Segment which owns it.

## ◆ lane_bounds()

 RBounds lane_bounds ( double s ) const

Returns the nominal lateral (r) bounds for the lane as a function of s.

These are the lateral bounds for a position that is considered to be "staying in the lane".

segment_bounds(double s) that defines the whole surface.

## ◆ length()

 double length ( ) const

Returns the arc-length of the Lane along its reference curve.

The value of length() is also the maximum s-coordinate for this Lane; i.e., the domain of s is [0, length()].

## ◆ segment()

 const Segment * segment ( ) const

Returns the Segment to which this Lane belongs.

## ◆ segment_bounds()

 RBounds segment_bounds ( double s ) const

Returns the lateral segment (r) bounds of the lane as a function of s.

These are the lateral bounds for a position that is considered to be "on segment", reflecting the physical extent of the surface of the lane's segment.

lane_bounds(double s) that defines what's considered to be "staying in the lane".

## ◆ to_left()

 const Lane * to_left ( ) const

Returns a pointer to the adjacent Lane to the left of this Lane.

Left is considered the +r direction with regards to the (s,r,h) frame, e.g., "to the left along the +s direction".

Returns
nullptr iff parent Segment has no Lane to the left.

## ◆ to_right()

 const Lane * to_right ( ) const

Returns a pointer to the adjacent Lane to the right of this Lane.

Right is considered the -r direction with regards to the (s,r,h) frame, e.g., "to the right along the +s direction".

Returns
nullptr iff parent Segment has no Lane to the right.

## ◆ ToInertialPosition()

 InertialPosition ToInertialPosition ( const LanePosition & lane_pos ) const

Returns the InertialPosition corresponding to the given LanePosition.

Precondition
The s component of lane_pos must be in domain [0, Lane::length()].
The r component of lane_pos must be in domain [Rmin, Rmax] derived from Lane::segment_bounds().

## ◆ ToLanePosition()

 LanePositionResult ToLanePosition ( const InertialPosition & inertial_pos ) const

Determines the LanePosition corresponding to InertialPosition inertial_pos.

The LanePosition is expected to be contained within the lane's boundaries.

ToSegmentPosition method.

This method guarantees that its result satisfies the condition that ToInertialPosition(result.lane_position) is within linear_tolerance() of result.nearest_position.

## ◆ ToSegmentPosition()

 LanePositionResult ToSegmentPosition ( const InertialPosition & inertial_pos ) const

Determines the LanePosition corresponding to InertialPosition inertial_pos.

The LanePosition is expected to be contained within the segment's boundaries.

This method guarantees that its result satisfies the condition that ToInertialPosition(result.lane_position) is within linear_tolerance() of result.nearest_position.