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

#include <lateralplanner.h>

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

Public Types

typedef adore::mad::LQ_OC_single_shooting< N, R, K, P > TOffsetSolver
 
typedef NominalPlannerInformationSet< N+1, 2 > TInformationSet
 
typedef adore::mad::LLinearPiecewiseFunctionM< double, N+RTLongitudinalPlan
 
typedef adore::mad::LLinearPiecewiseFunctionM< double, N+RTLateralPlan
 

Public Member Functions

 LateralPlanner (adore::view::ALane *lfv, adore::params::APLateralPlanner *aplat, adore::params::APVehicle *apvehicle, adore::params::APTrajectoryGeneration *aptrajectory)
 
void setPlanningHorizon (double Tend)
 
TInformationSetgetInformationSet ()
 
TOffsetSolvergetOffsetSolver ()
 
RoadCoordinateConvertergetRoadCoordinateConverter ()
 
void compute (const VehicleMotionState9d &initial_state, TLongitudinalPlan *longitudinal_plan, double t0_offset, double s0_offset)
 
TLateralPlangetLateralPlan ()
 
double getTend () const
 
bool hasValidPlan () const
 
const SetPointRequestgetSetPointRequest () const
 
double getCPUTime () const
 

Static Public Attributes

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

Protected Attributes

TInformationSet info_
 

Private Member Functions

void init_offset_default_cost ()
 
void initialize (double Tend)
 
void prepare_offset_computation (TLongitudinalPlan *longitudinal_plan, double t0_offset, double s0_offset)
 
bool update_guard (double &target, double value)
 
void update_offset_parameters ()
 

Private Attributes

TOffsetSolver offset_solver_
 
double n0_
 
double dn0_
 
double ddn0_
 
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::APLateralPlanneraplat_
 
adore::params::APTrajectoryGenerationaptraj_
 
adore::params::APVehicleapvehicle_
 
SetPointRequest spr_
 
bool valid_
 the result as a set-point request More...
 

Detailed Description

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

Plans lateral components of trajectories in a road relative coordinate system in 2 steps, using qpOASES. The longitudinal trajectory is assumed a given. In step 1 the lateral motion of a point mass is optimized. In step 2 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 problem in step 1 is 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

template<int K, int P>
typedef NominalPlannerInformationSet<N+1,2> adore::fun::LateralPlanner< K, P >::TInformationSet

◆ TLateralPlan

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

◆ TLongitudinalPlan

◆ TOffsetSolver

template<int K, int P>
typedef adore::mad::LQ_OC_single_shooting<N,R,K,P> adore::fun::LateralPlanner< K, P >::TOffsetSolver

Constructor & Destructor Documentation

◆ LateralPlanner()

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

Member Function Documentation

◆ compute()

template<int K, int P>
void adore::fun::LateralPlanner< K, P >::compute ( const VehicleMotionState9d initial_state,
TLongitudinalPlan longitudinal_plan,
double  t0_offset,
double  s0_offset 
)
inline

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

Here is the call graph for this function:

◆ getCPUTime()

template<int K, int P>
double adore::fun::LateralPlanner< K, P >::getCPUTime ( ) const
inline

getCPUTime - return the time require for trajectory planning in seconds

◆ getInformationSet()

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

◆ getLateralPlan()

template<int K, int P>
TLateralPlan& adore::fun::LateralPlanner< K, P >::getLateralPlan ( )
inline
Here is the call graph for this function:

◆ getOffsetSolver()

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

◆ getRoadCoordinateConverter()

template<int K, int P>
RoadCoordinateConverter& adore::fun::LateralPlanner< K, P >::getRoadCoordinateConverter ( )
inline

◆ getSetPointRequest()

template<int K, int P>
const SetPointRequest* adore::fun::LateralPlanner< K, P >::getSetPointRequest ( ) const
inline

getSetPointRequest - return computed trajectory in the form of a SetPointRequest

◆ getTend()

template<int K, int P>
double adore::fun::LateralPlanner< K, P >::getTend ( ) const
inline

◆ hasValidPlan()

template<int K, int P>
bool adore::fun::LateralPlanner< K, P >::hasValidPlan ( ) const
inline

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

◆ init_offset_default_cost()

template<int K, int P>
void adore::fun::LateralPlanner< K, P >::init_offset_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::LateralPlanner< 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::LateralPlanner< K, P >::prepare_offset_computation ( TLongitudinalPlan longitudinal_plan,
double  t0_offset,
double  s0_offset 
)
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:

◆ setPlanningHorizon()

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

◆ update_guard()

template<int K, int P>
bool adore::fun::LateralPlanner< 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::LateralPlanner< K, P >::update_offset_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::LateralPlanner< K, P >::aplat_
private

◆ aptraj_

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

◆ apvehicle_

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

◆ ddn0_

template<int K, int P>
double adore::fun::LateralPlanner< K, P >::ddn0_
private

◆ dn0_

template<int K, int P>
double adore::fun::LateralPlanner< K, P >::dn0_
private

◆ info_

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

◆ N

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

◆ n0_

template<int K, int P>
double adore::fun::LateralPlanner< K, P >::n0_
private

◆ offset_solver_

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

◆ R

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

◆ roadCoordinates_

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

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

◆ spr_

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

◆ T_

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

◆ T_end_

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

time steps, incl. 0 at 0

◆ valid_

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

the result as a set-point request


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