Composition of a curve of any type of dimension 3 and a curve representing an rotation (in current implementation, only SO3Linear can be used for the rotation part) The output is a vector of size 7 (pos_x,pos_y,pos_z,quat_x,quat_y,quat_z,quat_w) The output of the derivative of any order is a vector of size 6 (linear_x,linear_y,linear_z,angular_x,angular_y,angular_z)
More...
|
typedef Numeric | Scalar |
|
typedef Eigen::Transform< Numeric, 3, Eigen::Affine > | transform_t |
|
typedef transform_t | point_t |
|
typedef Eigen::Matrix< Scalar, 6, 1 > | point_derivate_t |
|
typedef Eigen::Quaternion< Scalar > | Quaternion |
|
typedef Time | time_t |
|
typedef curve_abc< Time, Numeric, Safe, point_t, point_derivate_t > | curve_abc_t |
|
typedef polynomial< Time, Numeric, Safe, point_derivate_t > | curve_derivate_t |
|
typedef curve_abc< Time, Numeric, Safe, pointX_t > | curve_X_t |
|
typedef curve_abc< Time, Numeric, Safe, point3_t, point3_t > | curve_translation_t |
|
typedef curve_abc< Time, Numeric, Safe, matrix3_t, point3_t > | curve_rotation_t |
|
typedef std::shared_ptr< curve_X_t > | curve_ptr_t |
|
typedef std::shared_ptr< curve_rotation_t > | curve_rotation_ptr_t |
|
typedef std::shared_ptr< curve_translation_t > | curve_translation_ptr_t |
|
typedef SO3Linear< Time, Numeric, Safe > | SO3Linear_t |
|
typedef polynomial< Time, Numeric, Safe, pointX_t > | polynomial_t |
|
typedef SE3Curve< Time, Numeric, Safe > | SE3Curve_t |
|
typedef Point | point_t |
|
typedef Point_derivate | point_derivate_t |
|
typedef Time | time_t |
|
typedef Numeric | num_t |
|
typedef curve_abc< Time, Numeric, Safe, point_t, point_derivate_t > | curve_t |
|
typedef curve_abc< Time, Numeric, Safe, point_derivate_t > | curve_derivate_t |
|
typedef std::shared_ptr< curve_t > | curve_ptr_t |
|
|
| SE3Curve () |
| Empty constructor. Curve obtained this way can not perform other class functions.
|
|
virtual | ~SE3Curve () |
| Destructor.
|
|
| SE3Curve (const transform_t &init_transform, const transform_t &end_transform, const time_t &t_min, const time_t &t_max) |
| Constructor from init/end transform use polynomial of degree 1 for position and SO3Linear for rotation.
|
|
| SE3Curve (const point3_t &init_pos, const point3_t &end_pos, const Quaternion &init_rot, const Quaternion &end_rot, const time_t &t_min, const time_t &t_max) |
| Constructor from init/end pose, with quaternion. use polynomial of degree 1 for position and SO3Linear for rotation.
|
|
| SE3Curve (const point3_t &init_pos, const point3_t &end_pos, const matrix3_t &init_rot, const matrix3_t &end_rot, const time_t &t_min, const time_t &t_max) |
| Constructor from init/end pose, with rotation matrix. use polynomial of degree 1 for position and SO3Linear for rotation.
|
|
| SE3Curve (curve_translation_ptr_t translation_curve, const Quaternion &init_rot, const Quaternion &end_rot) |
| Constructor from curve for the translation and init/end rotation, with quaternion. Use SO3Linear for rotation with the same time bounds as the.
|
|
| SE3Curve (curve_translation_ptr_t translation_curve, const matrix3_t &init_rot, const matrix3_t &end_rot) |
| Constructor from curve for the translation and init/end rotation, with rotation matrix. Use SO3Linear for rotation with the same time bounds as the.
|
|
| SE3Curve (curve_translation_ptr_t translation_curve, curve_rotation_ptr_t rotation_curve) |
| Constructor from from translation and rotation curves object.
|
|
virtual point_t | operator() (const time_t t) const |
| Evaluation of the SE3Curve at time t.
|
|
bool | isApprox (const SE3Curve_t &other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const |
| 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
|
|
virtual bool | isApprox (const curve_abc_t *other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const |
| isApprox check if other and *this are approximately equal given a precision threshold Only two curves of the same class can be approximately equal, for comparison between different type of curves see isEquivalent.
|
|
virtual bool | operator== (const SE3Curve_t &other) const |
|
virtual bool | operator!= (const SE3Curve_t &other) const |
|
virtual point_derivate_t | derivate (const time_t t, const std::size_t order) const |
| Evaluation of the derivative of order N of spline at time t.
|
|
curve_derivate_t | compute_derivate (const std::size_t) const |
|
curve_derivate_t * | compute_derivate_ptr (const std::size_t order) const |
| Compute the derived curve at order N.
|
|
virtual std::size_t | dim () const |
| Get dimension of curve.
|
|
time_t | min () const |
| Get the minimum time for which the curve is defined.
|
|
time_t | max () const |
| Get the maximum time for which the curve is defined.
|
|
virtual std::size_t | degree () const |
| Get the degree of the curve.
|
|
const curve_translation_ptr_t | translation_curve () const |
| const accessor to the translation curve
|
|
const curve_rotation_ptr_t | rotation_curve () const |
| const accessor to the rotation curve
|
|
template<class Archive > |
void | serialize (Archive &ar, const unsigned int version) |
|
| curve_abc () |
| Constructor.
|
|
virtual | ~curve_abc () |
| Destructor.
|
|
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 threshold. This test is done by discretizing both curves and evaluating them and their derivatives.
|
|
std::pair< time_t, time_t > | timeRange () |
|
template<class Archive > |
void | serialize (Archive &ar, const unsigned int version) |
|
template<class Derived > |
void | loadFromText (const std::string &filename) |
| Loads a Derived object from a text file.
|
|
template<class Derived > |
void | saveAsText (const std::string &filename) const |
| Saved a Derived object as a text file.
|
|
template<class Derived > |
void | loadFromXML (const std::string &filename, const std::string &tag_name) |
| Loads a Derived object from an XML file.
|
|
template<class Derived > |
void | saveAsXML (const std::string &filename, const std::string &tag_name) const |
| Saved a Derived object as an XML file.
|
|
template<class Derived > |
void | loadFromBinary (const std::string &filename) |
| Loads a Derived object from an binary file.
|
|
template<class Derived > |
void | saveAsBinary (const std::string &filename) const |
| Saved a Derived object as an binary file.
|
|
template<
typename Time = double,
typename Numeric = Time,
bool Safe = false>
class ndcurves::SE3Curve< Time, Numeric, Safe >
Composition of a curve of any type of dimension 3 and a curve representing an rotation (in current implementation, only SO3Linear can be used for the rotation part) The output is a vector of size 7 (pos_x,pos_y,pos_z,quat_x,quat_y,quat_z,quat_w) The output of the derivative of any order is a vector of size 6 (linear_x,linear_y,linear_z,angular_x,angular_y,angular_z)
template<typename Time = double, typename Numeric = Time, bool Safe = false>
virtual bool ndcurves::SE3Curve< Time, Numeric, Safe >::isApprox |
( |
const curve_abc_t * |
other, |
|
|
const Numeric |
prec = Eigen::NumTraits< Numeric >::dummy_precision() |
|
) |
| const |
|
inlinevirtual |
isApprox check if other and *this are approximately equal given a precision threshold Only two curves of the same class can be approximately equal, for comparison between different type of curves see isEquivalent.
- Parameters
-
other | the other curve to check |
prec | the precision threshold, default Eigen::NumTraits<Numeric>::dummy_precision() |
- Returns
- true if the two curves are approximately equal
Implements ndcurves::curve_abc< Time, Numeric, Safe, Point, Point_derivate >.