curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase > Struct Template Reference

#include <curves/fwd.h>

Inheritance diagram for curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >:
[legend]
Collaboration diagram for curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >:
[legend]

Public Types

typedef Point point_t
 
typedef T_Point t_point_t
 
typedef Eigen::Matrix< Numeric, Eigen::Dynamic, Eigen::Dynamic > MatrixX
 
typedef Eigen::Matrix< Numeric, 3, 3 > Matrix3
 
typedef Time time_t
 
typedef Numeric num_t
 
typedef SplineBase spline_t
 
typedef std::vector< spline_tt_spline_t
 
typedef t_spline_t::iterator it_spline_t
 
typedef t_spline_t::const_iterator cit_spline_t
 
typedef curve_constraints< Point > spline_constraints
 
typedef exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase > exact_cubic_t
 
typedef curve_abc< Time, Numeric, Safe, point_tcurve_abc_t
 
typedef piecewise_curve< Time, Numeric, Safe, Point > piecewise_curve_t
 
typedef piecewise_curve_t::t_curve_ptr_t t_curve_ptr_t
 
- Public Types inherited from curves::piecewise_curve< Time, Numeric, Safe, Point >
typedef Point point_t
 
typedef Point point_derivate_t
 
typedef std::vector< point_t, Eigen::aligned_allocator< point_t > > t_point_t
 
typedef std::vector< point_derivate_t, Eigen::aligned_allocator< point_derivate_t > > t_point_derivate_t
 
typedef Time time_t
 
typedef Numeric num_t
 
typedef curve_abc< Time, Numeric, Safe, point_t, point_derivate_tbase_curve_t
 
typedef curve_abc< Time, Numeric, Safe, Point, Point > curve_t
 
typedef boost::shared_ptr< curve_tcurve_ptr_t
 
typedef std::vector< curve_ptr_tt_curve_ptr_t
 
typedef std::vector< Time > t_time_t
 
typedef piecewise_curve< Time, Numeric, Safe, Point, Point, curve_abc< Time, Numeric, Safe, Point, Point > > piecewise_curve_t
 
- Public Types inherited from curves::curve_abc< Time, Numeric, Safe, Point, Point >
typedef Point point_t
 
typedef Point point_derivate_t
 
typedef Time time_t
 
typedef Numeric num_t
 
typedef curve_abc< Time, Numeric, Safe, point_t, point_derivate_tcurve_t
 
typedef boost::shared_ptr< curve_tcurve_ptr_t
 

Public Member Functions

 exact_cubic ()
 Empty constructor. More...
 
template<typename In >
 exact_cubic (In wayPointsBegin, In wayPointsEnd)
 Constructor. More...
 
template<typename In >
 exact_cubic (In wayPointsBegin, In wayPointsEnd, const spline_constraints &constraints)
 Constructor. More...
 
 exact_cubic (const t_spline_t &subSplines)
 Constructor. More...
 
 exact_cubic (const t_curve_ptr_t &subSplines)
 
 exact_cubic (const exact_cubic &other)
 Copy Constructor. More...
 
virtual ~exact_cubic ()
 Destructor. More...
 
bool isApprox (const exact_cubic_t &other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const
 isApprox check if other and *this are approximately equals. More...
 
std::size_t getNumberSplines ()
 
spline_t getSplineAt (std::size_t index)
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
- Public Member Functions inherited from curves::piecewise_curve< Time, Numeric, Safe, Point >
 piecewise_curve ()
 Empty constructor. More...
 
 piecewise_curve (const curve_ptr_t &cf)
 Constructor. More...
 
 piecewise_curve (const t_curve_ptr_t &curves_list)
 
 piecewise_curve (const piecewise_curve &other)
 
virtual ~piecewise_curve ()
 
virtual point_t operator() (const Time t) const
 Evaluation of the cubic spline at time t. More...
 
bool isApprox (const piecewise_curve_t &other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const
 isApprox check if other and *this are approximately equals. More...
 
virtual bool isApprox (const base_curve_t *other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const
 isApprox check if other and *this are approximately equals given a precision treshold Only two curves of the same class can be approximately equals, for comparison between different type of curves see isEquivalent. More...
 
virtual bool operator== (const piecewise_curve_t &other) const
 
virtual bool operator!= (const piecewise_curve_t &other) const
 
virtual point_derivate_t derivate (const Time t, const std::size_t order) const
 Evaluate the derivative of order N of curve at time t. More...
 
piecewise_curve_tcompute_derivate_ptr (const std::size_t order) const
 compute_derivate return a piecewise_curve which is the derivative of this at given order More...
 
void add_curve (const Curve &curve)
 
void add_curve_ptr (const curve_ptr_t &cf)
 Add a new curve to piecewise curve, which should be defined in $[T_{min},T_{max}]$ where $T_{min}$ is equal to $T_{max}$ of the actual piecewise curve. More...
 
bool is_continuous (const std::size_t order)
 Check if the curve is continuous of order given. More...
 
std::size_t num_curves () const
 
curve_ptr_t curve_at_time (const time_t t) const
 
curve_ptr_t curve_at_index (const std::size_t idx) const
 
piecewise_curve_t convert_piecewise_curve_to_bezier ()
 
piecewise_curve_t convert_piecewise_curve_to_cubic_hermite ()
 
piecewise_curve_t convert_piecewise_curve_to_polynomial ()
 
virtual std::size_t dim () const
 Get dimension of curve. More...
 
virtual Time min () const
 Get the minimum time for which the curve is defined. More...
 
virtual Time max () const
 Get the maximum time for which the curve is defined. More...
 
virtual std::size_t degree () const
 Get the degree of the curve. More...
 
std::size_t getNumberCurves ()
 
void serialize (Archive &ar, const unsigned int version)
 
- Public Member Functions inherited from curves::curve_abc< Time, Numeric, Safe, Point, Point >
 curve_abc ()
 Constructor. More...
 
virtual ~curve_abc ()
 Destructor. More...
 
bool isEquivalent (const curve_t *other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision(), const size_t order=5) const
 isEquivalent check if other and *this are approximately equal by values, given a precision treshold. More...
 
std::pair< time_t, time_ttimeRange ()
 
void serialize (Archive &, const unsigned int version)
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Static Public Member Functions inherited from curves::piecewise_curve< Time, Numeric, Safe, Point >
static piecewise_curve_t convert_discrete_points_to_polynomial (t_point_t points, t_time_t time_points)
 
static piecewise_curve_t convert_discrete_points_to_polynomial (t_point_t points, t_point_derivate_t points_derivative, t_time_t time_points)
 
static piecewise_curve_t convert_discrete_points_to_polynomial (t_point_t points, t_point_derivate_t points_derivative, t_point_derivate_t points_second_derivative, t_time_t time_points)
 
- Public Attributes inherited from curves::piecewise_curve< Time, Numeric, Safe, Point >
std::size_t dim_
 
t_curve_ptr_t curves_
 
t_time_t time_curves_
 
std::size_t size_
 
Time T_min_
 
Time T_max_
 
- Static Public Attributes inherited from curves::piecewise_curve< Time, Numeric, Safe, Point >
static const double MARGIN
 

Member Typedef Documentation

◆ cit_spline_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef t_spline_t::const_iterator curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::cit_spline_t

◆ curve_abc_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef curve_abc<Time, Numeric, Safe, point_t> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::curve_abc_t

◆ exact_cubic_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef exact_cubic<Time, Numeric, Safe, Point, T_Point, SplineBase> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic_t

◆ it_spline_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef t_spline_t::iterator curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::it_spline_t

◆ Matrix3

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef Eigen::Matrix<Numeric, 3, 3> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::Matrix3

◆ MatrixX

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef Eigen::Matrix<Numeric, Eigen::Dynamic, Eigen::Dynamic> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::MatrixX

◆ num_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef Numeric curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::num_t

◆ piecewise_curve_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef piecewise_curve<Time, Numeric, Safe, Point> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::piecewise_curve_t

◆ point_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef Point curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::point_t

◆ spline_constraints

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef curve_constraints<Point> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::spline_constraints

◆ spline_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef SplineBase curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::spline_t

◆ t_curve_ptr_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef piecewise_curve_t::t_curve_ptr_t curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::t_curve_ptr_t

◆ t_point_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef T_Point curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::t_point_t

◆ t_spline_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef std::vector<spline_t> curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::t_spline_t

◆ time_t

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
typedef Time curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::time_t

Constructor & Destructor Documentation

◆ exact_cubic() [1/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( )
inline

Empty constructor.

Add at least one curve to call other class functions.

◆ exact_cubic() [2/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
template<typename In >
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( In  wayPointsBegin,
In  wayPointsEnd 
)
inline

Constructor.

Parameters
wayPointsBegin: an iterator pointing to the first element of a waypoint container.
wayPointsEns: an iterator pointing to the last element of a waypoint container.

◆ exact_cubic() [3/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
template<typename In >
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( In  wayPointsBegin,
In  wayPointsEnd,
const spline_constraints constraints 
)
inline

Constructor.

Parameters
wayPointsBegin: an iterator pointing to the first element of a waypoint container.
wayPointsEns: an iterator pointing to the last element of a waypoint container.
constraints: constraints on the init and end velocity / accelerations of the spline.

◆ exact_cubic() [4/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( const t_spline_t subSplines)
inline

Constructor.

Parameters
subSplinesvector of subSplines.

◆ exact_cubic() [5/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( const t_curve_ptr_t subSplines)
inline

◆ exact_cubic() [6/6]

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::exact_cubic ( const exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase > &  other)
inline

Copy Constructor.

◆ ~exact_cubic()

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
virtual curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::~exact_cubic ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ getNumberSplines()

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
std::size_t curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::getNumberSplines ( )
inline

◆ getSplineAt()

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
spline_t curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::getSplineAt ( std::size_t  index)
inline

◆ isApprox()

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
bool curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::isApprox ( const exact_cubic_t other,
const Numeric  prec = Eigen::NumTraits<Numeric>::dummy_precision() 
) const
inline

isApprox check if other and *this are approximately equals.

Only two curves of the same class can be approximately equals, for comparison between different type of curves see isEquivalent

Parameters
otherthe other curve to check
precthe precision treshold, default Eigen::NumTraits<Numeric>::dummy_precision()
Returns
true is the two curves are approximately equals

Referenced by curves::helpers::rotation_spline::isApprox().

◆ serialize()

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
template<class Archive >
void curves::exact_cubic< Time, Numeric, Safe, Point, T_Point, SplineBase >::serialize ( Archive &  ar,
const unsigned int  version 
)
inline

Friends And Related Function Documentation

◆ boost::serialization::access

template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>, typename T_Point = std::vector<Point, Eigen::aligned_allocator<Point> >, typename SplineBase = polynomial<Time, Numeric, Safe, Point, T_Point>>
friend class boost::serialization::access
friend