ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
basiclanechangeplanner.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  {
34  template<int K,int P>
36  {
37  private:
56 
66  public:
67 
79  adore::view::ALimitLineEnRoute* controlledConnectionOnSource,
80  adore::view::ALimitLineEnRoute* controlledConnectionOnTarget,
81  adore::view::ALimitLineEnRoute* checkpoint_on_source,
82  adore::view::ALimitLineEnRoute* checkpoint_on_target,
88  double lateral_i_grid = 0.0)
89  : DecoupledLFLCPlanner<K,P>(lcv->getTargetLane(),plon,plat,pveh,ptrajectory),
90  nominalReferenceSpeed_(lcv->getTargetLane(),plon,ptac),
91  breakAtHorizon_(lcv->getTargetLane(),pveh,ptrajectory),
92  curvatureSpeedLimit_(lcv->getTargetLane(),plon),
93  lfvSpeedLimit_onTarget_(lcv->getTargetLane(),ptac),
94  lfvSpeedLimit_onSource_(lcv->getSourceLane(),ptac),
98  lateralAccelerationReference_(lcv->getTargetLane()),
99  lateralJerkReference_(lcv->getTargetLane()),
100  followPrecedingVehicleOnSource_(lcv->getSourceLane(),pveh,ptac,ptrajectory),
101  followPrecedingVehicleOnTarget_(lcv->getTargetLane(),pveh,ptac,ptrajectory),
102  lowerBoundSGapToPrecedingVehicleOnTarget_(lcv->getTargetLane(),pveh,ptac,ptrajectory),
103  laneWidthSpeedLimitLFV_(lcv->getTargetLane(),plon),
104  stopAtBottleneckLFV_(lcv->getTargetLane(),plon,pveh,ptrajectory,ptac),
105  stopAtNextGoalPoint_(goalview),
106  stopAtRedLightOnSource_(controlledConnectionOnSource),
107  stopAtRedLightOnTarget_(controlledConnectionOnTarget),
108  stopAtCheckPointOnSource_(checkpoint_on_source),
109  stopAtCheckPointOnTarget_(checkpoint_on_target),
112  lateralAccelerationConstraintUB_(lcv->getTargetLane(),plat,ANominalConstraint::UB),
113  lateralAccelerationConstraintLB_(lcv->getTargetLane(),plat,ANominalConstraint::LB),
116  laneChangeIntoGapReference_(lcv,pveh,plat,lateral_i_grid)
117  {
118  this->info_.add(&nominalReferenceSpeed_);
119  this->info_.add(&breakAtHorizon_);
120  this->info_.add(&stopAtCheckPointOnSource_);
121  this->info_.add(&stopAtCheckPointOnTarget_);
122  this->info_.add(&stopAtRedLightOnSource_);
123  this->info_.add(&stopAtRedLightOnTarget_);
124  this->info_.add(&stopAtNextGoalPoint_);
125  this->info_.add(&curvatureSpeedLimit_);
126  this->info_.add(&lfvSpeedLimit_onTarget_);
127  this->info_.add(&lfvSpeedLimit_onSource_);
128  this->info_.add(&dontDriveBackwards_);
129  this->info_.add(&longitudinalAccelerationConstraintUB_);
130  this->info_.add(&longitudinalAccelerationConstraintLB_);
131  // this->info_.add(&laneWidthSpeedLimitLFV_);
132  this->info_.add(&followPrecedingVehicleOnSource_);
133  this->info_.add(&followPrecedingVehicleOnTarget_);
134  this->info_.add(&lowerBoundSGapToPrecedingVehicleOnTarget_);
135 
136  this->info_.add(&laneChangeIntoGapReference_);
137  this->info_.add(&lateralAccelerationReference_);
138  this->info_.add(&lateralJerkReference_);
139 
140  this->info_.add(&lateralOffsetConstraint_left_);
141  this->info_.add(&lateralOffsetConstraint_right_);
142  this->info_.add(&headingConstraintUB_);
143  this->info_.add(&headingConstraintLB_);
144  this->info_.add(&lateralAccelerationConstraintUB_);
145  this->info_.add(&lateralAccelerationConstraintLB_);
146  }
148  {
152  }
156  void setSpeedScale(double value)
157  {
159  }
160  };
161  }
162 }
Definition: anominalplanner.h:52
Definition: basicconstraintsandreferences.h:1043
Definition: basiclanechangeplanner.h:36
LowerBoundSGapToPrecedingVehicle lowerBoundSGapToPrecedingVehicleOnTarget_
Definition: basiclanechangeplanner.h:55
FollowPrecedingVehicle_BreakingCurve followPrecedingVehicleOnTarget_
Definition: basiclanechangeplanner.h:54
NominalReferenceSpeed nominalReferenceSpeed_
Definition: basiclanechangeplanner.h:38
LateralAccelerationConstraint lateralAccelerationConstraintUB_
Definition: basiclanechangeplanner.h:61
LongitudinalAccelerationConstraint longitudinalAccelerationConstraintLB_
Definition: basiclanechangeplanner.h:45
LFVSpeedLimit lfvSpeedLimit_onSource_
Definition: basiclanechangeplanner.h:42
LateralAccelerationConstraint lateralAccelerationConstraintLB_
Definition: basiclanechangeplanner.h:62
LateralOffsetConstraintLC lateralOffsetConstraint_left_
Definition: basiclanechangeplanner.h:63
void setGap(adore::view::AGap *gap)
Definition: basiclanechangeplanner.h:147
FollowPrecedingVehicle_BreakingCurve followPrecedingVehicleOnSource_
Definition: basiclanechangeplanner.h:53
StopAtBottleneckLFV stopAtBottleneckLFV_
Definition: basiclanechangeplanner.h:47
LateralOffsetConstraintLC lateralOffsetConstraint_right_
Definition: basiclanechangeplanner.h:64
LongitudinalAccelerationConstraint longitudinalAccelerationConstraintUB_
Definition: basiclanechangeplanner.h:44
void setSpeedScale(double value)
Definition: basiclanechangeplanner.h:156
AdhereToNextLimitLine stopAtRedLightOnTarget_
Definition: basiclanechangeplanner.h:50
LateralJerkReference lateralJerkReference_
Definition: basiclanechangeplanner.h:58
LaneChangeIntoGapReference laneChangeIntoGapReference_
Definition: basiclanechangeplanner.h:65
DontDriveBackwards dontDriveBackwards_
Definition: basiclanechangeplanner.h:43
LaneWidthSpeedLimitLFV laneWidthSpeedLimitLFV_
Definition: basiclanechangeplanner.h:46
AdhereToNextLimitLine stopAtRedLightOnSource_
Definition: basiclanechangeplanner.h:49
LFVSpeedLimit lfvSpeedLimit_onTarget_
Definition: basiclanechangeplanner.h:41
HeadingConstraint headingConstraintUB_
Definition: basiclanechangeplanner.h:59
BasicLaneChangePlanner(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: basiclanechangeplanner.h:77
StopAtNextGoalPoint stopAtNextGoalPoint_
Definition: basiclanechangeplanner.h:48
LateralAccelerationReference lateralAccelerationReference_
Definition: basiclanechangeplanner.h:57
BreakAtHorizon breakAtHorizon_
Definition: basiclanechangeplanner.h:39
HeadingConstraint headingConstraintLB_
Definition: basiclanechangeplanner.h:60
AdhereToNextLimitLine stopAtCheckPointOnSource_
Definition: basiclanechangeplanner.h:51
AdhereToNextLimitLine stopAtCheckPointOnTarget_
Definition: basiclanechangeplanner.h:52
CurvatureSpeedLimitPredict curvatureSpeedLimit_
Definition: basiclanechangeplanner.h:40
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: 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: basicconstraintsandreferences.h:203
Definition: basicconstraintsandreferences.h:361
Definition: basicconstraintsandreferences.h:547
Definition: basicconstraintsandreferences.h:575
Definition: lanechangeconstraintsandreferences.h:40
void setGap(adore::view::AGap *gap)
Definition: lanechangeconstraintsandreferences.h:58
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