KDL  1.4.0
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
KDL::Path_Composite Class Reference

A Path being the composition of other Path objects. More...

#include <src/path_composite.hpp>

Inheritance diagram for KDL::Path_Composite:
Inheritance graph
[legend]
Collaboration diagram for KDL::Path_Composite:
Collaboration graph
[legend]

Public Types

enum  IdentifierType {
  ID_LINE =1, ID_CIRCLE =2, ID_COMPOSITE =3, ID_ROUNDED_COMPOSITE =4,
  ID_POINT =5, ID_CYCLIC_CLOSED =6
}
 

Public Member Functions

 Path_Composite ()
 
void Add (Path *geom, bool aggregate=true)
 Adds a Path* to this composite. More...
 
virtual double LengthToS (double length)
 LengthToS() converts a physical length along the trajectory to the parameter s used in Pos, Vel and Acc. More...
 
virtual double PathLength ()
 Returns the total path length of the trajectory (has dimension LENGTH) This is not always a physical length , ie when dealing with rotations that are dominant. More...
 
virtual Frame Pos (double s) const
 Returns the Frame at the current path length s. More...
 
virtual Twist Vel (double s, double sd) const
 Returns the velocity twist at path length s theta and with derivative of s == sd. More...
 
virtual Twist Acc (double s, double sd, double sdd) const
 Returns the acceleration twist at path length s and with derivative of s == sd, and 2nd derivative of s == sdd. More...
 
virtual PathClone ()
 Virtual constructor, constructing by copying, Returns a deep copy of this Path Object. More...
 
virtual void Write (std::ostream &os)
 Writes one of the derived objects to the stream. More...
 
virtual int GetNrOfSegments ()
 returns the number of underlying segments. More...
 
virtual PathGetSegment (int i)
 returns a pointer to the underlying Path of the given segment number i. More...
 
virtual double GetLengthToEndOfSegment (int i)
 gets the length to the end of the given segment. More...
 
virtual void GetCurrentSegmentLocation (double s, int &segment_number, double &inner_s)
 
virtual IdentifierType getIdentifier () const
 gets an identifier indicating the type of this Path object More...
 
virtual ~Path_Composite ()
 

Static Public Member Functions

static PathRead (std::istream &is)
 Reads one of the derived objects from the stream and returns a pointer (factory method) More...
 

Private Types

typedef std::vector< std::pair< Path *, bool > > PathVector
 
typedef std::vector< double > DoubleVector
 

Private Member Functions

double Lookup (double s) const
 

Private Attributes

PathVector gv
 
DoubleVector dv
 
double pathlength
 
double cached_starts
 
double cached_ends
 
int cached_index
 

Detailed Description

A Path being the composition of other Path objects.

For several of its methods, this class needs to lookup the segment corresponding to a value of the path variable s. To increase efficiency, this value is cached.

Currently a linear search is used to look up the segment. A binary search is more efficient. Can STL be used for this ? Increase the efficiency for caching for the common case of a fine grained monotonously increasing path variable s.

For all Path.., VelocityProfile.., Trajectory... check the bounds on the inputs with asserts.

explain this routine in the wiki.

Member Typedef Documentation

§ DoubleVector

typedef std::vector<double> KDL::Path_Composite::DoubleVector
private

§ PathVector

typedef std::vector< std::pair<Path*,bool> > KDL::Path_Composite::PathVector
private

Member Enumeration Documentation

§ IdentifierType

enum KDL::Path::IdentifierType
inherited
Enumerator
ID_LINE 
ID_CIRCLE 
ID_COMPOSITE 
ID_ROUNDED_COMPOSITE 
ID_POINT 
ID_CYCLIC_CLOSED 

Constructor & Destructor Documentation

§ Path_Composite()

KDL::Path_Composite::Path_Composite ( )

References cached_ends, cached_index, cached_starts, and pathlength.

Referenced by Clone().

§ ~Path_Composite()

KDL::Path_Composite::~Path_Composite ( )
virtual

References gv.

Referenced by getIdentifier().

Member Function Documentation

§ Acc()

Twist KDL::Path_Composite::Acc ( double  s,
double  sd,
double  sdd 
) const
virtual

Returns the acceleration twist at path length s and with derivative of s == sd, and 2nd derivative of s == sdd.

Implements KDL::Path.

References cached_index, gv, and Lookup().

Referenced by KDL::Path_RoundedComposite::Acc().

§ Add()

void KDL::Path_Composite::Add ( Path geom,
bool  aggregate = true 
)

Adds a Path* to this composite.

References dv, gv, pathlength, and KDL::Path::PathLength().

Referenced by KDL::Path_RoundedComposite::Add(), and KDL::Path_RoundedComposite::Finish().

§ Clone()

Path * KDL::Path_Composite::Clone ( )
virtual

Virtual constructor, constructing by copying, Returns a deep copy of this Path Object.

Implements KDL::Path.

References dv, gv, and Path_Composite().

Referenced by KDL::Path_RoundedComposite::Clone().

§ GetCurrentSegmentLocation()

void KDL::Path_Composite::GetCurrentSegmentLocation ( double  s,
int &  segment_number,
double &  inner_s 
)
virtual
Parameters
s[INPUT] path length variable for the composite.
segment_number[OUTPUT] segments that corresponds to the path length variable s.
inner_s[OUTPUT] path length to use within the segment.

References cached_index, and Lookup().

Referenced by KDL::Path_RoundedComposite::GetCurrentSegmentLocation().

§ getIdentifier()

virtual IdentifierType KDL::Path_Composite::getIdentifier ( ) const
inlinevirtual

gets an identifier indicating the type of this Path object

Implements KDL::Path.

References KDL::Path::ID_COMPOSITE, and ~Path_Composite().

§ GetLengthToEndOfSegment()

double KDL::Path_Composite::GetLengthToEndOfSegment ( int  i)
virtual

gets the length to the end of the given segment.

Parameters
isegment number
Returns
length to the end of the segment, i.e. the value for s corresponding to the end of this segment.

References dv.

Referenced by KDL::Path_RoundedComposite::GetLengthToEndOfSegment().

§ GetNrOfSegments()

int KDL::Path_Composite::GetNrOfSegments ( )
virtual

returns the number of underlying segments.

References dv.

Referenced by KDL::Path_RoundedComposite::GetNrOfSegments().

§ GetSegment()

Path * KDL::Path_Composite::GetSegment ( int  i)
virtual

returns a pointer to the underlying Path of the given segment number i.

Parameters
isegment number
Returns
pointer to the underlying Path
Warning
The pointer is still owned by this class and is lifetime depends on the lifetime of this class.

References dv, and gv.

Referenced by KDL::Path_RoundedComposite::GetSegment().

§ LengthToS()

double KDL::Path_Composite::LengthToS ( double  length)
virtual

LengthToS() converts a physical length along the trajectory to the parameter s used in Pos, Vel and Acc.

This is used because in cases with large rotations the parameter s does NOT correspond to the lineair length along the trajectory. User should be sure that the lineair distance travelled by this path object is NOT zero, when using this method ! (e.g. the case of only rotational change) throws Error_MotionPlanning_Not_Applicable if used on composed path objects.

Implements KDL::Path.

Referenced by KDL::Path_RoundedComposite::LengthToS().

§ Lookup()

double KDL::Path_Composite::Lookup ( double  s) const
private

§ PathLength()

double KDL::Path_Composite::PathLength ( )
virtual

Returns the total path length of the trajectory (has dimension LENGTH) This is not always a physical length , ie when dealing with rotations that are dominant.

Implements KDL::Path.

References pathlength.

Referenced by KDL::Path_RoundedComposite::PathLength().

§ Pos()

Frame KDL::Path_Composite::Pos ( double  s) const
virtual

Returns the Frame at the current path length s.

Implements KDL::Path.

References cached_index, gv, and Lookup().

Referenced by KDL::Path_RoundedComposite::Pos().

§ Read()

Path * KDL::Path::Read ( std::istream &  is)
staticinherited

Reads one of the derived objects from the stream and returns a pointer (factory method)

References KDL::RotationalInterpolation::Read().

Referenced by KDL::Trajectory::Read().

§ Vel()

Twist KDL::Path_Composite::Vel ( double  s,
double  sd 
) const
virtual

Returns the velocity twist at path length s theta and with derivative of s == sd.

Implements KDL::Path.

References cached_index, gv, and Lookup().

Referenced by KDL::Path_RoundedComposite::Vel().

§ Write()

void KDL::Path_Composite::Write ( std::ostream &  os)
virtual

Writes one of the derived objects to the stream.

Implements KDL::Path.

References dv, and gv.

Referenced by KDL::Path_RoundedComposite::Write().

Member Data Documentation

§ cached_ends

double KDL::Path_Composite::cached_ends
mutableprivate

Referenced by Lookup(), and Path_Composite().

§ cached_index

int KDL::Path_Composite::cached_index
mutableprivate

§ cached_starts

double KDL::Path_Composite::cached_starts
mutableprivate

Referenced by Lookup(), and Path_Composite().

§ dv

DoubleVector KDL::Path_Composite::dv
private

§ gv

PathVector KDL::Path_Composite::gv
private

§ pathlength

double KDL::Path_Composite::pathlength
private

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