maliput_multilane
ArcRoadCurve Class Reference

Detailed Description

RoadCurve specification for a reference curve that describes a piece of an arc.

#include <src/maliput_multilane/arc_road_curve.h>

Inheritance diagram for ArcRoadCurve:
[legend]

Public Member Functions

 ArcRoadCurve (const math::Vector2 &center, double radius, double theta0, double d_theta, const CubicPolynomial &elevation, const CubicPolynomial &superelevation, double linear_tolerance, double scale_length, ComputationPolicy computation_policy)
 Constructor. More...
 
 ~ArcRoadCurve () override=default
 
math::Vector2 xy_of_p (double p) const override
 Computes the reference curve. More...
 
math::Vector2 xy_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...
 
math::Vector3 ToCurveFrame (const math::Vector3 &geo_coordinate, double r_min, double r_max, const api::HBounds &height_bounds) const override
 Converts a inertial_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...
 
- Public Member Functions inherited from RoadCurve
virtual ~RoadCurve ()=default
 
const CubicPolynomialelevation () const
 
const CubicPolynomialsuperelevation () const
 
const double & linear_tolerance () const
 
const double & scale_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...
 
math::Vector3 W_of_prh (double p, double r, double h) const
 Returns W, the world function evaluated at p, r, h. More...
 
math::Vector3 W_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...
 
math::Vector3 s_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...
 
math::Vector3 r_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...
 

Additional Inherited Members

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

Constructor & Destructor Documentation

◆ ArcRoadCurve()

ArcRoadCurve ( const math::Vector2 center,
double  radius,
double  theta0,
double  d_theta,
const CubicPolynomial elevation,
const CubicPolynomial superelevation,
double  linear_tolerance,
double  scale_length,
ComputationPolicy  computation_policy 
)
explicit

Constructor.

The reference curve is created from the circle center, the radius, initial angular position theta0 and the angle span d_theta. elevation and superelevation polynomials will be used to feed RoadGeometry parent class.

Parameters
centerCenter of the reference arc.
radiusRadius of the reference arc (must be positive).
theta0Angle of the start point of the reference arc with respect to center (0 == parallel to x-axis).
d_thetaCentral angle of the arc, i.e., angular displacement from start to end. d_theta > 0 is counter-clockwise.
elevationCubicPolynomial object that represents the elevation polynomial. See RoadCurve class constructor for more details.
superelevationCubicPolynomial object that represents the superelevation polynomial. See RoadCurve class constructor for more details.
linear_toleranceThe linear tolerance, in meters, for all computations. See RoadCurve class constructor for more details.
scale_lengthThe minimum spatial period of variation in the curve, in meters. See RoadCurve class constructor for more details.
computation_policyPolicy 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
maliput::common::assertion_errorif radius is not a positive number.
maliput::common::assertion_errorif linear_tolerance is not a positive number.
maliput::common::assertion_errorif scale_length is not a positive number.

◆ ~ArcRoadCurve()

~ArcRoadCurve ( )
overridedefault

Member Function Documentation

◆ heading_dot_of_p()

double heading_dot_of_p ( double  p) const
overridevirtual

Computes the first derivative heading of the reference curve.

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

Implements RoadCurve.

◆ heading_of_p()

double heading_of_p ( double  p) const
overridevirtual

Computes the heading of the reference curve.

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

Implements RoadCurve.

◆ IsValid()

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

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_minMinimum lateral distance from the composed curve to evaluate the validity of the geometry.
r_maxMaximum lateral distance from the composed curve to evaluate the validity of the geometry.
height_boundsAn api::HBounds object that represents the elevation bounds of the surface mapping.
Returns
True when there are no self-intersections.

Implements RoadCurve.

◆ l_max()

double l_max ( ) const
overridevirtual

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.

Implements RoadCurve.

◆ ToCurveFrame()

math::Vector3 ToCurveFrame ( const math::Vector3 inertial_coordinate,
double  r_min,
double  r_max,
const api::HBounds height_bounds 
) const
overridevirtual

Converts a inertial_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
inertial_coordinateA 3D vector in the world frame to be converted to the composed curve frame.
r_minMinimum lateral distance from the composed curve to saturate, if it is necessary, the result in the given direction.
r_maxMaximum lateral distance from the composed curve to evaluate, if it is necessary, the result in the given direction
height_boundsAn 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 inertial_coordinate.

Implements RoadCurve.

◆ xy_dot_of_p()

math::Vector2 xy_dot_of_p ( double  p) const
overridevirtual

Computes the first derivative of the reference curve.

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

Implements RoadCurve.

◆ xy_of_p()

math::Vector2 xy_of_p ( double  p) const
overridevirtual

Computes the reference curve.

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

Implements RoadCurve.


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