MinJerkTrajectory.h
Go to the documentation of this file.
00001 
00008 #ifndef MIN_JERK_TRAJECTORY_H
00009 #define MIN_JERK_TRAJECTORY_H
00010 
00011 #include <robodyn_controllers/Trajectory.h>
00012 #include <robodyn_controllers/MotionLimiter.h>
00013 #include <tf/LinearMath/Quaternion.h>
00014 
00015 class MinJerkUtility
00016 {
00017 public:
00018     class TimeUtility
00019     {
00020     public:
00021         friend class MinJerkUtility;
00022         void setTime(double t_in);
00023 
00024     private:
00025         double t, t2, t3, t4, t5;
00026     };
00027 
00028     void setConstraints(double pinit, double pfinal, double vinit = 0., double vfinal = 0., double ainit = 0., double afinal = 0.);
00029 
00030     double duration(double vmax) const;
00031 
00033     double p(const TimeUtility& t) const;
00034     double v(const TimeUtility& t) const;
00035     double a(const TimeUtility& t) const;
00036 
00037 private:
00038     double dist;
00039     double a0, a1, a2, a3, a4, a5;
00040 };
00041 
00042 class MinJerkJointTrajectory : public JointTrajectory, protected JointVelocityLimiter
00043 {
00044 public:
00045     MinJerkJointTrajectory(const JointVelocityLimiter& jvl, const KDL::JntArrayAcc& startPose,
00046                            const KDL::JntArrayAcc& goalPose, double duration_in);
00047     virtual ~MinJerkJointTrajectory();
00048 
00049     virtual void getPose(double time, KDL::JntArrayAcc& pose);
00050 
00051 private:
00052     std::vector<MinJerkUtility> utils;
00053 };
00054 
00055 class MinJerkCartesianTrajectory : public CartesianTrajectory, protected CartesianVelocityLimiter
00056 {
00057 public:
00058     MinJerkCartesianTrajectory(const CartesianVelocityLimiter& cvl, const KDL::FrameAcc& startPose,
00059                                const KDL::FrameAcc& goalPose, double duration_in);
00060     virtual ~MinJerkCartesianTrajectory();
00061 
00062     virtual void getPose(double time, KDL::FrameAcc& pose);
00063 
00064 private:
00065     std::vector<MinJerkUtility> utils;
00066     KDL::Vector moveVec;
00067     KDL::Vector startVec;
00068     tf::Quaternion startQ;
00069     tf::Quaternion goalQ;
00070 };
00071 
00072 #endif


robodyn_controllers
Author(s):
autogenerated on Sat Jun 8 2019 20:20:53