|
int | nbPieces () const |
| Description method, giving the number of pieces of the path. More...
|
|
const Type & | type () const |
| Description method, giving the path's type (from lsl to rlr). More...
|
|
const double & | maxCurv () const |
| Description method, giving the path's maximum curvature. More...
|
|
const iSeeML::rob::LinCurvPath & | lcPiece (const int index) const |
| Description method, returning the (linear curvature) piece of the path with a given index. More...
|
|
virtual double | turnRadius () const =0 |
| Description method, giving the radius of the turning circle (the circle of all the configurations which can be reached from a fixed one). More...
|
|
void | connect (const iSeeML::rob::OrPtConfig &start, const iSeeML::rob::OrPtConfig &goal) |
| Modification method, defining type and pieces of a Dubins' like path in order to connect two given configurations with the shortest length (between nbPossiblePaths possibilities). More...
|
|
DubinsLikePath & | operator= (const DubinsLikePath &other) |
| Copy operator (default one is not correct). More...
|
|
virtual void | computeCenters (const iSeeML::rob::OrPtConfig &start, const iSeeML::rob::OrPtConfig &goal, iSeeML::geom::Point centers[nbTurningCircles]) const =0 |
| Various method, computing the set of circle centers used to turn from starting configuration of the current path, or to turn to reach the given goal configuration. More...
|
|
void | writeTo (ostream &O) const |
| Description method, writing a description of the path in a given output stream (the array of pieces is written). More...
|
|
const iSeeML::rob::OrPtConfig & | start () const |
| Description method, giving the path's starting configuration (first piece's starting configuration). More...
|
|
const iSeeML::rob::OrPtConfig & | end () const |
| Description method, giving the path's final configuration (last piece's starting configuration). More...
|
|
const iSeeML::rob::BasicPath & | piece (const int index) const |
| Description method, returning the (constant) basic path of given index in the list of which this compound path is made. More...
|
|
double | length () const |
| Description method, giving the path's length (sum of the pieces' length). More...
|
|
double | deflection () const |
| Description method, giving the path's deflection (sum of the pieces' deflection). More...
|
|
iSeeML::rob::BasicPath & | piece (const int index) |
| Modification method, returning (for modification) the basic path of given index in the list of which this compound path is made. More...
|
|
iSeeML::rob::CurvConfig | operator[] (const double &s) const |
| Description method, giving a configuration at a given arc length along the path. More...
|
|
bool | operator< (const Path &other) const |
| Order operator, defining an order relation on the paths' set, based on the path's length. More...
|
|
virtual | ~Object () |
| This virtual class needs a virtual destructor.
|
|
virtual const string | className () const |
| Description method, giving the object's class name. More...
|
|
virtual iSeeML::Object & | clone () const =0 |
| Description method, giving a copy of the current object. More...
|
|
bool | sameClass (const iSeeML::Object &other) |
| Method verifying that a given object has the same type (same class name) than the current one. More...
|
|
|
| DubinsLikePath (const Type &type, const double &maxCurv) |
| The structure can be filled using this constructor, which is protected (only defined for sub-classes). More...
|
|
| DubinsLikePath (const DubinsLikePath &other) |
| The copy constructor (the default one is not correct). More...
|
|
| ~DubinsLikePath () |
| The destructor (the default one is not correct). More...
|
|
virtual int | turnNbPieces (const double &length) const =0 |
| Description method, computing the number of pieces needed for a turn of given length. More...
|
|
virtual bool | getConnection (const double &dist, double &length, double &angle) const =0 |
| Description method, trying to compute the length of the line segment connecting the turning circles and the angle between the segment connecting the turning centers and the previous one. More...
|
|
iSeeML::rob::LinCurvPath & | lcPiece (const int index) |
| Modification method, returning for modification the (linear curvature) piece of the path with a given index. More...
|
|
void | setNoPiece (const iSeeML::rob::OrPtConfig &start) |
| Modification method, setting pieces of a non-valid Dubins' like path from a starting configuration (pieces array will only contain a zero length line segment). More...
|
|
void | definePieces (const iSeeML::rob::OrPtConfig &start, const double &defl1, const double &lenDefl, const double &defl3) |
|
virtual void | addTurn (int &index, const iSeeML::rob::OrPtConfig **start, const double &defl)=0 |
| Modification method, adding to the pieces of a path a turn starting at a given configuration, with a given curvature sign and length. More...
|
|
void | addPiece (int &index, const iSeeML::rob::CurvConfig &start, const double &curvDeriv, const double &length) |
| Modification method, adding to the pieces of a path a piece starting at a given configuration (with curvature), with a given curvature's derivative and length. More...
|
|
iSeeML::rob::BasicPath & | _piece (const int index) const |
| Virtual method returning the basic path of given index in the list of which this compound path is made (no verification). More...
|
|
virtual DubinsLikePath * | connectArray () const =0 |
| Various method, returning an array of nbPossiblePaths Dubins-like paths, initialised as clones of the current path. More...
|
|
virtual DubinsLikePath & | getSolution (DubinsLikePath *paths, const int index) const =0 |
| Various method, getting in an array of Dubins-like paths the element of given index. More...
|
|
iSeeML::rob::BasicPath & | getPiece (const int index) const |
| Method returning the basic path of given index in the list of which this compound path is made. More...
|
|
virtual int | algDimension () const |
| Description method for algebraic vectors, giving the dimension of the containing space (default is zero). More...
|
|
virtual double | algCoord (const int) const |
| Description method for algebraic vectors, giving coordinate of given index for this vector. More...
|
|
virtual void | algWriteTo (ostream &O) const |
| Description method for algebraic vectors, writing this vector in a given output stream: coordinates for each dimension are written, between paranthesis and separated by commas. More...
|
|
|
template<class T > |
static const T & | min (const T &a, const T &b) |
| Method giving the minimum of two elements. More...
|
|
template<class T > |
static const T & | max (const T &a, const T &b) |
| Method giving the maximum of two elements. More...
|
|
static double | sqr (const double &x) |
| Method giving the square of a double. More...
|
|
static double | mod2pi (const double &theta) |
| Method giving the angle between - (excluded) and (included), which is equal to a given angle modulo 2 . More...
|
|
static double | rad2deg (const double &theta) |
| Method transforming an angle in radian, with between -1 (excluded) and 1 (included), into its equivalent in degree, i.e. More...
|
|
static double | deg2rad (const double &theta) |
| Method transforming an angle in degree, with between -1 (excluded) and 1 (included), into its equivalent in radian, i.e. More...
|
|
static bool | isPositive (const double &x) |
| Method telling whether a double is strictly positive. More...
|
|
static bool | isNegative (const double &x) |
| Method telling whether a double is strictly negative. More...
|
|
static bool | isZero (const double &x) |
| Method comparing a double to zero. More...
|
|
static int | sign (const double &x) |
| Method giving the sign of a double. More...
|
|
ostream & | operator<< (ostream &O, const iSeeML::Object &o) |
| Modification method, writing a description of a ISeeML object in a given output stream. More...
|
|
This class defines Dubins like paths, which are similar to Dubins paths.
A Dubins like path is made of at most three parts, which can be a turn or a straight line. Dubins paths' parts are circular arcs or line segments, with a ponctual change of curvature at each part's end, while FSC paths' turns start and finish with zero curvature. Each part is represented by one to three pieces, which are linear curvature paths.
- Author
- Alexis Scheuer.
- Version
- 1.0
- Examples
- wxGuiFwd.cpp.
virtual void iSeeML::rob::DubinsLikePath::addTurn |
( |
int & |
index, |
|
|
const iSeeML::rob::OrPtConfig ** |
start, |
|
|
const double & |
defl |
|
) |
| |
|
protectedpure virtual |
Modification method, adding to the pieces of a path a turn starting at a given configuration, with a given curvature sign and length.
Index index
of the first undefined piece in the pieces array is modified by this method, to remain the index of the first undefined piece in the array. Adress start
of the next starting configuration is also modified along this method. Maximum curvature of the current Dubins-like path is used in this method.
- Parameters
-
index | the first free index in the pieces array (pieces will be added at this index and after, and the index will be incremented), |
start | a reference to the reference of the starting configuration (it will be changed to a ref. to the ref. of next starting config.), |
defl | the turn's deflection (change of orientation), giving the curvature sign. |
- Precondition
- This method only works if the maximum curvature is not zero (otherwise, it writes an error on
stderr
).
Implemented in iSeeML::rob::FscPath, and iSeeML::rob::DubinsPath.
virtual bool iSeeML::rob::DubinsLikePath::getConnection |
( |
const double & |
dist, |
|
|
double & |
length, |
|
|
double & |
angle |
|
) |
| const |
|
protectedpure virtual |
Description method, trying to compute the length of the line segment connecting the turning circles and the angle between the segment connecting the turning centers and the previous one.
The angle can only be computed if the square distance between the turning centers is greater than a value depending of the path's type. Length is not computed for lrl or rlr path's type, and is negative when previous angle cannot be computed.
- Parameters
-
dist | the distance between the turning centers, |
length | the length to compute (modified by the method), |
angle | the angle to compute (modified by the method). |
- Returns
- whether the computation was succesful or not (whether the distance
dist2
is greater than a value depending of the path's type).
Implemented in iSeeML::rob::FscPath, and iSeeML::rob::DubinsPath.
Various method, getting in an array of Dubins-like paths the element of given index.
This method is virtual as the real type of the paths in the first parameter array is the same as the real type of the current Dubins-like path (either Dubins' or FSC path). Size of these paths' representation being different, access in an array needs different computations.
- Parameters
-
paths | the array of Dubins-like paths, |
index | the index of the searched path. |
- Precondition
- first parameter should be an array of paths obtained using connectArray.
-
second parameter should be a correct index for first parameter array (between 0 and nbPossiblePaths - 1).
- Returns
- the array of Dubins-like paths.
- See also
- connectArray.
Implemented in iSeeML::rob::FscPath, and iSeeML::rob::DubinsPath.
static int iSeeML::rob::DubinsLikePath::turnSign |
( |
const int |
number, |
|
|
const Type & |
type |
|
) |
| |
|
inlinestaticprotected |
Description method, giving the sign (1 for left, -1 for right, 0 for a segment) of the turn or segment whose number is given for a path of given type.
As an example, a lsr type path has respective parts signs 1, 0 and -1, when a rlr type path has respective parts signs -1, 1 and -1.
- Parameters
-
number | the number of the part whose sign is wanted, |
type | the type of the considered path. |
- Precondition
- the given number of the part should be between 1 and 3. If not, an error message is generated if
ISEEML_CHECK_DLIKE_PATH_PRECOND
is defined, and the number is considered as 1 if smaller and 3 if bigger, if ISEEML_CHECK_ARRAY_ELEMT
is defined (see CompilerFlags.h).
- Returns
- the part's sign.