Aikido
Spline.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_TRAJECTORY_SPLINETRAJECTORY2_HPP_
2 #define AIKIDO_TRAJECTORY_SPLINETRAJECTORY2_HPP_
3 
6 
7 namespace aikido {
8 namespace trajectory {
9 
11 
12 class Spline : public Trajectory
26 {
27 public:
32  Spline(statespace::ConstStateSpacePtr _stateSpace, double _startTime = 0.);
33 
34  virtual ~Spline();
35 
60  void addSegment(
61  const Eigen::MatrixXd& _coefficients,
62  double _duration,
63  const statespace::StateSpace::State* _startState);
64 
77  void addSegment(const Eigen::MatrixXd& _coefficients, double _duration);
78 
82  std::size_t getNumSegments() const;
83 
84  // Documentation inherited.
86 
87  // Documentation inherited.
88  std::size_t getNumDerivatives() const override;
89 
90  // Documentation inherited.
91  double getStartTime() const override;
92 
93  // Documentation inherited.
94  double getEndTime() const override;
95 
96  // Documentation inherited.
97  double getDuration() const override;
98 
99  // Documentation inherited.
100  void evaluate(
101  double _t, statespace::StateSpace::State* _state) const override;
102 
103  // Documentation inherited.
104  void evaluateDerivative(
105  double _t,
106  int _derivative,
107  Eigen::VectorXd& _tangentVector) const override;
108 
111  std::size_t getNumWaypoints() const;
112 
117  void getWaypoint(
118  std::size_t _index, statespace::StateSpace::State* state) const;
119 
123  double getWaypointTime(std::size_t _index) const;
124 
131  std::size_t _index,
132  int _derivative,
133  Eigen::VectorXd& _tangentVector) const;
134 
138  double getSegmentDuration(std::size_t _index) const;
139 
143  const Eigen::MatrixXd& getSegmentCoefficients(std::size_t _index) const;
144 
149  std::size_t _index) const;
150 
151 private:
153  {
155  Eigen::MatrixXd mCoefficients;
156  double mDuration;
157  };
158 
159  static Eigen::VectorXd evaluatePolynomial(
160  const Eigen::MatrixXd& _coefficients, double _t, int _derivative);
161 
162  std::pair<std::size_t, double> getSegmentForTime(double _t) const;
163 
165  double mStartTime;
166  std::vector<PolynomialSegment> mSegments;
167 };
168 
169 } // namespace trajectory
170 } // namespace aikido
171 
172 #endif // ifndef AIKIDO_TRAJECTORY_SPLINETRAJECTORY2_HPP_
aikido::trajectory::Spline::getStateSpace
statespace::ConstStateSpacePtr getStateSpace() const override
Gets the StateSpace that this trajectory is defined in.
aikido::trajectory::Spline::getSegmentDuration
double getSegmentDuration(std::size_t _index) const
Gets the duration of a segment.
aikido::trajectory::Spline::getEndTime
double getEndTime() const override
Time at which the trajectory ends.
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::trajectory::Spline::evaluatePolynomial
static Eigen::VectorXd evaluatePolynomial(const Eigen::MatrixXd &_coefficients, double _t, int _derivative)
aikido::trajectory::Spline::evaluateDerivative
void evaluateDerivative(double _t, int _derivative, Eigen::VectorXd &_tangentVector) const override
Evaluates the derivative of the trajectory at time _t.
aikido::trajectory::Spline::getNumWaypoints
std::size_t getNumWaypoints() const
Gets the number of waypoints.
aikido::statespace::ConstStateSpacePtr
std::shared_ptr< const StateSpace > ConstStateSpacePtr
Definition: StateSpace.hpp:15
aikido::trajectory::Spline::evaluate
void evaluate(double _t, statespace::StateSpace::State *_state) const override
Evaluates the state of the trajectory at time _t and store the result in a _state allocated by getSta...
aikido::trajectory::Spline::PolynomialSegment::mCoefficients
Eigen::MatrixXd mCoefficients
Definition: Spline.hpp:155
aikido::trajectory::Spline::getSegmentStartState
const aikido::statespace::StateSpace::State * getSegmentStartState(std::size_t _index) const
Gets the start state of a segment.
aikido::trajectory::Spline::addSegment
void addSegment(const Eigen::MatrixXd &_coefficients, double _duration, const statespace::StateSpace::State *_startState)
Add a segment to the end of this trajectory that starts at _startState, lasts for _duration,...
aikido::trajectory::Spline::getWaypoint
void getWaypoint(std::size_t _index, statespace::StateSpace::State *state) const
Gets a waypoint.
pointers.hpp
Trajectory.hpp
aikido::trajectory::Spline::mStartTime
double mStartTime
Definition: Spline.hpp:165
aikido::trajectory::Spline::mSegments
std::vector< PolynomialSegment > mSegments
Definition: Spline.hpp:166
aikido::trajectory::Spline::~Spline
virtual ~Spline()
aikido::trajectory::Spline::getDuration
double getDuration() const override
Duration of the trajectory.
aikido::trajectory::Spline::PolynomialSegment
Definition: Spline.hpp:152
aikido::trajectory::Spline::getNumDerivatives
std::size_t getNumDerivatives() const override
Gets an upper bound on the number of non-zero derivatives available in this parameterization.
aikido::trajectory::Spline::getSegmentCoefficients
const Eigen::MatrixXd & getSegmentCoefficients(std::size_t _index) const
Gets the coefficients of a segment.
aikido::trajectory::Spline::getNumSegments
std::size_t getNumSegments() const
Gets the number of segments in this spline.
aikido::trajectory::Spline::Spline
Spline(statespace::ConstStateSpacePtr _stateSpace, double _startTime=0.)
Constructs an empty trajectory.
aikido::trajectory::Spline::getStartTime
double getStartTime() const override
Time at which the trajectory starts.
aikido::trajectory::Spline::getWaypointDerivative
void getWaypointDerivative(std::size_t _index, int _derivative, Eigen::VectorXd &_tangentVector) const
Gets the derivative of a waypoint.
aikido::trajectory::Spline::getSegmentForTime
std::pair< std::size_t, double > getSegmentForTime(double _t) const
aikido::statespace::StateSpace::State
Definition: StateSpace.hpp:167
aikido::trajectory::Spline::mStateSpace
statespace::ConstStateSpacePtr mStateSpace
Definition: Spline.hpp:164
aikido::trajectory::Spline::PolynomialSegment::mStartState
statespace::StateSpace::State * mStartState
Definition: Spline.hpp:154
aikido::trajectory::Spline::PolynomialSegment::mDuration
double mDuration
Definition: Spline.hpp:156
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::trajectory::Spline
Polynomial spline trajectory defined in a StateSpace.
Definition: Spline.hpp:25
aikido::trajectory::Spline::getWaypointTime
double getWaypointTime(std::size_t _index) const
Gets the time of a waypoint.
aikido::trajectory::Trajectory
Time-parameterized path in a StateSpace.
Definition: Trajectory.hpp:20