ndcurves::SE3Curve Class Reference

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...

#include <ndcurves/fwd.h>

Public Types

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< ScalarQuaternion
 
typedef Time time_t
 
typedef curve_abc< Time, Numeric, Safe, point_t, point_derivate_tcurve_abc_t
 
typedef polynomial< Time, Numeric, Safe, point_derivate_tcurve_derivate_t
 
typedef curve_abc< Time, Numeric, Safe, pointX_tcurve_X_t
 
typedef curve_abc< Time, Numeric, Safe, matrix3_t, point3_tcurve_rotation_t
 
typedef boost::shared_ptr< curve_X_tcurve_ptr_t
 
typedef boost::shared_ptr< curve_rotation_tcurve_rotation_ptr_t
 
typedef SO3Linear< Time, Numeric, Safe > SO3Linear_t
 
typedef polynomial< Time, Numeric, Safe, pointX_tpolynomial_t
 
typedef SE3Curve< Time, Numeric, Safe > SE3Curve_t
 

Public Member Functions

 SE3Curve ()
 Empty constructor. Curve obtained this way can not perform other class functions. More...
 
 ~SE3Curve ()
 Destructor. More...
 
 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. More...
 
 SE3Curve (const pointX_t &init_pos, const pointX_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. More...
 
 SE3Curve (const pointX_t &init_pos, const pointX_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. More...
 
 SE3Curve (curve_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. More...
 
 SE3Curve (curve_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. More...
 
 SE3Curve (curve_ptr_t translation_curve, curve_rotation_ptr_t rotation_curve)
 Constructor from from translation and rotation curves object. More...
 
virtual point_t operator() (const time_t t) const
 Evaluation of the SE3Curve at time t. More...
 
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 More...
 
virtual bool isApprox (const curve_abc_t *other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const
 
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. More...
 
curve_derivate_t compute_derivate (const std::size_t) const
 
curve_derivate_tcompute_derivate_ptr (const std::size_t order) const
 Compute the derived curve at order N. More...
 
virtual std::size_t dim () const
 Get dimension of curve. More...
 
time_t min () const
 Get the minimum time for which the curve is defined. More...
 
time_t 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...
 
const curve_ptr_t translation_curve () const
 const accessor to the translation curve More...
 
const curve_rotation_ptr_t rotation_curve () const
 const accessor to the rotation curve More...
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Public Attributes

std::size_t dim_
 
curve_ptr_t translation_curve_
 
curve_rotation_ptr_t rotation_curve_
 
time_t T_min_
 
time_t T_max_
 

Friends

class boost::serialization::access
 

Detailed Description

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)

Member Typedef Documentation

◆ curve_abc_t

◆ curve_derivate_t

◆ curve_ptr_t

typedef boost::shared_ptr<curve_X_t> ndcurves::SE3Curve::curve_ptr_t

◆ curve_rotation_ptr_t

◆ curve_rotation_t

◆ curve_X_t

typedef curve_abc<Time, Numeric, Safe, pointX_t> ndcurves::SE3Curve::curve_X_t

◆ point_derivate_t

typedef Eigen::Matrix<Scalar, 6, 1> ndcurves::SE3Curve::point_derivate_t

◆ point_t

◆ polynomial_t

typedef polynomial<Time, Numeric, Safe, pointX_t> ndcurves::SE3Curve::polynomial_t

◆ Quaternion

typedef Eigen::Quaternion<Scalar> ndcurves::SE3Curve::Quaternion

◆ Scalar

typedef Numeric ndcurves::SE3Curve::Scalar

◆ SE3Curve_t

typedef SE3Curve<Time, Numeric, Safe> ndcurves::SE3Curve::SE3Curve_t

◆ SO3Linear_t

typedef SO3Linear<Time, Numeric, Safe> ndcurves::SE3Curve::SO3Linear_t

◆ time_t

◆ transform_t

typedef Eigen::Transform<Numeric, 3, Eigen::Affine> ndcurves::SE3Curve::transform_t

Constructor & Destructor Documentation

◆ SE3Curve() [1/7]

ndcurves::SE3Curve::SE3Curve ( )
inline

Empty constructor. Curve obtained this way can not perform other class functions.

◆ ~SE3Curve()

ndcurves::SE3Curve::~SE3Curve ( )
inline

Destructor.

◆ SE3Curve() [2/7]

ndcurves::SE3Curve::SE3Curve ( const transform_t init_transform,
const transform_t end_transform,
const time_t t_min,
const time_t t_max 
)
inline

Constructor from init/end transform use polynomial of degree 1 for position and SO3Linear for rotation.

◆ SE3Curve() [3/7]

ndcurves::SE3Curve::SE3Curve ( const pointX_t init_pos,
const pointX_t end_pos,
const Quaternion init_rot,
const Quaternion end_rot,
const time_t t_min,
const time_t t_max 
)
inline

Constructor from init/end pose, with quaternion. use polynomial of degree 1 for position and SO3Linear for rotation.

◆ SE3Curve() [4/7]

ndcurves::SE3Curve::SE3Curve ( const pointX_t init_pos,
const pointX_t end_pos,
const matrix3_t init_rot,
const matrix3_t end_rot,
const time_t t_min,
const time_t t_max 
)
inline

Constructor from init/end pose, with rotation matrix. use polynomial of degree 1 for position and SO3Linear for rotation.

◆ SE3Curve() [5/7]

ndcurves::SE3Curve::SE3Curve ( curve_ptr_t  translation_curve,
const Quaternion init_rot,
const Quaternion end_rot 
)
inline

Constructor from curve for the translation and init/end rotation, with quaternion. Use SO3Linear for rotation with the same time bounds as the.

◆ SE3Curve() [6/7]

ndcurves::SE3Curve::SE3Curve ( curve_ptr_t  translation_curve,
const matrix3_t init_rot,
const matrix3_t end_rot 
)
inline

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() [7/7]

ndcurves::SE3Curve::SE3Curve ( curve_ptr_t  translation_curve,
curve_rotation_ptr_t  rotation_curve 
)
inline

Constructor from from translation and rotation curves object.

Member Function Documentation

◆ compute_derivate()

curve_derivate_t ndcurves::SE3Curve::compute_derivate ( const std::size_t  ) const
inline

◆ compute_derivate_ptr()

curve_derivate_t* ndcurves::SE3Curve::compute_derivate_ptr ( const std::size_t  order) const
inline

Compute the derived curve at order N.

Parameters
order: order of derivative.
Returns
A pointer to $\frac{d^Nx(t)}{dt^N}$ derivative order N of the curve.

◆ degree()

virtual std::size_t ndcurves::SE3Curve::degree ( ) const
inlinevirtual

Get the degree of the curve.

Returns
$degree$, the degree of the curve.

◆ derivate()

virtual point_derivate_t ndcurves::SE3Curve::derivate ( const time_t  t,
const std::size_t  order 
) const
inlinevirtual

Evaluation of the derivative of order N of spline at time t.

Parameters
t: the time when to evaluate the spline.
order: order of derivative.
Returns
$\frac{d^Nx(t)}{dt^N}$ point corresponding on derivative spline at time t.

◆ dim()

virtual std::size_t ndcurves::SE3Curve::dim ( ) const
inlinevirtual

Get dimension of curve.

Returns
dimension of curve.

◆ isApprox() [1/2]

virtual bool ndcurves::SE3Curve::isApprox ( const curve_abc_t other,
const Numeric  prec = Eigen::NumTraits<Numeric>::dummy_precision() 
) const
inlinevirtual

◆ isApprox() [2/2]

bool ndcurves::SE3Curve::isApprox ( const SE3Curve_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

◆ max()

time_t ndcurves::SE3Curve::max ( ) const
inline

Get the maximum time for which the curve is defined.

Returns
$t_{max}$ upper bound of time range.

◆ min()

time_t ndcurves::SE3Curve::min ( ) const
inline

Get the minimum time for which the curve is defined.

Returns
$t_{min}$ lower bound of time range.

◆ operator!=()

virtual bool ndcurves::SE3Curve::operator!= ( const SE3Curve_t other) const
inlinevirtual

◆ operator()()

virtual point_t ndcurves::SE3Curve::operator() ( const time_t  t) const
inlinevirtual

Evaluation of the SE3Curve at time t.

Parameters
t: time when to evaluate the spline.
Returns
$x(t)$ point corresponding on spline at time t. (pos_x,pos_y,pos_z,quat_x,quat_y,quat_z,quat_w)

◆ operator==()

virtual bool ndcurves::SE3Curve::operator== ( const SE3Curve_t other) const
inlinevirtual

◆ rotation_curve()

const curve_rotation_ptr_t ndcurves::SE3Curve::rotation_curve ( ) const
inline

const accessor to the rotation curve

◆ serialize()

template<class Archive >
void ndcurves::SE3Curve::serialize ( Archive &  ar,
const unsigned int  version 
)
inline

◆ translation_curve()

const curve_ptr_t ndcurves::SE3Curve::translation_curve ( ) const
inline

const accessor to the translation curve

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ dim_

std::size_t ndcurves::SE3Curve::dim_

◆ rotation_curve_

curve_rotation_ptr_t ndcurves::SE3Curve::rotation_curve_

◆ T_max_

time_t ndcurves::SE3Curve::T_max_

◆ T_min_

time_t ndcurves::SE3Curve::T_min_

◆ translation_curve_

curve_ptr_t ndcurves::SE3Curve::translation_curve_

The documentation for this class was generated from the following files: