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

#include <decoupled_lflc_planner.h>

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

Public Types

typedef adore::mad::LQ_OC_single_shooting< N, R, K, P > TProgressSolver
 
typedef adore::mad::LQ_OC_single_shooting< N, R, K, P > TOffsetSolver
 
typedef NominalPlannerInformationSet< N+1, 2 > TInformationSet
 

Public Member Functions

 DecoupledLFLCPlanner (adore::view::ALane *lfv, adore::params::APLongitudinalPlanner *aplon, adore::params::APLateralPlanner *aplat, adore::params::APVehicle *apvehicle, adore::params::APTrajectoryGeneration *aptrajectory)
 
void setPlanningHorizon (double Tend)
 
double getPlanningHorizon () const
 
TInformationSetgetInformationSet ()
 
TProgressSolvergetProgressSolver ()
 
TOffsetSolvergetOffsetSolver ()
 
RoadCoordinateConvertergetRoadCoordinateConverter ()
 
std::string getStatus ()
 
virtual void compute (const VehicleMotionState9d &initial_state) override
 
virtual bool hasValidPlan () const override
 
virtual const SetPointRequestgetSetPointRequest () const override
 
virtual double getCPUTime () const override
 

Static Public Attributes

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

Protected Attributes

TInformationSet info_
 

Private Member Functions

void init_progress_default_cost ()
 
void init_offset_default_cost ()
 
void initialize (double Tend)
 
void prepare_progress_computation ()
 
void prepare_offset_computation ()
 
bool update_guard (double &target, double value)
 
void update_progress_parameters ()
 
void update_offset_parameters ()
 

Private Attributes

TProgressSolver progress_solver_
 
TOffsetSolver offset_solver_
 
double s0
 
double ds0
 
double dds0
 
double n0
 
double dn0
 
double ddn0
 
double psi0
 
double omega0
 
double t0
 
double T_ [K+1]
 
double T_end_
 time steps, incl. 0 at 0 More...
 
RoadCoordinateConverter roadCoordinates_
 end time of plan, defines planning horizon as [0,T_end_] More...
 
adore::params::APLongitudinalPlanneraplon_
 
adore::params::APLateralPlanneraplat_
 
adore::params::APTrajectoryGenerationaptraj_
 
adore::params::APVehicleapvehicle_
 
SetPointRequest spr_
 
bool valid_
 the result as a set-point request More...
 
int step_
 

Detailed Description

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

Plans trajectories in a road relative coordinate system in 3 steps, using qpOASES. In step 1 the longitudinal motion of a point mass along the road coordinate s, the progress is optimized. In step 2 the lateral motion of a point mass is optimized. In step 3 the detailed vehicle dynamics is recovered by solving an initial value problem for the zero dynamics of the vehile model. Template parameter K defines number of time steps considered during planning, K*P is an increased number of time steps gained by interpolation. The optimization problems in step 1 and 2 are formulated as linear-quadratic with box constraints for integrator chains with input at the third derivative. All constraints and references for the optimization problems have to be externally supplied via the NominalPlannerInformationSet interface.

Member Typedef Documentation

◆ TInformationSet

◆ TOffsetSolver

◆ TProgressSolver

Constructor & Destructor Documentation

◆ DecoupledLFLCPlanner()

Here is the call graph for this function:

Member Function Documentation

◆ compute()

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

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::DecoupledLFLCPlanner< K, P >::getCPUTime ( ) const
inlineoverridevirtual

getCPUTime - return the time require for trajectory planning in seconds

Implements adore::fun::ANominalPlanner.

◆ getInformationSet()

template<int K, int P>
TInformationSet& adore::fun::DecoupledLFLCPlanner< K, P >::getInformationSet ( )
inline

◆ getOffsetSolver()

template<int K, int P>
TOffsetSolver& adore::fun::DecoupledLFLCPlanner< K, P >::getOffsetSolver ( )
inline
Here is the caller graph for this function:

◆ getPlanningHorizon()

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::getPlanningHorizon ( ) const
inline
Here is the caller graph for this function:

◆ getProgressSolver()

template<int K, int P>
TProgressSolver& adore::fun::DecoupledLFLCPlanner< K, P >::getProgressSolver ( )
inline
Here is the caller graph for this function:

◆ getRoadCoordinateConverter()

template<int K, int P>
RoadCoordinateConverter& adore::fun::DecoupledLFLCPlanner< K, P >::getRoadCoordinateConverter ( )
inline
Here is the caller graph for this function:

◆ getSetPointRequest()

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

getSetPointRequest - return computed trajectory in the form of a SetPointRequest

Implements adore::fun::ANominalPlanner.

Here is the caller graph for this function:

◆ getStatus()

template<int K, int P>
std::string adore::fun::DecoupledLFLCPlanner< K, P >::getStatus ( )
inline
Here is the caller graph for this function:

◆ hasValidPlan()

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

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

Implements adore::fun::ANominalPlanner.

Here is the caller graph for this function:

◆ init_offset_default_cost()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::init_offset_default_cost ( )
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_progress_default_cost()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::init_progress_default_cost ( )
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::initialize ( double  Tend)
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ prepare_offset_computation()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::prepare_offset_computation ( )
inlineprivate

prepare_offset_computation - sets up the constraints for the lateral optimization problem

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

◆ prepare_progress_computation()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::prepare_progress_computation ( )
inlineprivate

prepare_progress_computation - sets up the constraints for the longitudinal optimization problem

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

◆ setPlanningHorizon()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::setPlanningHorizon ( double  Tend)
inline
Here is the call graph for this function:

◆ update_guard()

template<int K, int P>
bool adore::fun::DecoupledLFLCPlanner< K, P >::update_guard ( double &  target,
double  value 
)
inlineprivate
Here is the caller graph for this function:

◆ update_offset_parameters()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::update_offset_parameters ( )
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_progress_parameters()

template<int K, int P>
void adore::fun::DecoupledLFLCPlanner< K, P >::update_progress_parameters ( )
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ aplat_

template<int K, int P>
adore::params::APLateralPlanner* adore::fun::DecoupledLFLCPlanner< K, P >::aplat_
private

◆ aplon_

template<int K, int P>
adore::params::APLongitudinalPlanner* adore::fun::DecoupledLFLCPlanner< K, P >::aplon_
private

◆ aptraj_

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

◆ apvehicle_

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

◆ ddn0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::ddn0
private

◆ dds0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::dds0
private

◆ dn0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::dn0
private

◆ ds0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::ds0
private

◆ info_

template<int K, int P>
TInformationSet adore::fun::DecoupledLFLCPlanner< K, P >::info_
protected

◆ N

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

◆ n0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::n0
private

◆ offset_solver_

template<int K, int P>
TOffsetSolver adore::fun::DecoupledLFLCPlanner< K, P >::offset_solver_
private

◆ omega0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::omega0
private

◆ progress_solver_

template<int K, int P>
TProgressSolver adore::fun::DecoupledLFLCPlanner< K, P >::progress_solver_
private

◆ psi0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::psi0
private

◆ R

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

◆ roadCoordinates_

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

end time of plan, defines planning horizon as [0,T_end_]

◆ s0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::s0
private

◆ spr_

template<int K, int P>
SetPointRequest adore::fun::DecoupledLFLCPlanner< K, P >::spr_
private

◆ step_

template<int K, int P>
int adore::fun::DecoupledLFLCPlanner< K, P >::step_
private

◆ t0

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::t0
private

◆ T_

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::T_[K+1]
private

◆ T_end_

template<int K, int P>
double adore::fun::DecoupledLFLCPlanner< K, P >::T_end_
private

time steps, incl. 0 at 0

◆ valid_

template<int K, int P>
bool adore::fun::DecoupledLFLCPlanner< K, P >::valid_
private

the result as a set-point request


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