Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef KDL_MOTION_ROUNDEDCOMPOSITE_H
00045 #define KDL_MOTION_ROUNDEDCOMPOSITE_H
00046
00047 #include "path.hpp"
00048 #include "path_composite.hpp"
00049 #include "rotational_interpolation.hpp"
00050
00051 namespace KDL {
00052
00058 class Path_RoundedComposite : public Path
00059 {
00063 Path_Composite* comp;
00064
00065
00066 double radius;
00067 double eqradius;
00068 RotationalInterpolation* orient;
00069
00070 Frame F_base_start;
00071 Frame F_base_via;
00072
00073 int nrofpoints;
00074
00075 bool aggregate;
00076
00077 Path_RoundedComposite(Path_Composite* comp,double radius,double eqradius,RotationalInterpolation* orient, bool aggregate, int nrofpoints);
00078
00079 public:
00080
00088 Path_RoundedComposite(double radius,double eqradius,RotationalInterpolation* orient, bool aggregate=true);
00089
00109 void Add(const Frame& F_base_point);
00110
00115 void Finish();
00116
00117
00118 virtual double LengthToS(double length);
00119
00126 virtual double PathLength();
00127
00128
00132 virtual Frame Pos(double s) const;
00133
00138 virtual Twist Vel(double s,double sd) const;
00139
00144 virtual Twist Acc(double s,double sd,double sdd) const;
00145
00151 virtual Path* Clone();
00152
00156 virtual void Write(std::ostream& os);
00157
00161 virtual int GetNrOfSegments();
00162
00170 virtual Path* GetSegment(int i);
00171
00178 virtual double GetLengthToEndOfSegment(int i);
00179
00185 virtual void GetCurrentSegmentLocation(double s, int &segment_number, double& inner_s);
00186
00190 virtual IdentifierType getIdentifier() const {
00191 return ID_ROUNDED_COMPOSITE;
00192 }
00193
00194
00195 virtual ~Path_RoundedComposite();
00196 };
00197
00198
00199
00200 }
00201
00202
00203 #endif