TrapezoidalVelocityTrajectory.h
Go to the documentation of this file.
00001 
00008 #ifndef TRAP_VEL_TRAJECTORY_H
00009 #define TRAP_VEL_TRAJECTORY_H
00010 
00011 #include <robodyn_controllers/Trajectory.h>
00012 #include <robodyn_controllers/MotionLimiter.h>
00013 #include <tf/LinearMath/Quaternion.h>
00014 
00015 class TrapezoidalVelocityUtility
00016 {
00017 public:
00018     TrapezoidalVelocityUtility();
00019     ~TrapezoidalVelocityUtility();
00020 
00021     void setConstraints(double posInit_in, double posFinal_in, double velInit_in = 0., double velFinal_in = 0., double accelInit_in = 0., double accelFinal_in = 0.);
00022 
00026     double duration(double vmax_in, double amax_in, bool spline = true);
00027 
00030     void setDuration(double duration_in);
00031 
00033     void setDurationHelper(double duration_in);
00034 
00040     void getTimes(double& t1_out, double& t2_out, double& t3_out) const;
00041 
00043     bool timesValid();
00044 
00046     void calculateTimeHelper();
00047 
00052     bool calculateMaxVel();
00053 
00056     double p(double t) const;
00057     double v(double t) const;
00058     double a(double t) const;
00059 
00065     void setTimes(double t1_in, double t2_in, double t3_in);
00066 
00067 private:
00068     double posInit, posFinal, velInit, velFinal, accelInit, accelFinal;
00069     double t1, t2, t3;
00070     double v1, a1, a2;
00071     double velMax, accelMax, timeMin;
00072 };
00073 
00074 class TrapezoidalVelocityJointTrajectory : public JointTrajectory, protected JointMotionLimiter
00075 {
00076 public:
00077     TrapezoidalVelocityJointTrajectory(const JointMotionLimiter& jml, const KDL::JntArrayAcc& startPose,
00078                                        const KDL::JntArrayAcc& goalPose, double duration_in);
00079     virtual ~TrapezoidalVelocityJointTrajectory();
00080 
00081     virtual void getPose(double time, KDL::JntArrayAcc& pose);
00082 
00083     virtual void setDuration(double duration_in);
00084 
00085 private:
00086     std::vector<TrapezoidalVelocityUtility> utils;
00087 
00088     void setTimes(double t1_in, double t2_in, double t3_in);
00089 };
00090 
00091 class TrapezoidalVelocityCartesianTrajectory : public CartesianTrajectory, protected CartesianMotionLimiter
00092 {
00093 public:
00094     TrapezoidalVelocityCartesianTrajectory(const CartesianMotionLimiter& cml, const KDL::FrameAcc& startPose,
00095                                            const KDL::FrameAcc& goalPose, double duration_in);
00096     virtual ~TrapezoidalVelocityCartesianTrajectory();
00097 
00098     virtual void getPose(double time, KDL::FrameAcc& pose);
00099 
00100     virtual void setDuration(double duration_in);
00101 
00102 private:
00103     std::vector<TrapezoidalVelocityUtility> utils;
00104     tf::Quaternion startQ;
00105     tf::Quaternion goalQ;
00106 
00107     void setTimes(double t1_in, double t2_in, double t3_in);
00108 };
00109 
00110 #endif


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