Drake

RoadCurve specification for a reference curve that describes a line. More...

#include <drake/automotive/maliput/multilane/line_road_curve.h>

[legend]
[legend]

## Public Member Functions

LineRoadCurve (const Vector2< double > &xy0, const Vector2< double > &dxy, const CubicPolynomial &elevation, const CubicPolynomial &superelevation, double linear_tolerance, double scale_length, ComputationPolicy computation_policy)
Constructor. More...

Vector2< doublexy_of_p (double p) const override
Computes the reference curve. More...

Vector2< doublexy_dot_of_p (double p) const override
Computes the first derivative of the reference curve. More...

double heading_of_p (double p) const override
Computes the heading of the reference curve. More...

double heading_dot_of_p (double p) const override
Computes the first derivative heading of the reference curve. More...

double l_max () const override
Computes the path length integral of the reference curve for the whole [0; 1] interval of p, formally l_max = ∫₀¹ |G'(p)| dp where G' = dG/dp. More...

Vector3< doubleToCurveFrame (const Vector3< double > &geo_coordinate, double r_min, double r_max, const api::HBounds &height_bounds) const override
Converts a geo_coordinate in the world frame to the composed curve frame, i.e., the superposition of the reference curve, elevation and superelevation polynomials. More...

bool IsValid (double r_min, double r_max, const api::HBounds &height_bounds) const override
Checks that there are no self-intersections (singularities) in the volume created by applying the constant r_min, r_max and height_bounds to the RoadCurve. More...

Does not allow copy, move, or assignment

Public Member Functions inherited from RoadCurve

const CubicPolynomialelevation () const

const CubicPolynomialsuperelevation () const

const doublelinear_tolerance () const

const doublescale_length () const

const ComputationPolicycomputation_policy () const

std::function< double(double)> OptimizeCalcPFromS (double r) const
Optimizes the computation of the parametric position p along the reference curve from the longitudinal position (in path-length) s along a parallel curve laterally offset by r from the reference curve. More...

std::function< double(double)> OptimizeCalcSFromP (double r) const
Optimizes the computation of path length integral in the interval of the parameter [0; p] and along a parallel curve laterally offset by r the planar reference curve. More...

Vector3< doubleW_of_prh (double p, double r, double h) const
Returns W, the world function evaluated at p, r, h. More...

Vector3< doubleW_prime_of_prh (double p, double r, double h, const Rot3 &Rabg, double g_prime) const
Returns W' = ∂W/∂p, the partial differential of W with respect to p, evaluated at p, r, h. More...

Rot3 Rabg_of_p (double p) const
Returns the rotation R_αβγ, evaluated at p along the reference curve. More...

Rot3 Orientation (double p, double r, double h) const
Returns the rotation R_αβγ, evaluated at p, r and h. More...

Vector3< doubles_hat_of_prh (double p, double r, double h, const Rot3 &Rabg, double g_prime) const
Returns the s-axis unit-vector, expressed in the world frame, of the (s,r,h) Lane-frame (with respect to the world frame). More...

Vector3< doubler_hat_of_Rabg (const Rot3 &Rabg) const
Returns the r-axis unit-vector, expressed in the world frame, of the (s,r,h) Lane-frame (with respect to the world frame). More...

double CalcGPrimeAsUsedForCalcSFromP (double p) const
Computes the most appropriate value for the elevation derivative g' at p, that accounts for the limitations of the arc length parameterization being used. More...

Protected Member Functions inherited from RoadCurve
RoadCurve (double linear_tolerance, double scale_length, const CubicPolynomial &elevation, const CubicPolynomial &superelevation, ComputationPolicy computation_policy)
Constructs a road curve given elevation and superelevation curves. More...

## Detailed Description

RoadCurve specification for a reference curve that describes a line.

## Constructor & Destructor Documentation

delete
delete
 LineRoadCurve ( const Vector2< double > & xy0, const Vector2< double > & dxy, const CubicPolynomial & elevation, const CubicPolynomial & superelevation, double linear_tolerance, double scale_length, ComputationPolicy computation_policy )
inlineexplicit

Constructor.

Computes a line from xy0 as the initial point of the line and dxy as the difference vector that connects the xy0 with the end point of the reference curve.

Parameters
 xy0 A 2D vector that represents the first point of the lane. dxy A 2D difference vector between the last point and xy0. elevation CubicPolynomial object that represents the elevation polynomial. See RoadCurve class constructor for more details. superelevation CubicPolynomial object that represents the superelevation polynomial. See RoadCurve class constructor for more details. linear_tolerance The linear tolerance, in meters, for all computations. See RoadCurve class constructor for more details. scale_length The minimum spatial period of variation in the curve, in meters. See RoadCurve class constructor for more details. computation_policy Policy to guide all computations. If geared towards speed, computations will make use of analytical expressions even if not actually correct for the curve as specified.
Exceptions
 std::runtime_error if linear_tolerance is not a positive number. std::runtime_error if scale_length is not a positive number.

Here is the call graph for this function:

overridedefault

Here is the caller graph for this function:

## Member Function Documentation

 double heading_dot_of_p ( double p ) const
inlineoverridevirtual

Computes the first derivative heading of the reference curve.

Parameters
 p The reference curve parameter.
Returns
The derivative of the heading with respect to p, i.e., d_heading/dp evaluated at p.

Here is the call graph for this function:

 double heading_of_p ( double p ) const
inlineoverridevirtual

Computes the heading of the reference curve.

Parameters
 p The reference curve parameter.
Returns
The heading of the curve at p, i.e., the angle of the tangent vector (with respect to x-axis) in the increasing-p direction.

Here is the call graph for this function:

 bool IsValid ( double r_min, double r_max, const api::HBounds & height_bounds ) const
inlineoverridevirtual

Checks that there are no self-intersections (singularities) in the volume created by applying the constant r_min, r_max and height_bounds to the RoadCurve.

Parameters
 r_min Minimum lateral distance from the composed curve to evaluate the validity of the geometry. r_max Maximum lateral distance from the composed curve to evaluate the validity of the geometry. height_bounds An api::HBounds object that represents the elevation bounds of the surface mapping.
Returns
True when there are no self-intersections.

Here is the call graph for this function:

 double l_max ( ) const
inlineoverridevirtual

Computes the path length integral of the reference curve for the whole [0; 1] interval of p, formally l_max = ∫₀¹ |G'(p)| dp where G' = dG/dp.

Returns
The total path length of the reference curve.

Here is the call graph for this function:

Here is the caller graph for this function:

delete
delete
 Vector3< double > ToCurveFrame ( const Vector3< double > & geo_coordinate, double r_min, double r_max, const api::HBounds & height_bounds ) const
overridevirtual

Converts a geo_coordinate in the world frame to the composed curve frame, i.e., the superposition of the reference curve, elevation and superelevation polynomials.

The resulting coordinates [p, r, h] are saturated in the following domain ranges.

• p: [0, 1]
• r: [r_min, r_max]
• h: [height_bounds]
Parameters
 geo_coordinate A 3D vector in the world frame to be converted to the composed curve frame. r_min Minimum lateral distance from the composed curve to saturate, if it is necessary, the result in the given direction. r_max Maximum lateral distance from the composed curve to evaluate, if it is necessary, the result in the given direction height_bounds An api::HBounds object that represents the elevation bounds of the surface mapping.
Returns
A 3D vector [p, r, h], that represent the domain coordinates of the world function, that gives as world function output geo_cooridnate.

Here is the call graph for this function:

Here is the caller graph for this function:

 Vector2 xy_dot_of_p ( double p ) const
inlineoverridevirtual

Computes the first derivative of the reference curve.

Parameters
 p The reference curve parameter.
Returns
The derivative of the curve with respect to p, at p, i.e., F'(p0) = (dx/dp, dy/dp) at p0.

Here is the call graph for this function:

 Vector2 xy_of_p ( double p ) const
inlineoverridevirtual

Computes the reference curve.

Parameters
 p The reference curve parameter.
Returns
The reference curve itself, F(p).