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