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...
 

Protected Member Functions

 Lane ()=default
 

Constructor & Destructor Documentation

◆ ~Lane()

virtual ~Lane ( )
virtualdefault

Reimplemented in Lane.

◆ Lane()

Lane ( )
protecteddefault

Member Function Documentation

◆ 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".

See also
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.

See also
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.

See also
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.

See also
ToLanePosition method.

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


The documentation for this class was generated from the following files: