6 #ifndef __pinocchio_se3_base_hpp__ 7 #define __pinocchio_se3_base_hpp__ 23 template<
class Derived>
26 PINOCCHIO_SE3_TYPEDEF_TPL(Derived);
28 Derived & derived() {
return *
static_cast<Derived*
>(
this); }
29 const Derived& derived()
const {
return *
static_cast<const Derived*
>(
this); }
31 ConstAngularRef rotation()
const {
return derived().rotation_impl(); }
32 ConstLinearRef translation()
const {
return derived().translation_impl(); }
33 AngularRef rotation() {
return derived().rotation_impl(); }
34 LinearRef translation() {
return derived().translation_impl(); }
35 void rotation(
const AngularType & R) { derived().rotation_impl(R); }
36 void translation(
const LinearType & t) { derived().translation_impl(t); }
38 HomogeneousMatrixType toHomogeneousMatrix()
const 40 return derived().toHomogeneousMatrix_impl();
42 operator HomogeneousMatrixType()
const {
return toHomogeneousMatrix(); }
44 ActionMatrixType toActionMatrix()
const 46 return derived().toActionMatrix_impl();
48 operator ActionMatrixType()
const {
return toActionMatrix(); }
50 ActionMatrixType toDualActionMatrix()
const 51 {
return derived().toDualActionMatrix_impl(); }
53 void disp(std::ostream & os)
const 55 static_cast<const Derived*
>(
this)->disp_impl(os);
59 operator*(
const Derived & m2)
const 60 {
return derived().__mult__(m2); }
65 act(
const D & d)
const 67 return derived().act_impl(d);
74 return derived().actInv_impl(d);
77 bool operator==(
const Derived & other)
const 78 {
return derived().__equal__(other); }
80 bool operator!=(
const Derived & other)
const 81 {
return !(*
this == other); }
83 bool isApprox(
const Derived & other,
const Scalar & prec = Eigen::NumTraits<Scalar>::dummy_precision())
const 85 return derived().isApprox_impl(other, prec);
88 friend std::ostream & operator <<(std::ostream & os,const SE3Base<Derived> & X)
99 return derived().isIdentity(prec);
106 #endif // ifndef __pinocchio_se3_base_hpp__ internal::SE3GroupAction< D >::ReturnType act(const D &d) const
ay = aXb.act(by)
internal::SE3GroupAction< D >::ReturnType actInv(const D &d) const
by = aXb.actInv(ay)
Main pinocchio namespace.
Common traits structure to fully define base classes for CRTP.
bool isIdentity(const typename traits< Derived >::Scalar &prec=Eigen::NumTraits< typename traits< Derived >::Scalar >::dummy_precision()) const