ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
adore::mad::LSpiralFunction< T, M > Class Template Reference

#include <lspiralfunction.h>

Inheritance diagram for adore::mad::LSpiralFunction< T, M >:
Inheritance graph
Collaboration diagram for adore::mad::LSpiralFunction< T, M >:
Collaboration graph

Classes

class  diffspiral
 

Public Member Functions

 LSpiralFunction ()
 
 LSpiralFunction (LLinearPiecewiseFunctionM< T, 3+M+1 > *linear_data)
 
virtual ~LSpiralFunction ()
 
 LSpiralFunction (T S, T X0, T Y0, T ds, const adoreMatrix< T, 1, M+2 > &p0)
 
 LSpiralFunction (T S, T X0, T Y0, T kappa_max, T emax, const adoreMatrix< T, 1, M+2 > &p0)
 
 LSpiralFunction (T S, T X0, T Y0, T PSI0, T kappa0, T kappa1, T emax)
 
virtual ALFunction< T, T > * create_heading ()
 
virtual adoreMatrix< T, 2, 1 > f (T x) const override
 
virtual T limitHi () const override
 
virtual T limitLo () const override
 
virtual void setLimits (T lo, T hi) override
 
virtual ALFunction< T, adoreMatrix< T, 2, 1 > > * clone () override
 
virtual ALFunction< T, adoreMatrix< T, 2, 1 > > * create_derivative () override
 
virtual void bound (const T &xmin, const T &xmax, adoreMatrix< T, 2, 1 > &ymin, adoreMatrix< T, 2, 1 > &ymax) override
 
virtual ALFunction< T, T > * dimension (int i) override
 
virtual T fi (T x, int dim) const override
 
virtual void multiply (adoreMatrix< T, 0, 0 > A, int rowi, int rowj)
 
virtual void add (adoreMatrix< T, 0, 1 > b, int rowi, int rowj)
 
- Public Member Functions inherited from adore::mad::AScalarToN< T, 2 >
void toArray (DT *xvec, T *yvec, unsigned int count)
 
void toArray (DT *xvec, T *yvec, unsigned int count, unsigned int row)
 
virtual void operator*= (adoreMatrix< T, N, N > A)
 
virtual void operator+= (adoreMatrix< T, N, 1 > b)
 
virtual void operator-= (adoreMatrix< T, N, 1 > b)
 
- Public Member Functions inherited from adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >
virtual void f (T *xvec, adoreMatrix< T, N, 1 > *yvec, unsigned int count) const
 
virtual void bound (const T &xmin, const T &xmax, adoreMatrix< T, N, 1 > &ymin, adoreMatrix< T, N, 1 > &ymax)=0
 
void bound (adoreMatrix< T, N, 1 > &ymin, adoreMatrix< T, N, 1 > &ymax)
 
virtual ~ALFunction ()
 
 ALFunction ()
 
const adoreMatrix< T, N, 1 > operator() (T x) const
 
bool isInDomain (T x)
 
adoreMatrix< T, N, 1 > f_bounded (T x)
 
void invalidateCachedBounds ()
 

Public Attributes

LLinearPiecewiseFunctionM< T, 3+M+1 > * m_linear_data
 

Additional Inherited Members

- Public Types inherited from adore::mad::AScalarToN< T, 2 >
typedef T DT
 
typedef adoreMatrix< T, N, 1 > CT
 
typedef ALFunction< DT, T > SUBFUN
 

Detailed Description

template<typename T, int M>
class adore::mad::LSpiralFunction< T, M >

A two-dimensional spiral function of degree M. Spiral's curvature has M derivatives

Constructor & Destructor Documentation

◆ LSpiralFunction() [1/5]

template<typename T , int M>
adore::mad::LSpiralFunction< T, M >::LSpiralFunction ( )
inline

◆ LSpiralFunction() [2/5]

template<typename T , int M>
adore::mad::LSpiralFunction< T, M >::LSpiralFunction ( LLinearPiecewiseFunctionM< T, 3+M+1 > *  linear_data)
inline

◆ ~LSpiralFunction()

template<typename T , int M>
virtual adore::mad::LSpiralFunction< T, M >::~LSpiralFunction ( )
inlinevirtual

◆ LSpiralFunction() [3/5]

template<typename T , int M>
adore::mad::LSpiralFunction< T, M >::LSpiralFunction ( S,
X0,
Y0,
ds,
const adoreMatrix< T, 1, M+2 > &  p0 
)
inline

instantiate spiral using initial parameter vector p0=[psi0,kappa0,dkappa0,ddkappa0,....] sample the spiral at fixed distance ds

Here is the call graph for this function:

◆ LSpiralFunction() [4/5]

template<typename T , int M>
adore::mad::LSpiralFunction< T, M >::LSpiralFunction ( S,
X0,
Y0,
kappa_max,
emax,
const adoreMatrix< T, 1, M+2 > &  p0 
)
inline

instantiate spiral using initial parameter vector p0=[psi0,kappa0,dkappa0,ddkappa0,....] compute step size based on kappa_max and max admissible error

Here is the call graph for this function:

◆ LSpiralFunction() [5/5]

template<typename T , int M>
adore::mad::LSpiralFunction< T, M >::LSpiralFunction ( S,
X0,
Y0,
PSI0,
kappa0,
kappa1,
emax 
)
inline

instantiate spiral of order 1

Here is the call graph for this function:

Member Function Documentation

◆ add()

template<typename T , int M>
virtual void adore::mad::LSpiralFunction< T, M >::add ( adoreMatrix< T, 0, 1 >  b,
int  rowi,
int  rowj 
)
inlinevirtual

apply operation to function subdimensions: add a vector to rowi to rowj

Implements adore::mad::AScalarToN< T, 2 >.

Here is the call graph for this function:

◆ bound()

template<typename T , int M>
virtual void adore::mad::LSpiralFunction< T, M >::bound ( const T &  xmin,
const T &  xmax,
adoreMatrix< T, 2, 1 > &  ymin,
adoreMatrix< T, 2, 1 > &  ymax 
)
inlineoverridevirtual
Here is the call graph for this function:

◆ clone()

template<typename T , int M>
virtual ALFunction<T, adoreMatrix<T, 2, 1> >* adore::mad::LSpiralFunction< T, M >::clone ( )
inlineoverridevirtual

create a copy of child class object - is used for function operations

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

Here is the call graph for this function:

◆ create_derivative()

template<typename T , int M>
virtual ALFunction<T, adoreMatrix<T, 2, 1> >* adore::mad::LSpiralFunction< T, M >::create_derivative ( )
inlineoverridevirtual

create a new function object, which is the derivative function

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

Here is the call graph for this function:

◆ create_heading()

template<typename T , int M>
virtual ALFunction<T, T>* adore::mad::LSpiralFunction< T, M >::create_heading ( )
inlinevirtual

returns pointer to heading function, which is M+1 times differentiable instead of maintaining one instance of heading, the heading function is created each time anew, as the heading may change according to rotate operations on spiral

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

◆ dimension()

template<typename T , int M>
virtual ALFunction<T, T>* adore::mad::LSpiralFunction< T, M >::dimension ( int  i)
inlineoverridevirtual

gives access to a scalar sub-function. does not create a new object, so use clone() to get your own instance of the subfunction.

Implements adore::mad::AScalarToN< T, 2 >.

Here is the call graph for this function:

◆ f()

template<typename T , int M>
virtual adoreMatrix<T, 2, 1> adore::mad::LSpiralFunction< T, M >::f ( x) const
inlineoverridevirtual

function evaluation returns y of codomain type CT for a value x of domain type DT

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

Here is the call graph for this function:

◆ fi()

template<typename T , int M>
virtual T adore::mad::LSpiralFunction< T, M >::fi ( x,
int  dim 
) const
inlineoverridevirtual

scalar evaluation of function: for y-component dim

Implements adore::mad::AScalarToN< T, 2 >.

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

◆ limitHi()

template<typename T , int M>
virtual T adore::mad::LSpiralFunction< T, M >::limitHi ( ) const
inlineoverridevirtual

query upper limit of the domain

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

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

◆ limitLo()

template<typename T , int M>
virtual T adore::mad::LSpiralFunction< T, M >::limitLo ( ) const
inlineoverridevirtual

lower limit of the domain

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

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

◆ multiply()

template<typename T , int M>
virtual void adore::mad::LSpiralFunction< T, M >::multiply ( adoreMatrix< T, 0, 0 >  A,
int  rowi,
int  rowj 
)
inlinevirtual

apply operation to function sub-dimensions: multiply with matrix of lower dimension in range rowi to rowj, with A.nc==A.nr==rowj-rowi+1

Implements adore::mad::AScalarToN< T, 2 >.

Here is the call graph for this function:

◆ setLimits()

template<typename T , int M>
virtual void adore::mad::LSpiralFunction< T, M >::setLimits ( lo,
hi 
)
inlineoverridevirtual

reduce or increase the limit of the function, without changing y

Implements adore::mad::ALFunction< T, adoreMatrix< T, N, 1 > >.

Here is the call graph for this function:

Member Data Documentation

◆ m_linear_data

template<typename T , int M>
LLinearPiecewiseFunctionM<T, 3 + M + 1>* adore::mad::LSpiralFunction< T, M >::m_linear_data

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