Drake
Lane Class Referenceabstract

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

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

Inheritance diagram for Lane:
[legend]

## Public Member Functions

virtual ~Lane ()=default

const 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 driveable_bounds (double s) const
Returns the driveable lateral (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...

GeoPosition ToGeoPosition (const LanePosition &lane_pos) const
Returns the GeoPosition corresponding to the given LanePosition. More...

template<typename T >
GeoPositionT< T > ToGeoPositionT (const LanePositionT< T > &lane_pos) const
Generalization of ToGeoPosition to arbitrary scalar types, where the structures LanePositionT<T> and GeoPositionT<T> are used in place of LanePosition and GeoPosition, respectively. More...

LanePosition ToLanePosition (const GeoPosition &geo_pos, GeoPosition *nearest_point, double *distance) const
Determines the LanePosition corresponding to GeoPosition geo_pos. More...

template<typename T >
LanePositionT< T > ToLanePositionT (const GeoPositionT< T > &geo_pos, GeoPositionT< T > *nearest_point, T *distance) const
Generalization of ToLanePosition to arbitrary scalar types, where the structures LanePositionT<T> and GeoPositionT<T> are used in place of LanePosition and GeoPosition, respectively. 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 world 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...

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

template<>
GeoPositionT< doubleToGeoPositionT (const LanePositionT< double > &lane_pos) const

template<>
GeoPositionT< AutoDiffXdToGeoPositionT (const LanePositionT< AutoDiffXd > &lane_pos) const

template<>
LanePositionT< doubleToLanePositionT (const GeoPositionT< double > &geo_pos, GeoPositionT< double > *nearest_point, double *distance) const

template<>
LanePositionT< AutoDiffXdToLanePositionT (const GeoPositionT< AutoDiffXd > &geo_pos, GeoPositionT< AutoDiffXd > *nearest_point, AutoDiffXd *distance) const

Does not allow copy, move, or assignment
Lane (const Lane &)=delete

Laneoperator= (const Lane &)=delete

Lane (Lane &&)=delete

Laneoperator= (Lane &&)=delete

Lane ()=default

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

## Constructor & Destructor Documentation

 Lane ( const Lane & )
delete
 Lane ( Lane && )
delete
 virtual ~Lane ( )
virtualdefault

Reimplemented in Lane, Lane, Lane, and Lane.

 Lane ( )
protecteddefault

Here is the caller graph for this function:

## Member Function Documentation

 RBounds driveable_bounds ( double s ) const
inline

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

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

Here is the caller graph for this function:

 HBounds elevation_bounds ( double s, double r ) const
inline

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 volume modelled by the RoadGeometry.

Here is the caller graph for this function:

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

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.

Here is the caller graph for this function:

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

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

Here is the caller graph for this function:

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

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.

 optional GetDefaultBranch ( const LaneEnd::Which which_end ) const
inline

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

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

Here is the caller graph for this function:

 Rotation GetOrientation ( const LanePosition & lane_pos ) const
inline

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

Here is the caller graph for this function:

 const LaneId id ( ) const
inline

Returns the persistent identifier.

Here is the caller graph for this function:

 int index ( ) const
inline

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

Here is the caller graph for this function:

 RBounds lane_bounds ( double s ) const
inline

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

Here is the caller graph for this function:

 double length ( ) const
inline

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()].

Here is the caller graph for this function:

 Lane& operator= ( Lane && )
delete
 Lane& operator= ( const Lane & )
delete
 const Segment* segment ( ) const
inline

Returns the Segment to which this Lane belongs.

Here is the caller graph for this function:

 const Lane* to_left ( ) const
inline

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.

Here is the caller graph for this function:

 const Lane* to_right ( ) const
inline

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.

Here is the caller graph for this function:

 GeoPosition ToGeoPosition ( const LanePosition & lane_pos ) const
inline

Returns the GeoPosition 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::driveable_bounds().

Here is the call graph for this function:

Here is the caller graph for this function:

 GeoPositionT ToGeoPositionT ( const LanePositionT< double > & lane_pos ) const
 GeoPositionT ToGeoPositionT ( const LanePositionT< AutoDiffXd > & lane_pos ) const
 GeoPositionT ToGeoPositionT ( const LanePositionT< T > & lane_pos ) const

Generalization of ToGeoPosition to arbitrary scalar types, where the structures LanePositionT<T> and GeoPositionT<T> are used in place of LanePosition and GeoPosition, respectively.

When the arguments are of type AutoDiffXd, the return value is a GeoPositionT<AutoDiffXd> containing the same partial derivatives as those appearing in lane_pos. The provided lane_pos must be internally consistent; the s, r, and h variables must have derivatives of equal size, and where the i-th derivative of one variable is taken with respect to the same quantity as the i-th derviative of another variable.

Instantiated templates for the following kinds of T's are provided:

Note: This is an experimental API that is not necessarily implemented in all back-end implementations.

Here is the caller graph for this function:

 LanePosition ToLanePosition ( const GeoPosition & geo_pos, GeoPosition * nearest_point, double * distance ) const
inline

Determines the LanePosition corresponding to GeoPosition geo_pos.

The return value is the LanePosition of the point within the Lane's driveable-bounds which is closest to geo_pos (as measured by the Cartesian metric in the world frame). If nearest_point is non-null, then it will be populated with the GeoPosition of that nearest point. If distance is non-null, then it will be populated with the Cartesian distance from geo_pos to that nearest point.

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

Here is the call graph for this function:

Here is the caller graph for this function:

 LanePositionT ToLanePositionT ( const GeoPositionT< AutoDiffXd > & geo_pos, GeoPositionT< AutoDiffXd > * nearest_point, AutoDiffXd * distance ) const
 LanePositionT ToLanePositionT ( const GeoPositionT< double > & geo_pos, GeoPositionT< double > * nearest_point, double * distance ) const
 LanePositionT ToLanePositionT ( const GeoPositionT< T > & geo_pos, GeoPositionT< T > * nearest_point, T * distance ) const

Generalization of ToLanePosition to arbitrary scalar types, where the structures LanePositionT<T> and GeoPositionT<T> are used in place of LanePosition and GeoPosition, respectively.

When the arguments are of type AutoDiffXd, the return value is a LanePositionT<AutoDiffXd> containing the same partial derivatives as those appearing in geo_pos. The provided geo_pos must be internally consistent; the x, y, and z variables must have derivatives of equal size, and where the i-th derivative of one variable is taken with respect to the same quantity as the i-th derviative of another variable. If either nearest_point or distance are non-null, they will also contain geo_pos's partial derivatives.

Instantiated templates for the following kinds of T's are provided: