ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
adore::fun::MRMPlanner< K, P > Class Template Reference

#include <mrmplanner.h>

Inheritance diagram for adore::fun::MRMPlanner< K, P >:
Inheritance graph
Collaboration diagram for adore::fun::MRMPlanner< K, P >:
Collaboration graph

Public Types

typedef adore::mad::LLinearPiecewiseFunctionM< double, N+RTPartialPlan
 
typedef InformationSetPostProcessing< 4, 2 > TPostProcessConstraints
 

Public Member Functions

void setJMax (double value)
 
void setTStall (double value)
 
void setAStall (double value)
 
void setAMin (double value)
 
void setSecondAttempt (bool value)
 
 MRMPlanner (adore::view::ALane *lfv, adore::params::APLateralPlanner *aplat, adore::params::APVehicle *apvehicle, adore::params::APTrajectoryGeneration *aptrajectory)
 
TPostProcessConstraints::TInformationSetgetInformationSet ()
 
double amin_medium_brake_trapezoidal (double v0, double a0, double jmin) const
 minimum acceleration that can be achieved before inverting jerk to end with v=0 and a=0 More...
 
void t_short_brake_trapezoidal (double v0, double a0, double jmin, double t3)
 times required for ramp up during short brake More...
 
void t_medium_brake_trapezoidal (double v0, double a0, double jmin, double &t1, double &t3) const
 times required for ramp down and ramp up during medium brake More...
 
void t_long_brake_trapezoidal (double v0, double a0, double amin, double jmin, double &t1, double &t2, double &t3) const
 times required for ramp down, constant and ramp up during long brake More...
 
int brake_case_trapezoidal (double v0, double a0, double amin, double jmin) const
 
void brake_params_trapezoidal (double v0, double a0, double amin, double jmin, double &a1, double &t1, double &t2, double &t3)
 general parameters More...
 
double a_brake_trapezoidal (double t, double a0, double a1, double jmin, double t1, double t2, double t3)
 
double j_brake_trapezoidal (double t, double jmin, double t1, double t2, double t3)
 
virtual void compute (const VehicleMotionState9d &initial_state)
 
TPartialPlangetLongitudinalPlan ()
 
TPartialPlangetLateralPlan ()
 
LateralPlanner< K, P > & getOffsetSolver ()
 
virtual bool hasValidPlan () const
 
virtual const SetPointRequestgetSetPointRequest () const
 
virtual double getCPUTime () const
 

Static Public Attributes

static const int N = 3
 
static const int R = 1
 

Private Attributes

LateralPlanner< K, P > lateralPlanner_
 
TPartialPlan longitudinal_plan_
 
TPostProcessConstraints postproc_
 
RoadCoordinateConverter roadCoordinates_
 
adore::params::APTrajectoryGenerationaptraj_
 
adore::params::APVehicleapvehicle_
 
double jmax_
 
double tstall_
 
double astall_
 
double amin_
 
bool second_attempt_
 
bool longitudinal_plan_valid_
 

Detailed Description

template<int K, int P>
class adore::fun::MRMPlanner< K, P >

MRMPlanner uses a fixed acceleration profile and LateralPlanner to compute a braking trajectory. The fixed acceleration profile consists of two phases with different accelerations and may be parametrized by tstall, the duration of phase 0, astall, the acceleration of phase 0 and amin, the acceleration of phase 1. The lateral motion is constrained to the current lane. If the trajectory with two phases (delayed action) is invalid, a trajectory with immediate deceleration with amin will be attempted.

Member Typedef Documentation

◆ TPartialPlan

template<int K, int P>
typedef adore::mad::LLinearPiecewiseFunctionM<double,N+R> adore::fun::MRMPlanner< K, P >::TPartialPlan

◆ TPostProcessConstraints

template<int K, int P>
typedef InformationSetPostProcessing<4,2> adore::fun::MRMPlanner< K, P >::TPostProcessConstraints

Constructor & Destructor Documentation

◆ MRMPlanner()

template<int K, int P>
adore::fun::MRMPlanner< K, P >::MRMPlanner ( adore::view::ALane lfv,
adore::params::APLateralPlanner aplat,
adore::params::APVehicle apvehicle,
adore::params::APTrajectoryGeneration aptrajectory 
)
inline
Here is the call graph for this function:

Member Function Documentation

◆ a_brake_trapezoidal()

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::a_brake_trapezoidal ( double  t,
double  a0,
double  a1,
double  jmin,
double  t1,
double  t2,
double  t3 
)
inline
Here is the caller graph for this function:

◆ amin_medium_brake_trapezoidal()

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::amin_medium_brake_trapezoidal ( double  v0,
double  a0,
double  jmin 
) const
inline

minimum acceleration that can be achieved before inverting jerk to end with v=0 and a=0

Here is the caller graph for this function:

◆ brake_case_trapezoidal()

template<int K, int P>
int adore::fun::MRMPlanner< K, P >::brake_case_trapezoidal ( double  v0,
double  a0,
double  amin,
double  jmin 
) const
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ brake_params_trapezoidal()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::brake_params_trapezoidal ( double  v0,
double  a0,
double  amin,
double  jmin,
double &  a1,
double &  t1,
double &  t2,
double &  t3 
)
inline

general parameters

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute()

template<int K, int P>
virtual void adore::fun::MRMPlanner< K, P >::compute ( const VehicleMotionState9d initial_state)
inlinevirtual

compute - try to compute a trajectory according to given constraints and objective

Implements adore::fun::ANominalPlanner.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCPUTime()

template<int K, int P>
virtual double adore::fun::MRMPlanner< K, P >::getCPUTime ( ) const
inlinevirtual

getCPUTime - return the time require for trajectory planning in seconds

Implements adore::fun::ANominalPlanner.

◆ getInformationSet()

template<int K, int P>
TPostProcessConstraints::TInformationSet& adore::fun::MRMPlanner< K, P >::getInformationSet ( )
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getLateralPlan()

template<int K, int P>
TPartialPlan& adore::fun::MRMPlanner< K, P >::getLateralPlan ( )
inline
Here is the caller graph for this function:

◆ getLongitudinalPlan()

template<int K, int P>
TPartialPlan& adore::fun::MRMPlanner< K, P >::getLongitudinalPlan ( )
inline
Here is the caller graph for this function:

◆ getOffsetSolver()

template<int K, int P>
LateralPlanner<K,P>& adore::fun::MRMPlanner< K, P >::getOffsetSolver ( )
inline

provide reference to lateralPlanner for manipulation of constraints and references

Here is the caller graph for this function:

◆ getSetPointRequest()

template<int K, int P>
virtual const SetPointRequest* adore::fun::MRMPlanner< K, P >::getSetPointRequest ( ) const
inlinevirtual

getSetPointRequest - return computed trajectory in the form of a SetPointRequest

Implements adore::fun::ANominalPlanner.

Here is the caller graph for this function:

◆ hasValidPlan()

template<int K, int P>
virtual bool adore::fun::MRMPlanner< K, P >::hasValidPlan ( ) const
inlinevirtual

hasValidPlan - return true, if a trajectory was computed, which satisfies given constraints

Implements adore::fun::ANominalPlanner.

Here is the caller graph for this function:

◆ j_brake_trapezoidal()

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::j_brake_trapezoidal ( double  t,
double  jmin,
double  t1,
double  t2,
double  t3 
)
inline
Here is the caller graph for this function:

◆ setAMin()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::setAMin ( double  value)
inline
Here is the caller graph for this function:

◆ setAStall()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::setAStall ( double  value)
inline
Here is the caller graph for this function:

◆ setJMax()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::setJMax ( double  value)
inline
Here is the caller graph for this function:

◆ setSecondAttempt()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::setSecondAttempt ( bool  value)
inline
Here is the caller graph for this function:

◆ setTStall()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::setTStall ( double  value)
inline
Here is the caller graph for this function:

◆ t_long_brake_trapezoidal()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::t_long_brake_trapezoidal ( double  v0,
double  a0,
double  amin,
double  jmin,
double &  t1,
double &  t2,
double &  t3 
) const
inline

times required for ramp down, constant and ramp up during long brake

Here is the caller graph for this function:

◆ t_medium_brake_trapezoidal()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::t_medium_brake_trapezoidal ( double  v0,
double  a0,
double  jmin,
double &  t1,
double &  t3 
) const
inline

times required for ramp down and ramp up during medium brake

Here is the call graph for this function:
Here is the caller graph for this function:

◆ t_short_brake_trapezoidal()

template<int K, int P>
void adore::fun::MRMPlanner< K, P >::t_short_brake_trapezoidal ( double  v0,
double  a0,
double  jmin,
double  t3 
)
inline

times required for ramp up during short brake

Here is the caller graph for this function:

Member Data Documentation

◆ amin_

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::amin_
private

delayed, hard deceleration value

◆ aptraj_

template<int K, int P>
adore::params::APTrajectoryGeneration* adore::fun::MRMPlanner< K, P >::aptraj_
private

◆ apvehicle_

template<int K, int P>
adore::params::APVehicle* adore::fun::MRMPlanner< K, P >::apvehicle_
private

◆ astall_

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::astall_
private

initial, soft deceleration value

◆ jmax_

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::jmax_
private

maximum absolute longitudinal accelration

◆ lateralPlanner_

template<int K, int P>
LateralPlanner<K,P> adore::fun::MRMPlanner< K, P >::lateralPlanner_
private

◆ longitudinal_plan_

template<int K, int P>
TPartialPlan adore::fun::MRMPlanner< K, P >::longitudinal_plan_
private

◆ longitudinal_plan_valid_

template<int K, int P>
bool adore::fun::MRMPlanner< K, P >::longitudinal_plan_valid_
private

is true, if a valid longitudinal trajectory is available

◆ N

template<int K, int P>
const int adore::fun::MRMPlanner< K, P >::N = 3
static

◆ postproc_

template<int K, int P>
TPostProcessConstraints adore::fun::MRMPlanner< K, P >::postproc_
private

◆ R

template<int K, int P>
const int adore::fun::MRMPlanner< K, P >::R = 1
static

◆ roadCoordinates_

template<int K, int P>
RoadCoordinateConverter adore::fun::MRMPlanner< K, P >::roadCoordinates_
private

◆ second_attempt_

template<int K, int P>
bool adore::fun::MRMPlanner< K, P >::second_attempt_
private

if trajectory with tstall_ is invalid and second_attempt_ is true, a trajectory with immediate amin with computed

◆ tstall_

template<int K, int P>
double adore::fun::MRMPlanner< K, P >::tstall_
private

delay, during which astall_ is applied. after tstall_, amin_ is applied. set tstall to 0 to gain immediate braking maneuver


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