Go to the documentation of this file.    1 #ifndef AIKIDO_COMMON_SPLINE_HPP_ 
    2 #define AIKIDO_COMMON_SPLINE_HPP_ 
   10 #include <Eigen/Sparse> 
   11 #include <Eigen/StdVector> 
   33     class _Scalar = double,
 
   35     _Index _NumCoefficients = Eigen::Dynamic,
 
   36     _Index _NumOutputs = Eigen::Dynamic,
 
   37     _Index _NumKnots = Eigen::Dynamic>
 
   52          && _NumCoefficients != Eigen::Dynamic)
 
   56   using TimeVector = Eigen::Matrix<Scalar, NumKnotsAtCompileTime, 1>;
 
   58       Matrix<Scalar, NumOutputsAtCompileTime, NumCoefficientsAtCompileTime>;
 
   59   using OutputVector = Eigen::Matrix<Scalar, NumOutputsAtCompileTime, 1>;
 
   61       = std::vector<SolutionMatrix, Eigen::aligned_allocator<SolutionMatrix> >;
 
   79           Eigen::aligned_allocator<SolutionMatrix> >& _solution);
 
  157       = Eigen::Matrix<Scalar, NumCoefficientsAtCompileTime, 1>;
 
  167   EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(TimeVector::NeedsToAlign)
 
  186     class _Scalar = double,
 
  188     _Index _NumCoefficients = Eigen::Dynamic,
 
  189     _Index _NumOutputs = Eigen::Dynamic,
 
  190     _Index _NumKnots = Eigen::Dynamic>
 
  205          && _NumCoefficients != Eigen::Dynamic)
 
  209   using TimeVector = Eigen::Matrix<Scalar, NumKnotsAtCompileTime, 1>;
 
  210   using OutputVector = Eigen::Matrix<Scalar, NumOutputsAtCompileTime, 1>;
 
  212       Matrix<Scalar, NumCoefficientsAtCompileTime, NumOutputsAtCompileTime>;
 
  214       = Eigen::Matrix<Scalar, NumCoefficientsAtCompileTime, 1>;
 
  221       = Eigen::Matrix<Scalar, DimensionAtCompileTime, NumOutputsAtCompileTime>;
 
  223       Matrix<Scalar, NumOutputsAtCompileTime, NumCoefficientsAtCompileTime>;
 
  327       Eigen::aligned_allocator<SolutionMatrix> >
 
  331   EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(
 
  332       CoefficientMatrix::NeedsToAlign || TimeVector::NeedsToAlign
 
  333       || ProblemMatrix::NeedsToAlign || ProblemVector::NeedsToAlign)
 
  341 #endif // AIKIDO_COMMON_SPLINE_HPP_ 
 
 
const SolutionMatrices & getCoefficients() const
Gets polynomial coefficients for all segments.
Definition: Spline-impl.hpp:84
 
ProblemVector mB
Definition: Spline.hpp:323
 
static CoefficientVector createTimeVector(Scalar _t, Index _i, Index _n)
Creates a vector of the form [ 1, t, t^2, ... t^_n ].
Definition: Spline-impl.hpp:382
 
Eigen::Matrix< Scalar, NumCoefficientsAtCompileTime, 1 > CoefficientVector
Definition: Spline.hpp:157
 
Eigen::Matrix< Scalar, NumOutputsAtCompileTime, 1 > OutputVector
Definition: Spline.hpp:59
 
Eigen::Matrix< Scalar, DimensionAtCompileTime, NumOutputsAtCompileTime > ProblemVector
Definition: Spline.hpp:221
 
Spline fit()
Fit a spline given the constraints on added to this object.
Definition: Spline-impl.hpp:412
 
Eigen::Matrix< Scalar, NumKnotsAtCompileTime, 1 > TimeVector
Definition: Spline.hpp:209
 
static constexpr Index DimensionAtCompileTime
Definition: Spline.hpp:204
 
Scalar getDuration() const
Gets the duration of the spline.
Definition: Spline-impl.hpp:154
 
Index getNumCoefficients() const
Gets the number of polynomial coefficients in each segment.
Definition: Spline-impl.hpp:125
 
static constexpr Index NumOutputsAtCompileTime
Definition: Spline.hpp:45
 
SplineND()=default
Constructs an empty spline.
 
Eigen::Matrix< Scalar, NumCoefficientsAtCompileTime, 1 > CoefficientVector
Definition: Spline.hpp:214
 
static constexpr Index NumSegmentsAtCompileTime
Definition: Spline.hpp:201
 
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
 
Index mNumSegments
Definition: Spline.hpp:313
 
Eigen::Matrix< Scalar, NumKnotsAtCompileTime, 1 > TimeVector
Definition: Spline.hpp:56
 
SplineProblem(const TimeVector &_times)
Constructs a spline fitting problem with the knot points at the specified times.
Definition: Spline-impl.hpp:242
 
static constexpr Index NumOutputsAtCompileTime
Definition: Spline.hpp:198
 
CoefficientMatrix mCoefficientMatrix
Definition: Spline.hpp:318
 
void setTimes(TimeVector &&_t)
Sets the times of all knot points.
Definition: Spline-impl.hpp:48
 
Index mNumOutputs
Definition: Spline.hpp:315
 
Eigen::Matrix< Scalar, NumCoefficientsAtCompileTime, NumOutputsAtCompileTime > OutputMatrix
Definition: Spline.hpp:212
 
_Index Index
Definition: Spline.hpp:195
 
Scalar getDuration() const
Gets the duration of the spline.
Definition: Spline-impl.hpp:503
 
SplineProblem & operator=(SplineProblem &&_other)=default
 
_Scalar Scalar
Definition: Spline.hpp:194
 
_Index Index
Definition: Spline.hpp:42
 
Index getNumKnots() const
Gets the number of knot points.
Definition: Spline-impl.hpp:96
 
void addConstantConstraint(Index _knot, Index _derivative, const OutputVector &_value)
Adds a constraint that the _derivative-th order derivative of knot point _knot should equal _value.
Definition: Spline-impl.hpp:290
 
static constexpr Index DimensionAtCompileTime
Definition: Spline.hpp:51
 
Eigen::Matrix< Scalar, NumCoefficientsAtCompileTime, NumCoefficientsAtCompileTime > CoefficientMatrix
Definition: Spline.hpp:161
 
Index getNumKnots() const
Gets the number of knot points.
Definition: Spline-impl.hpp:479
 
Eigen::Matrix< Scalar, NumOutputsAtCompileTime, NumCoefficientsAtCompileTime > SolutionMatrix
Definition: Spline.hpp:58
 
Eigen::Matrix< Scalar, NumOutputsAtCompileTime, NumCoefficientsAtCompileTime > SolutionMatrix
Definition: Spline.hpp:223
 
SolutionMatrices mSolution
Definition: Spline.hpp:164
 
TimeVector mTimes
Definition: Spline.hpp:321
 
Index getNumDerivatives() const
Gets an upperbound on the number of non-zero derivatives.
Definition: Spline-impl.hpp:142
 
Eigen::Matrix< Scalar, NumOutputsAtCompileTime, 1 > OutputVector
Definition: Spline.hpp:210
 
void setTime(Index _index, Scalar _t)
Sets the time of the _index-th knot point.
Definition: Spline-impl.hpp:35
 
static constexpr Index NumCoefficientsAtCompileTime
Definition: Spline.hpp:197
 
std::vector< SolutionMatrix, Eigen::aligned_allocator< SolutionMatrix > > mSolution
Definition: Spline.hpp:328
 
static CoefficientMatrix createCoefficientMatrix(Index _n)
Creates the _n by _n matrix of derivative coefficients for a polynomial with _n coefficients.
Definition: Spline-impl.hpp:452
 
Index getSegmentIndex(Scalar _t) const
Gets the index of the segment that contains time _t.
Definition: Spline-impl.hpp:170
 
Eigen::SparseMatrix< Scalar, 0, Index > ProblemMatrix
Definition: Spline.hpp:219
 
Index mNumCoefficients
Definition: Spline.hpp:314
 
Index mNumKnots
Definition: Spline.hpp:312
 
An arbitrary dimensional polynomial spline.
Definition: Spline.hpp:38
 
SplineND & operator=(SplineND &&_other)=default
 
void addContinuityConstraint(Index _knot, Index _derivative)
Adds a continuity constraint on the _derivative-th order derivative at knot point _knot.
Definition: Spline-impl.hpp:344
 
static constexpr Index NumSegmentsAtCompileTime
Definition: Spline.hpp:48
 
std::vector< SolutionMatrix, Eigen::aligned_allocator< SolutionMatrix > > SolutionMatrices
Definition: Spline.hpp:61
 
Index getNumOutputs() const
Gets the number of outputs points.
Definition: Spline-impl.hpp:491
 
Utility for fitting splines given constraints on function value, derivative value,...
Definition: Spline.hpp:191
 
OutputVector evaluate(Scalar _t, Index _derivative=0) const
Evaluate the _derivative-th order of the spline at time _t.
Definition: Spline-impl.hpp:197
 
Index mDimension
Definition: Spline.hpp:316
 
Eigen::Matrix< Scalar, NumCoefficientsAtCompileTime, NumCoefficientsAtCompileTime > CoefficientMatrix
Definition: Spline.hpp:218
 
static constexpr Index NumCoefficientsAtCompileTime
Definition: Spline.hpp:44
 
const TimeVector & getTimes() const
Gets times of all knot points.
Definition: Spline-impl.hpp:72
 
static constexpr Index NumKnotsAtCompileTime
Definition: Spline.hpp:46
 
_Scalar Scalar
Definition: Spline.hpp:41
 
Index getNumOutputs() const
Gets the number of outputs points.
Definition: Spline-impl.hpp:108
 
static constexpr Index NumKnotsAtCompileTime
Definition: Spline.hpp:199
 
TimeVector mTimes
Definition: Spline.hpp:163
 
Index mRowIndex
Definition: Spline.hpp:320
 
ProblemMatrix mA
Definition: Spline.hpp:322