ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
alane.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  * Daniel Heß - initial API and implementation
13  ********************************************************************************/
14 
15 #pragma once
16 #include "trafficobject.h"
17 #include "conflictset.h"
18 
19 namespace adore
20 {
21  namespace view
22  {
27  class ALane
28  {
29  public:
33  virtual bool isValid()const =0;
37  virtual double getSMax()const=0;
41  virtual double getSMin()const=0;
45  bool inSRange(double s)const
46  {
47  return getSMin()<s && s<getSMax();
48  }
52  virtual double getProgressOfWidthOpen()const =0;
56  virtual double getProgressOfWidthClosed()const =0;
60  virtual const TrafficQueue& getOnLaneTraffic()const =0;
64  virtual const ConflictSet& getConflictSet()const =0;
68  virtual double getSpeedLimit(double s) =0;
72  virtual double getLeftIndicatorHint(double s) =0;
76  virtual double getRightIndicatorHint(double s) =0;
80  virtual bool hasSpeedRecommendation(double s)const =0;
84  virtual double getSpeedRecommendation(double s)const =0;
88  virtual double getNavigationCost(double s) =0;
94  virtual void boundNavigationCost(double s0,double s1,double& cmin,double& cmax) =0;
98  virtual double getHeading(double s) =0;
104  virtual double getCurvature(double s, int derivative) =0;
108  virtual double getOffsetOfLeftBorder(double s) =0;
112  virtual double getOffsetOfRightBorder(double s) =0;
116  virtual void toRelativeCoordinates(double xe,double ye,double& s,double& n) =0;
120  virtual void toEucledianCoordinates(double s,double n,double& xe,double& ye,double& ze) =0;
121  };
122  }
123 }
Definition: alane.h:28
virtual double getProgressOfWidthClosed() const =0
virtual double getSpeedLimit(double s)=0
virtual void toRelativeCoordinates(double xe, double ye, double &s, double &n)=0
virtual const TrafficQueue & getOnLaneTraffic() const =0
virtual double getSMin() const =0
virtual double getOffsetOfRightBorder(double s)=0
virtual double getSMax() const =0
virtual double getNavigationCost(double s)=0
virtual void boundNavigationCost(double s0, double s1, double &cmin, double &cmax)=0
virtual const ConflictSet & getConflictSet() const =0
virtual bool hasSpeedRecommendation(double s) const =0
virtual double getSpeedRecommendation(double s) const =0
virtual void toEucledianCoordinates(double s, double n, double &xe, double &ye, double &ze)=0
virtual bool isValid() const =0
virtual double getProgressOfWidthOpen() const =0
virtual double getLeftIndicatorHint(double s)=0
virtual double getOffsetOfLeftBorder(double s)=0
bool inSRange(double s) const
Definition: alane.h:45
virtual double getRightIndicatorHint(double s)=0
virtual double getCurvature(double s, int derivative)=0
virtual double getHeading(double s)=0
Definition: conflictset.h:176
std::vector< TrafficObject > TrafficQueue
Definition: trafficobject.h:183
Definition: areaofeffectconverter.h:20