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 <vector>
14 #include <boost/smart_ptr/shared_ptr.hpp>
15 
16 namespace curves {
17 
18 template <typename Time, typename Numeric, bool Safe, typename Point, typename Point_derivate>
19 struct curve_abc;
20 
21 template <typename Time, typename Numeric, bool Safe, typename Point>
22 struct bezier_curve;
23 
24 template <typename Time, typename Numeric, bool Safe, typename Point,typename Point_derivate>
25 struct constant_curve;
26 
27 template <typename Time, typename Numeric, bool Safe, typename Point>
28 struct cubic_hermite_spline;
29 
30 template <typename Time, typename Numeric, bool Safe, typename Point, typename T_Point, typename SplineBase>
31 struct exact_cubic;
32 
33 template <typename Time, typename Numeric, bool Safe, typename Point, typename Point_derivate, typename CurveType>
35 
36 template <typename Time, typename Numeric, bool Safe, typename Point, typename T_Point>
37 struct polynomial;
38 
39 template <typename Time, typename Numeric, bool Safe>
40 struct SE3Curve;
41 
42 template <typename Time, typename Numeric, bool Safe, typename Point>
43 struct sinusoidal;
44 
45 template <typename Time, typename Numeric, bool Safe>
46 struct SO3Linear;
47 
48 template <typename Numeric>
49 struct Bern;
50 
51 template <typename Point>
52 struct curve_constraints;
53 
54 template <typename Numeric, bool Safe>
56 
57 template <typename Numeric>
59 
60 // typedef of the commonly used templates arguments :
61 // eigen types :
62 typedef Eigen::Vector3d point3_t;
63 typedef Eigen::Matrix<double, 6, 1> point6_t;
64 typedef Eigen::VectorXd pointX_t;
65 typedef Eigen::Matrix<double, 3, 3> matrix3_t;
66 typedef Eigen::Matrix<double, 4, 4> matrix4_t;
67 typedef Eigen::Quaternion<double> quaternion_t;
68 typedef Eigen::Transform<double, 3, Eigen::Affine> transform_t;
69 typedef std::vector<point3_t, Eigen::aligned_allocator<point3_t> > t_point3_t;
70 typedef std::vector<pointX_t, Eigen::aligned_allocator<pointX_t> > t_pointX_t;
71 
72 // abstract curves types:
74 typedef curve_abc<double, double, true, point3_t, point3_t> curve_3_t; // generic class of curve of size 3
76  curve_rotation_t; // templated class used for the rotation (return dimension are fixed)
78  curve_SE3_t; // templated abstract class used for all the se3 curves (return dimension are fixed)
79 
80 // shared pointer to abstract types:
81 typedef boost::shared_ptr<curve_abc_t> curve_ptr_t;
82 typedef boost::shared_ptr<curve_3_t> curve3_ptr_t;
83 typedef boost::shared_ptr<curve_rotation_t> curve_rotation_ptr_t;
84 typedef boost::shared_ptr<curve_SE3_t> curve_SE3_ptr_t;
85 
86 // definition of all curves class with pointX as return type:
94 
95 // definition of all curves class with point3 as return type:
102 
103 // special curves with return type fixed:
107 
108 } // namespace curves
109 
110 #endif // CURVES_FWD_H
Eigen::VectorXd pointX_t
Definition: fwd.h:64
Composition of a curve of any type of dimension 3 and a curve representing an rotation (in current im...
Definition: fwd.h:40
cubic_hermite_spline< double, double, true, pointX_t > cubic_hermite_spline_t
Definition: fwd.h:91
Eigen::Matrix< double, 6, 1 > point6_t
Definition: fwd.h:63
std::vector< point3_t, Eigen::aligned_allocator< point3_t > > t_point3_t
Definition: fwd.h:69
sinusoidal< double, double, true, pointX_t > sinusoidal_t
Definition: fwd.h:93
Eigen::Vector3d point3_t
Definition: fwd.h:58
polynomial< double, double, true, point3_t, t_point3_t > polynomial3_t
Definition: fwd.h:96
constant_curve< double, double, true, point3_t, point3_t > constant3_t
Definition: fwd.h:99
Definition: curve_constraint.h:21
boost::shared_ptr< curve_3_t > curve3_ptr_t
Definition: fwd.h:82
Definition: bernstein.h:20
Eigen::Transform< double, 3, Eigen::Affine > transform_t
Definition: fwd.h:68
Represents a polynomial of an arbitrary order defined on the interval . It follows the equation : ...
Definition: fwd.h:37
Represents a sinusoidal curve, evaluating the following equation: p0 + amplitude * (sin(2pi/T + phi) ...
Definition: fwd.h:43
Eigen::Quaternion< double > quaternion_t
Definition: fwd.h:67
exact_cubic< double, double, true, point3_t, t_point3_t, polynomial_t > exact_cubic3_t
Definition: fwd.h:97
curve_abc< double, double, true, matrix3_t, point3_t > curve_rotation_t
Definition: fwd.h:76
piecewise_curve< double, double, true, pointX_t, pointX_t, curve_abc_t > piecewise_t
Definition: fwd.h:92
piecewise_curve< double, double, true, transform_t, point6_t, curve_SE3_t > piecewise_SE3_t
Definition: fwd.h:106
Definition: fwd.h:58
Eigen::Matrix< double, 4, 4 > matrix4_t
Definition: fwd.h:66
boost::shared_ptr< curve_rotation_t > curve_rotation_ptr_t
Definition: fwd.h:83
SO3Linear< double, double, true > SO3Linear_t
Definition: fwd.h:104
Definition: exact_cubic.h:41
Eigen::Matrix< double, 3, 3 > matrix3_t
Definition: fwd.h:65
Definition: cubic_hermite_spline.h:36
curve_abc< double, double, true, transform_t, point6_t > curve_SE3_t
Definition: fwd.h:78
constant_curve< double, double, true, pointX_t, pointX_t > constant_t
Definition: fwd.h:90
Represents a constant_curve curve, always returning the same value and a null derivative.
Definition: constant_curve.h:20
boost::shared_ptr< curve_SE3_t > curve_SE3_ptr_t
Definition: fwd.h:84
cubic_hermite_spline< double, double, true, point3_t > cubic_hermite_spline3_t
Definition: fwd.h:100
bezier_curve< double, double, true, point3_t > bezier3_t
Definition: fwd.h:98
exact_cubic< double, double, true, pointX_t, t_pointX_t, polynomial_t > exact_cubic_t
Definition: fwd.h:88
curve_abc< double, double, true, pointX_t, pointX_t > curve_abc_t
Definition: fwd.h:73
Represents a linear interpolation in SO3, using the slerp method provided by Eigen::Quaternion.
Definition: fwd.h:46
SE3Curve< double, double, true > SE3Curve_t
Definition: fwd.h:105
curve_abc< double, double, true, point3_t, point3_t > curve_3_t
Definition: fwd.h:74
piecewise_curve< double, double, true, point3_t, point3_t, curve_3_t > piecewise3_t
Definition: fwd.h:101
boost::shared_ptr< curve_abc_t > curve_ptr_t
Definition: fwd.h:81
Definition: fwd.h:55
Definition: fwd.h:34
Definition: fwd.h:49
polynomial< double, double, true, pointX_t, t_pointX_t > polynomial_t
Definition: fwd.h:87
std::vector< pointX_t, Eigen::aligned_allocator< pointX_t > > t_pointX_t
Definition: fwd.h:70
Represents a curve of dimension Dim. If value of parameter Safe is false, no verification is made on ...
Definition: curve_abc.h:34
Definition: bezier_curve.h:32
bezier_curve< double, double, true, pointX_t > bezier_t
Definition: fwd.h:89