68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
#ifndef VELOCITYPROFILE_SPLINE_H
|
|
#define VELOCITYPROFILE_SPLINE_H
|
|
|
|
#include "velocityprofile.hpp"
|
|
|
|
namespace KDL
|
|
{
|
|
/**
|
|
* \brief A spline VelocityProfile trajectory interpolation.
|
|
* @ingroup Motion
|
|
*/
|
|
class VelocityProfile_Spline : public VelocityProfile
|
|
{
|
|
public:
|
|
VelocityProfile_Spline();
|
|
VelocityProfile_Spline(const VelocityProfile_Spline &p);
|
|
|
|
virtual ~VelocityProfile_Spline();
|
|
|
|
virtual void SetProfile(double pos1, double pos2);
|
|
/**
|
|
* Generate linear interpolation coefficients.
|
|
*
|
|
* @param pos1 begin position.
|
|
* @param pos2 end position.
|
|
* @param duration duration of the profile.
|
|
*/
|
|
virtual void SetProfileDuration(
|
|
double pos1, double pos2, double duration);
|
|
|
|
/**
|
|
* Generate cubic spline interpolation coefficients.
|
|
*
|
|
* @param pos1 begin position.
|
|
* @param vel1 begin velocity.
|
|
* @param pos2 end position.
|
|
* @param vel2 end velocity.
|
|
* @param duration duration of the profile.
|
|
*/
|
|
virtual void SetProfileDuration(
|
|
double pos1, double vel1, double pos2, double vel2, double duration);
|
|
|
|
/**
|
|
* Generate quintic spline interpolation coefficients.
|
|
*
|
|
* @param pos1 begin position.
|
|
* @param vel1 begin velocity.
|
|
* @param acc1 begin acceleration
|
|
* @param pos2 end position.
|
|
* @param vel2 end velocity.
|
|
* @param acc2 end acceleration.
|
|
* @param duration duration of the profile.
|
|
*/
|
|
virtual void SetProfileDuration(double pos1, double vel1, double acc1, double pos2, double vel2, double acc2, double duration);
|
|
virtual double Duration() const;
|
|
virtual double Pos(double time) const;
|
|
virtual double Vel(double time) const;
|
|
virtual double Acc(double time) const;
|
|
virtual void Write(std::ostream& os) const;
|
|
virtual VelocityProfile* Clone() const;
|
|
private:
|
|
|
|
double coeff_[6];
|
|
double duration_;
|
|
};
|
|
}
|
|
#endif // VELOCITYPROFILE_CUBICSPLINE_H
|