Objects of this class are Forward-only Sub-optimal Continuous-curvature (FSC) paths, made of circular arcs, pieces of clothoid and line segments.
More...
|
The three following fields correspond to values often used in computations.
They are added to the path's description to speed up these computations.
|
static const string | ClassName |
| The class name is public, as this class can be instanced. More...
|
|
| FscPath () |
| The default constructor should only be used for array initializations: it generates a path starting from default oriented point, with type lsl, and zero maximum curvature, maximum curvature's derivative and lengths. More...
|
|
| FscPath (const iSeeML::rob::OrPtConfig &start, const Type &type, const double &maxCurv, const double &maxCDer, const double &length1, const double &length2, const double &length3) |
| The 'forward' constructor: a FSC path is built from its starting oriented point, its type, its maximum curvature,
maximum curvature's derivative and parts' lengths. More...
|
|
| FscPath (const iSeeML::rob::OrPtConfig &start, const Type &type, const double &maxCurv, const double &maxCDer, const double &limDefl, const double &turnRad, const double &turnAng, const double &length1, const double &length2, const double &length3) |
| The complete 'forward' constructor: a FSC path is built from its starting oriented point, its type, its maximum curvature,
maximum curvature's derivative, limit deflection, turning radius, turning angle, and parts' lengths. More...
|
|
| FscPath (const iSeeML::rob::OrPtConfig &start, const iSeeML::rob::OrPtConfig &goal, const double &maxCurv, const double &maxCDer) |
| The 'goto' constructor: a FSC path is built, starting from a given iSeeML::rob::OrPtConfig and reaching an other one with a maximum curvature and curvature's derivative. More...
|
|
| FscPath (const iSeeML::rob::OrPtConfig &start, const iSeeML::rob::OrPtConfig &goal, const double &maxCurv, const double &maxCDer, const double &limDefl, const double &turnRad, const double &turnAng) |
| The complete 'goto' constructor: a FSC path is built, starting from a given iSeeML::rob::OrPtConfig and reaching an other one with a maximum curvature, curvature's derivative, limit deflection, turning radius and turning angle. More...
|
|
| FscPath (const FscPath &other) |
| The copy constructor. More...
|
|
iSeeML::Object & | clone () const |
| Description method, giving a copy of the current FSC path. More...
|
|
void | writeTo (ostream &O) const |
| Description method, writing a description of the path in a given output stream. More...
|
|
double | maxCurvDeriv () const |
| Description method, giving the path's maximum curvature's derivative. More...
|
|
double | limDefl () const |
| Description method, giving the limit deflection: a turn of lower (but not zero) deflection is degenerated (it is made of two pieces and does not reach maximum curvature derivative nor maximum curvature), a turn of bigger deflection is normal (it is made of three pieces, the middle one being a circular arc of maximum curvature, and the other two being clothoid pieces of maximum curvature derivative). More...
|
|
double | turnRadius () const |
| Description method, giving the radius of the turning circle (the circle of all the configurations which can be reached from a fixed one). More...
|
|
double | turnAngle () const |
| Description method, giving the constant angle between the turning circle's tangent and the orientation of the configurations which can be reached. More...
|
|
FscPath & | operator= (const FscPath &other) |
| Copy operator (default one is not correct). More...
|
|
void | computeCenters (const iSeeML::rob::OrPtConfig &start, const iSeeML::rob::OrPtConfig &goal, iSeeML::geom::Point centers[nbTurningCircles]) const |
| 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...
|
|
static void | computeValues (const double &maxCurv, const double &maxCDer, double &limDefl, double &turnRad, double &turnAng) |
| Description method, computing from maximum curvature and maximum curvature's derivative the values of limit deflection, turning radius and turning angle for a FSC path. More...
|
|
bool | isShortTurn (const double &defl) const |
| Description method, checking whether the given length is too short with respect to the maximum curvature's derivative to reach maximum curvature along a turn. More...
|
|
int | turnNbPieces (const double &defl) const |
| Description method, computing the number of pieces needed
for a turn of given deflection. More...
|
|
virtual bool | getConnection (const double &dist, double &length, double &angle) const |
| 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...
|
|
void | addTurn (int &index, const iSeeML::rob::OrPtConfig **start, const double &defl) |
| Modification method, adding to the pieces of a path a turn starting at a given configuration, with a given curvature sign and length. More...
|
|
iSeeML::rob::DubinsLikePath * | connectArray () const |
| Various method, returning an array of nbPossiblePaths Dubins-like paths, initialised as clones of the current path. More...
|
|
iSeeML::rob::DubinsLikePath & | getSolution (iSeeML::rob::DubinsLikePath *paths, const int index) const |
| Various method, getting in an array of Dubins-like paths the element of given index. More...
|
|
|
enum | Type {
lsl,
lsr,
rsl,
rsr,
lrl,
rlr
} |
| Dubins-like paths can be of six types: their first and last parts are turns, their middle part is tangent to the first and last parts but can be a line segment or a turn. More...
|
|
enum | { nbPossiblePaths = 6,
nbTurningCircles = 4
} |
| Some methods will need these integer values. More...
|
|
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...
|
|
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...
|
|
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...
|
|
bool | sameClass (const iSeeML::Object &other) |
| Method verifying that a given object has the same type (same class name) than the current one. 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...
|
|
| 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...
|
|
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) |
|
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...
|
|
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...
|
|
static int | turnSign (const int number, const Type &type) |
| 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. More...
|
|
ostream & | operator<< (ostream &O, const iSeeML::Object &o) |
| Modification method, writing a description of a ISeeML object in a given output stream. More...
|
|
Objects of this class are Forward-only Sub-optimal Continuous-curvature (FSC) paths, made of circular arcs, pieces of clothoid and line segments.
They are similar to Dubins' paths, but their curvature have a continuous profile (pieces of clothoid connecting line segments and circular arcs).
- Author
- Alexis Scheuer.
- Version
- 1.0
- Examples
- Fwd.cpp, LengthFwd.cpp, TimeFwd.cpp, and wxGuiFwd.cpp.