ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
advancedlanechangeplanner.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2017-2020 German Aerospace Center (DLR).
3  * Eclipse ADORe, Automated Driving Open Research https://eclipse.org/adore
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License 2.0 which is available at
7  * http://www.eclipse.org/legal/epl-2.0.
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  * Matthias Nichting - initial API and implementation
13  ********************************************************************************/
14 
15 
16 #pragma once
17 #include "decoupled_lflc_planner.h"
20 #include <adore/view/alane.h>
24 
25 
26 namespace adore
27 {
28  namespace fun
29  {
35  template<int K,int P>
37  {
38  private:
68  public:
69 
81  adore::view::ALimitLineEnRoute* controlledConnectionOnSource,
82  adore::view::ALimitLineEnRoute* controlledConnectionOnTarget,
83  adore::view::ALimitLineEnRoute* checkpoint_on_source,
84  adore::view::ALimitLineEnRoute* checkpoint_on_target,
90  double lateral_i_grid = 0.0)
91  : DecoupledLFLCPlanner<K,P>(lcv->getTargetLane(),plon,plat,pveh,ptrajectory),
92  phaseEstimator_(lcv,pveh,plat,ptrajectory,ptac),
93  nominalReferenceSpeed_(lcv->getTargetLane(),plon,ptac),
94  breakAtHorizon_(lcv->getTargetLane(),pveh,ptrajectory),
95  curvatureSpeedLimit_(lcv->getTargetLane(),plon),
96  lfvSpeedLimit_onTarget_(lcv->getTargetLane(),ptac),
97  lfvSpeedLimit_onSource_(lcv->getSourceLane(),ptac),
101  lateralAccelerationReference_(lcv->getTargetLane()),
102  lateralJerkReference_(lcv->getTargetLane()),
103  followPrecedingVehicleOnSource_(lcv->getSourceLane(),&phaseEstimator_,pveh,ptac,ptrajectory),
104  followPrecedingVehicleOnTarget_(lcv->getTargetLane(),pveh,ptac,ptrajectory),
105  lowerBoundSGapToPrecedingVehicleOnTarget_(lcv->getTargetLane(),pveh,ptac,ptrajectory),
106  laneWidthSpeedLimitLFV_(lcv->getTargetLane(),plon),
107  stopAtBottleneckLFV_(lcv->getTargetLane(),plon,pveh,ptrajectory,ptac),
108  stopAtNextGoalPoint_(goalview),
109  stopAtRedLightOnSource_(controlledConnectionOnSource),
110  stopAtRedLightOnTarget_(controlledConnectionOnTarget),
111  stopAtCheckPointOnSource_(checkpoint_on_source),
112  stopAtCheckPointOnTarget_(checkpoint_on_target),
115  lateralAccelerationConstraintUB_(lcv->getTargetLane(),plat,ANominalConstraint::UB),
116  lateralAccelerationConstraintLB_(lcv->getTargetLane(),plat,ANominalConstraint::LB),
119  laneChangeIntoGapReference_(lcv,pveh,plat,lateral_i_grid)
120  {
121  this->info_.add(&nominalReferenceSpeed_);
122  this->info_.add(&breakAtHorizon_);
123  this->info_.add(&stopAtCheckPointOnSource_);
124  this->info_.add(&stopAtCheckPointOnTarget_);
125  this->info_.add(&stopAtRedLightOnSource_);
126  this->info_.add(&stopAtRedLightOnTarget_);
127  this->info_.add(&stopAtNextGoalPoint_);
128  this->info_.add(&curvatureSpeedLimit_);
129  this->info_.add(&lfvSpeedLimit_onTarget_);
130  this->info_.add(&lfvSpeedLimit_onSource_);
131  this->info_.add(&dontDriveBackwards_);
132  this->info_.add(&longitudinalAccelerationConstraintUB_);
133  this->info_.add(&longitudinalAccelerationConstraintLB_);
134  // this->info_.add(&laneWidthSpeedLimitLFV_);
135  this->info_.add(&followPrecedingVehicleOnSource_);
136  this->info_.add(&followPrecedingVehicleOnTarget_);
137  this->info_.add(&lowerBoundSGapToPrecedingVehicleOnTarget_);
138 
139  this->info_.add(&laneChangeIntoGapReference_);
140  this->info_.add(&lateralAccelerationReference_);
141  this->info_.add(&lateralJerkReference_);
142 
143  this->info_.add(&lateralOffsetConstraint_left_);
144  this->info_.add(&lateralOffsetConstraint_right_);
145  this->info_.add(&headingConstraintUB_);
146  this->info_.add(&headingConstraintLB_);
147  this->info_.add(&lateralAccelerationConstraintUB_);
148  this->info_.add(&lateralAccelerationConstraintLB_);
149  this->info_.add(&phaseEstimator_);
150  }
152  {
156  phaseEstimator_.setGap(gap);
157  }
161  void setSpeedScale(double value)
162  {
164  }
165  };
166  }
167 }
Definition: anominalplanner.h:52
Definition: basicconstraintsandreferences.h:1043
Definition: advancedlanechangeplanner.h:37
HeadingConstraint headingConstraintUB_
Definition: advancedlanechangeplanner.h:60
AdhereToNextLimitLine stopAtCheckPointOnSource_
Definition: advancedlanechangeplanner.h:53
HeadingConstraint headingConstraintLB_
Definition: advancedlanechangeplanner.h:61
LateralAccelerationConstraint lateralAccelerationConstraintLB_
Definition: advancedlanechangeplanner.h:63
AdvancedLateralOffsetConstraintLC lateralOffsetConstraint_right_
Definition: advancedlanechangeplanner.h:65
LongitudinalAccelerationConstraint longitudinalAccelerationConstraintUB_
Definition: advancedlanechangeplanner.h:46
void setSpeedScale(double value)
Definition: advancedlanechangeplanner.h:161
DontDriveBackwards dontDriveBackwards_
Definition: advancedlanechangeplanner.h:45
CurvatureSpeedLimitPredict curvatureSpeedLimit_
Definition: advancedlanechangeplanner.h:42
LongitudinalAccelerationConstraint longitudinalAccelerationConstraintLB_
Definition: advancedlanechangeplanner.h:47
FollowPrecedingVehicleOnLaneToBeLeft_BrakingCurve followPrecedingVehicleOnSource_
Definition: advancedlanechangeplanner.h:55
BreakAtHorizon breakAtHorizon_
Definition: advancedlanechangeplanner.h:41
LFVSpeedLimit lfvSpeedLimit_onTarget_
Definition: advancedlanechangeplanner.h:43
StopAtNextGoalPoint stopAtNextGoalPoint_
Definition: advancedlanechangeplanner.h:50
LaneChangeIntoGapReference laneChangeIntoGapReference_
Definition: advancedlanechangeplanner.h:66
LaneWidthSpeedLimitLFV laneWidthSpeedLimitLFV_
Definition: advancedlanechangeplanner.h:48
AdhereToNextLimitLine stopAtRedLightOnTarget_
Definition: advancedlanechangeplanner.h:52
LowerBoundSGapToPrecedingVehicle lowerBoundSGapToPrecedingVehicleOnTarget_
Definition: advancedlanechangeplanner.h:57
LateralJerkReference lateralJerkReference_
Definition: advancedlanechangeplanner.h:59
AdhereToNextLimitLine stopAtRedLightOnSource_
Definition: advancedlanechangeplanner.h:51
FollowPrecedingVehicle_BreakingCurve followPrecedingVehicleOnTarget_
Definition: advancedlanechangeplanner.h:56
LaneChangePhaseEstimator phaseEstimator_
Definition: advancedlanechangeplanner.h:39
LateralAccelerationReference lateralAccelerationReference_
Definition: advancedlanechangeplanner.h:58
LateralAccelerationConstraint lateralAccelerationConstraintUB_
Definition: advancedlanechangeplanner.h:62
StopAtBottleneckLFV stopAtBottleneckLFV_
Definition: advancedlanechangeplanner.h:49
AdvancedLateralOffsetConstraintLC lateralOffsetConstraint_left_
Definition: advancedlanechangeplanner.h:64
AdhereToNextLimitLine stopAtCheckPointOnTarget_
Definition: advancedlanechangeplanner.h:54
NominalReferenceSpeed nominalReferenceSpeed_
Definition: advancedlanechangeplanner.h:40
void setGap(adore::view::AGap *gap)
Definition: advancedlanechangeplanner.h:151
LFVSpeedLimit lfvSpeedLimit_onSource_
Definition: advancedlanechangeplanner.h:44
AdvancedLaneChangePlanner(adore::view::ALaneChangeView *lcv, adore::view::ANavigationGoalView *goalview, adore::view::ALimitLineEnRoute *controlledConnectionOnSource, adore::view::ALimitLineEnRoute *controlledConnectionOnTarget, adore::view::ALimitLineEnRoute *checkpoint_on_source, adore::view::ALimitLineEnRoute *checkpoint_on_target, adore::params::APLongitudinalPlanner *plon, adore::params::APLateralPlanner *plat, adore::params::APTacticalPlanner *ptac, adore::params::APVehicle *pveh, adore::params::APTrajectoryGeneration *ptrajectory, double lateral_i_grid=0.0)
Definition: advancedlanechangeplanner.h:79
Definition: lanechangeconstraintsandreferences.h:278
void setGap(adore::view::AGap *gap)
Definition: lanechangeconstraintsandreferences.h:298
Definition: basicconstraintsandreferences.h:323
Definition: basicconstraintsandreferences.h:119
Definition: decoupled_lflc_planner.h:42
TInformationSet info_
Definition: decoupled_lflc_planner.h:52
Definition: basicconstraintsandreferences.h:178
Definition: lanechangeconstraintsandreferences.h:417
Definition: basicconstraintsandreferences.h:917
Definition: basicconstraintsandreferences.h:409
Definition: basicconstraintsandreferences.h:453
Definition: lanechangeconstraintsandreferences.h:579
void setGap(adore::view::AGap *gap)
Definition: lanechangeconstraintsandreferences.h:594
Definition: lanechangeconstraintsandreferences.h:189
void setGap(adore::view::AGap *gap)
Definition: lanechangeconstraintsandreferences.h:205
Definition: basicconstraintsandreferences.h:203
Definition: basicconstraintsandreferences.h:361
Definition: basicconstraintsandreferences.h:547
Definition: basicconstraintsandreferences.h:575
Definition: basicconstraintsandreferences.h:804
Definition: basicconstraintsandreferences.h:982
void add(ANominalReference *r)
Definition: anominalplannerinformation.h:68
Definition: basicconstraintsandreferences.h:603
void setSpeedScale(double value)
Definition: basicconstraintsandreferences.h:626
Definition: basicconstraintsandreferences.h:264
Definition: basicconstraintsandreferences.h:1133
abstract class containing parameters related to configuring the lateral planner
Definition: ap_lateral_planner.h:26
abstract class containing parameters related to configuring the longitudinal planner
Definition: ap_longitudinal_planner.h:26
abstract classs containing parameters to configure aspects and constraints of the tactical planner
Definition: ap_tactical_planner.h:25
abstract class containing parameters to configure the behaviour of trajectory generation
Definition: ap_trajectory_generation.h:26
abstract class for vehicle configuration related paremeters
Definition: ap_vehicle.h:29
defines a gap in traffic, into which a merge may be planned
Definition: agap.h:25
Definition: alanechangeview.h:27
Definition: alimitlineenroute.h:26
Definition: anavigationgoalview.h:25
Definition: areaofeffectconverter.h:20