maliput

Abstract API for the geometry of a road network, including both the network topology and the geometry of its embedding in 3space.
#include <include/maliput/api/road_geometry.h>
Classes  
class  IdIndex 
Abstract interface for a collection of methods which allow accessing objects in a RoadGeometry's object graph (Lanes, Segments, Junctions, BranchPoints) by their unique id's. More...  
Public Member Functions  
virtual  ~RoadGeometry ()=default 
RoadGeometryId  id () const 
Returns the persistent identifier. More...  
int  num_junctions () const 
Returns the number of Junctions in the RoadGeometry. More...  
const Junction *  junction (int index) const 
Returns the Junction indexed by index . More...  
int  num_branch_points () const 
Returns the number of BranchPoints in the RoadGeometry. More...  
const BranchPoint *  branch_point (int index) const 
Returns the BranchPoint indexed by index . More...  
const IdIndex &  ById () const 
Accesses the IdIndex interface, which allows getting elements of the RoadGeometry's object graph by their unique id's. More...  
RoadPositionResult  ToRoadPosition (const InertialPosition &inertial_position, const std::optional< RoadPosition > &hint=std::nullopt) const 
Determines the RoadPosition corresponding to InertialPosition inertial_position . More...  
std::vector< RoadPositionResult >  FindRoadPositions (const InertialPosition &inertial_position, double radius) const 
Obtains all RoadPositions within radius of inertial_position . More...  
double  linear_tolerance () const 
Returns the tolerance guaranteed for linear measurements (positions). More...  
double  angular_tolerance () const 
Returns the tolerance guaranteed for angular measurements (orientations). More...  
double  scale_length () const 
Returns the characteristic scale length expressed by this RoadGeometry. More...  
std::vector< std::string >  CheckInvariants () const 
Verifies certain invariants guaranteed by the API. More...  
std::vector< InertialPosition >  SampleAheadWaypoints (const LaneSRoute &lane_s_route, double path_length_sampling_rate) const 
Samples lane_s_route at path_length_sampling_rate and converts those LanePositions into InertialPositions. More...  
math::Vector3  inertial_to_backend_frame_translation () const 
The Backend Frame is an inertial frame similar to the Inertial Frame that differ one from another by an isometric transformation. More...  
Protected Member Functions  
RoadGeometry ()=default  

virtualdefault 
Reimplemented in RoadGeometry.

protecteddefault 
double angular_tolerance  (  )  const 
Returns the tolerance guaranteed for angular measurements (orientations).
const BranchPoint* branch_point  (  int  index  )  const 
Returns the BranchPoint indexed by index
.
index
must be >= 0 and < num_branch_points(). const IdIndex& ById  (  )  const 
Accesses the IdIndex interface, which allows getting elements of the RoadGeometry's object graph by their unique id's.
std::vector< std::string > CheckInvariants  (  )  const 
Verifies certain invariants guaranteed by the API.
Returns a vector of strings describing violations of invariants. Return value with size() == 0 indicates success.
std::vector< RoadPositionResult > FindRoadPositions  (  const InertialPosition &  inertial_position, 
double  radius  
)  const 
Obtains all RoadPositions within radius
of inertial_position
.
Only Lanes whose segment regions include points that are within radius
of inertial_position
are included in the search. For each of these Lanes, include the RoadPosition or RoadPositions with the minimum distance to inertial_position
in the returned result.
inertial_position  The inertial position to convert into one or more RoadPositions. 
radius  The maximum distance from inertial_position to search. It must not be negative. 
radius
is zero, the vector contains results with distance parameter being less or equal to linear_tolerance. When radius
is infinity, the query should return the closest point for each lane.maliput::common::assertion_error  When radius is negative. 
Note that derivative implementations may choose to violate the above semantics for performance reasons. See docstrings of derivative implementations for details.
RoadGeometryId id  (  )  const 
Returns the persistent identifier.
math::Vector3 inertial_to_backend_frame_translation  (  )  const 
The Backend Frame is an inertial frame similar to the Inertial Frame that differ one from another by an isometric transformation.
This method returns the translation vector between both frames.
For an explanation on the two different frames, see the explanation in maliput_design.h.
const Junction* junction  (  int  index  )  const 
Returns the Junction indexed by index
.
index
must be >= 0 and < num_junctions(). double linear_tolerance  (  )  const 
Returns the tolerance guaranteed for linear measurements (positions).
int num_branch_points  (  )  const 
Returns the number of BranchPoints in the RoadGeometry.
Return value is nonnegative.
int num_junctions  (  )  const 
Returns the number of Junctions in the RoadGeometry.
Return value is nonnegative.
std::vector< InertialPosition > SampleAheadWaypoints  (  const LaneSRoute &  lane_s_route, 
double  path_length_sampling_rate  
)  const 
Samples lane_s_route
at path_length_sampling_rate
and converts those LanePositions into InertialPositions.
When path_length_sampling_rate
is smaller than linear_tolerance, linear_tolerance will be used instead. When path_length_sampling_rate
is bigger than total lane_s_route
length (accumulated length of all LaneSRoute::ranges()) the minimum will be considered and two samples are taken. When total lane_s_route
's length is not an integral multiple of path_length_sampling_rate
, the last sampling step will be the remaining distance long only.
lane_s_route  A lane route. 
path_length_sampling_rate  The s coordinate sampling rate to sample lane_s_route . It must be positive. 
maliput::assertion_error  When path_length_sampling_rate is not positive. 
maliput::assertion_error  When any LaneSRange in lane_s_route.ranges() refers to an unknown Lane. 
double scale_length  (  )  const 
Returns the characteristic scale length expressed by this RoadGeometry.
RoadPositionResult ToRoadPosition  (  const InertialPosition &  inertial_position, 
const std::optional< RoadPosition > &  hint = std::nullopt 

)  const 
Determines the RoadPosition corresponding to InertialPosition inertial_position
.
If hint
is provided, its value is used to help determine the result.
Returns a RoadPositionResult. Its RoadPosition is the point in the RoadGeometry's manifold which is, in the Inertial
frame, closest to inertial_position
. Its InertialPosition is the Inertial
frame equivalent of the RoadPosition and its distance is the Cartesian distance from inertial_position
to the nearest point.
This method guarantees that its result satisfies the condition that result.lane>ToInertialPosition(result.pos)
is within linear_tolerance()
of the returned InertialPosition.
The map from RoadGeometry to the Inertial
frame is not onto (as a bounded RoadGeometry cannot completely cover the unbounded Cartesian universe). If inertial_position
does represent a point contained within the volume of the RoadGeometry, then result distance is guaranteed to be less than or equal to linear_tolerance()
.
The map from RoadGeometry to Inertial
frame is not necessarily onetoone. Different (s,r,h)
coordinates from different Lanes, potentially from different Segments, may map to the same (x,y,z)
Inertial
frame location.
If inertial_position
is contained within the volumes of multiple Segments, then ToRoadPosition() will choose a Segment which yields the minimum height h
value in the result. If the chosen Segment has multiple Lanes, then ToRoadPosition() will choose a Lane which contains inertial_position
within its lane_bounds()
if possible, and if that is still ambiguous, it will further select a Lane which minimizes the absolute value of the lateral r
coordinate in the result.