fwd.h
Go to the documentation of this file.
1 
10 #ifndef CURVES_FWD_H
11 #define CURVES_FWD_H
12 #include <Eigen/Dense>
13 #include <boost/smart_ptr/shared_ptr.hpp>
14 #include <vector>
15 
16 namespace ndcurves {
17 
18 template <typename Time, typename Numeric, bool Safe, typename Point,
19  typename Point_derivate>
20 struct curve_abc;
21 
22 template <typename Time, typename Numeric, bool Safe, typename Point>
23 struct bezier_curve;
24 
25 template <typename Time, typename Numeric, bool Safe, typename Point,
26  typename Point_derivate>
27 struct constant_curve;
28 
29 template <typename Time, typename Numeric, bool Safe, typename Point>
30 struct cubic_hermite_spline;
31 
32 template <typename Time, typename Numeric, bool Safe, typename Point,
33  typename T_Point, typename SplineBase>
34 struct exact_cubic;
35 
36 template <typename Time, typename Numeric, bool Safe, typename Point,
37  typename Point_derivate, typename CurveType>
39 
40 template <typename Time, typename Numeric, bool Safe, typename Point,
41  typename T_Point>
42 struct polynomial;
43 
44 template <typename Time, typename Numeric, bool Safe>
45 struct SE3Curve;
46 
47 template <typename Time, typename Numeric, bool Safe, typename Point>
48 struct sinusoidal;
49 
50 template <typename Time, typename Numeric, bool Safe>
51 struct SO3Linear;
52 
53 template <typename Time, typename Numeric, bool Safe>
54 struct SO3Smooth;
55 
56 template <typename Numeric>
57 struct Bern;
58 
59 template <typename Point>
60 struct curve_constraints;
61 
62 template <typename Numeric, bool Safe>
64 
65 template <typename Numeric>
67 
68 // typedef of the commonly used templates arguments :
69 // eigen types :
70 typedef Eigen::Matrix<double, 1, 1> point1_t;
71 typedef Eigen::Vector3d point3_t;
72 typedef Eigen::Matrix<double, 6, 1> point6_t;
73 typedef Eigen::VectorXd pointX_t;
74 typedef Eigen::Matrix<double, 3, 3> matrix3_t;
75 typedef Eigen::Matrix<double, 4, 4> matrix4_t;
76 typedef Eigen::Quaternion<double> quaternion_t;
77 typedef Eigen::Transform<double, 3, Eigen::Affine> transform_t;
78 typedef std::vector<point1_t, Eigen::aligned_allocator<point1_t>> t_point1_t;
79 typedef std::vector<point3_t, Eigen::aligned_allocator<point3_t>> t_point3_t;
80 typedef std::vector<pointX_t, Eigen::aligned_allocator<pointX_t>> t_pointX_t;
81 typedef Eigen::Ref<const matrix3_t> matrix3_t_cst_ref;
82 
83 // abstract curves types:
85  curve_abc_t; // base abstract class
87  curve_3_t; // generic class of curve of size 3
88 typedef curve_3_t curve_translation_t; // generic class of a translation curve
90  curve_rotation_t; // templated class used for the rotation (return
91  // dimension are fixed)
93  curve_SE3_t; // templated abstract class used for all the se3 curves
94  // (return dimension are fixed)
95 
96 // shared pointer to abstract types:
97 typedef boost::shared_ptr<curve_abc_t> curve_ptr_t;
98 typedef boost::shared_ptr<curve_3_t> curve3_ptr_t;
99 typedef boost::shared_ptr<curve_rotation_t> curve_rotation_ptr_t;
100 typedef boost::shared_ptr<curve_translation_t> curve_translation_ptr_t;
101 typedef boost::shared_ptr<curve_SE3_t> curve_SE3_ptr_t;
102 
103 // definition of all curves class with pointX as return type:
117 
118 // definition of all curves class with point3 as return type:
129 
130 // special curves with return type fixed:
134 typedef piecewise_curve<double, double, true, transform_t, point6_t,
135  curve_SE3_t>
137 
138 } // namespace ndcurves
139 
140 #endif // CURVES_FWD_H
ndcurves::linear_variable_t
linear_variable< double, true > linear_variable_t
Definition: fwd.h:108
ndcurves::exact_cubic
Definition: exact_cubic.h:41
ndcurves::SE3Curve_t
SE3Curve< double, double, true > SE3Curve_t
Definition: fwd.h:133
ndcurves::polynomial3_t
polynomial< double, double, true, point3_t, t_point3_t > polynomial3_t
Definition: fwd.h:119
ndcurves::curve_3_t
curve_abc< double, double, true, point3_t, point3_t > curve_3_t
Definition: fwd.h:87
ndcurves::bezier_curve
Definition: bezier_curve.h:31
ndcurves::point6_t
Eigen::Matrix< double, 6, 1 > point6_t
Definition: fwd.h:72
ndcurves::cubic_hermite_spline3_t
cubic_hermite_spline< double, double, true, point3_t > cubic_hermite_spline3_t
Definition: fwd.h:126
ndcurves::polynomial1_t
polynomial< double, double, true, point1_t, t_point1_t > polynomial1_t
Definition: fwd.h:120
ndcurves::piecewise_curve
Definition: fwd.h:38
ndcurves::curve_constraints
Definition: curve_constraint.h:20
ndcurves::curve3_ptr_t
boost::shared_ptr< curve_3_t > curve3_ptr_t
Definition: fwd.h:98
ndcurves::constant3_t
constant_curve< double, double, true, point3_t, point3_t > constant3_t
Definition: fwd.h:124
ndcurves::SO3Linear
Represents a linear interpolation in SO3, using the slerp method provided by Eigen::Quaternion.
Definition: fwd.h:51
ndcurves::Bern
Definition: fwd.h:57
ndcurves::SO3Linear_t
SO3Linear< double, double, true > SO3Linear_t
Definition: fwd.h:132
ndcurves::SO3Smooth
Definition: fwd.h:54
ndcurves::curve_SE3_ptr_t
boost::shared_ptr< curve_SE3_t > curve_SE3_ptr_t
Definition: fwd.h:101
ndcurves::t_pointX_t
std::vector< pointX_t, Eigen::aligned_allocator< pointX_t > > t_pointX_t
Definition: fwd.h:80
ndcurves::curve_translation_ptr_t
boost::shared_ptr< curve_translation_t > curve_translation_ptr_t
Definition: fwd.h:100
ndcurves::cubic_hermite_spline
Definition: cubic_hermite_spline.h:34
ndcurves::curve_abc_t
curve_abc< double, double, true, pointX_t, pointX_t > curve_abc_t
Definition: fwd.h:85
ndcurves::helpers::T_Point
std::vector< Point, Eigen::aligned_allocator< Point > > T_Point
Definition: effector_spline.h:29
ndcurves::curve_rotation_t
curve_abc< double, double, true, matrix3_t, point3_t > curve_rotation_t
Definition: fwd.h:90
ndcurves::piecewise_SE3_t
piecewise_curve< double, double, true, transform_t, point6_t, curve_SE3_t > piecewise_SE3_t
Definition: fwd.h:136
ndcurves::curve_ptr_t
boost::shared_ptr< curve_abc_t > curve_ptr_t
Definition: fwd.h:97
ndcurves::polynomial_t
polynomial< double, double, true, pointX_t, t_pointX_t > polynomial_t
Definition: fwd.h:104
ndcurves::constant_t
constant_curve< double, double, true, pointX_t, pointX_t > constant_t
Definition: fwd.h:111
ndcurves::exact_cubic_t
exact_cubic< double, double, true, pointX_t, t_pointX_t, polynomial_t > exact_cubic_t
Definition: fwd.h:106
ndcurves::curve_rotation_ptr_t
boost::shared_ptr< curve_rotation_t > curve_rotation_ptr_t
Definition: fwd.h:99
ndcurves::SO3Smooth_t
SO3Smooth< double, double, true > SO3Smooth_t
Definition: fwd.h:131
ndcurves::curve_abc
Represents a curve of dimension Dim. If value of parameter Safe is false, no verification is made on ...
Definition: curve_abc.h:37
ndcurves::SE3Curve
Composition of a curve of any type of dimension 3 and a curve representing an rotation (in current im...
Definition: fwd.h:45
ndcurves::sinusoidal_t
sinusoidal< double, double, true, pointX_t > sinusoidal_t
Definition: fwd.h:116
ndcurves::quaternion_t
Eigen::Quaternion< double > quaternion_t
Definition: fwd.h:76
ndcurves
Definition: bernstein.h:20
ndcurves::bezier_linear_variable_t
bezier_curve< double, double, true, linear_variable_t > bezier_linear_variable_t
Definition: fwd.h:110
ndcurves::helpers::Time
double Time
Definition: effector_spline.h:27
ndcurves::curve_translation_t
curve_3_t curve_translation_t
Definition: fwd.h:88
ndcurves::t_point1_t
std::vector< point1_t, Eigen::aligned_allocator< point1_t > > t_point1_t
Definition: fwd.h:78
ndcurves::cubic_hermite_spline_t
cubic_hermite_spline< double, double, true, pointX_t > cubic_hermite_spline_t
Definition: fwd.h:113
ndcurves::t_point3_t
std::vector< point3_t, Eigen::aligned_allocator< point3_t > > t_point3_t
Definition: fwd.h:79
ndcurves::polynomial
Represents a polynomial of an arbitrary order defined on the interval . It follows the equation : ...
Definition: fwd.h:42
ndcurves::point3_t
Eigen::Vector3d point3_t
Definition: fwd.h:71
ndcurves::piecewise_t
piecewise_curve< double, double, true, pointX_t, pointX_t, curve_abc_t > piecewise_t
Definition: fwd.h:115
ndcurves::exact_cubic3_t
exact_cubic< double, double, true, point3_t, t_point3_t, polynomial_t > exact_cubic3_t
Definition: fwd.h:122
ndcurves::constant_curve
Represents a constant_curve curve, always returning the same value and a null derivative.
Definition: constant_curve.h:22
ndcurves::quadratic_variable
Definition: fwd.h:66
ndcurves::pointX_t
Eigen::VectorXd pointX_t
Definition: fwd.h:73
ndcurves::transform_t
Eigen::Transform< double, 3, Eigen::Affine > transform_t
Definition: fwd.h:77
ndcurves::point1_t
Eigen::Matrix< double, 1, 1 > point1_t
Definition: fwd.h:66
ndcurves::helpers::Point
Eigen::Matrix< Numeric, Eigen::Dynamic, 1 > Point
Definition: effector_spline.h:28
ndcurves::piecewise3_t
piecewise_curve< double, double, true, point3_t, point3_t, curve_3_t > piecewise3_t
Definition: fwd.h:128
ndcurves::matrix3_t_cst_ref
Eigen::Ref< const matrix3_t > matrix3_t_cst_ref
Definition: fwd.h:81
ndcurves::bezier_t
bezier_curve< double, double, true, pointX_t > bezier_t
Definition: fwd.h:107
ndcurves::bezier3_t
bezier_curve< double, double, true, point3_t > bezier3_t
Definition: fwd.h:123
ndcurves::linear_variable
Definition: fwd.h:63
ndcurves::matrix4_t
Eigen::Matrix< double, 4, 4 > matrix4_t
Definition: fwd.h:75
ndcurves::matrix3_t
Eigen::Matrix< double, 3, 3 > matrix3_t
Definition: fwd.h:74
ndcurves::sinusoidal
Represents a sinusoidal curve, evaluating the following equation: p0 + amplitude * (sin(2pi/T + phi)
Definition: fwd.h:48
ndcurves::helpers::Numeric
double Numeric
Definition: effector_spline.h:26
ndcurves::curve_SE3_t
curve_abc< double, double, true, transform_t, point6_t > curve_SE3_t
Definition: fwd.h:93