6 #ifndef __pinocchio_motion_base_hpp__ 7 #define __pinocchio_motion_base_hpp__ 12 template<
class Derived>
16 MOTION_TYPEDEF_TPL(Derived);
18 Derived & derived() {
return *
static_cast<Derived*
>(
this); }
19 const Derived & derived()
const {
return *
static_cast<const Derived*
>(
this); }
21 ConstAngularType angular()
const {
return derived().angular_impl(); }
22 ConstLinearType linear()
const {
return derived().linear_impl(); }
23 AngularType angular() {
return derived().angular_impl(); }
24 LinearType linear() {
return derived().linear_impl(); }
26 template<
typename V3Like>
27 void angular(
const Eigen::MatrixBase<V3Like> & w)
28 { derived().angular_impl(w.derived()); }
30 template<
typename V3Like>
31 void linear(
const Eigen::MatrixBase<V3Like> & v)
32 { derived().linear_impl(v.derived()); }
34 operator PlainReturnType()
const {
return derived().plain(); }
35 PlainReturnType plain()
const {
return derived().plain(); }
37 ToVectorConstReturnType toVector()
const {
return derived().toVector_impl(); }
38 ToVectorReturnType toVector() {
return derived().toVector_impl(); }
39 operator Vector6()
const {
return toVector(); }
41 ActionMatrixType toActionMatrix()
const {
return derived().toActionMatrix_impl(); }
42 ActionMatrixType toDualActionMatrix()
const {
return derived().toDualActionMatrix_impl(); }
43 operator Matrix6()
const {
return toActionMatrix(); }
45 void setZero() { derived().setZero(); }
48 bool operator==(
const MotionBase<M2> & other)
const 49 {
return derived().isEqual_impl(other.derived()); }
52 bool operator!=(
const MotionBase<M2> & other)
const 53 {
return !(derived() == other.derived()); }
55 Derived operator-()
const {
return derived().__opposite__(); }
56 Derived operator+(
const MotionBase<Derived> & v)
const {
return derived().__plus__(v.derived()); }
57 Derived operator-(
const MotionBase<Derived> & v)
const {
return derived().__minus__(v.derived()); }
58 Derived & operator+=(
const MotionBase<Derived> & v) {
return derived().__pequ__(v.derived()); }
59 Derived & operator-=(
const MotionBase<Derived> & v) {
return derived().__mequ__(v.derived()); }
61 template<
typename OtherScalar>
62 typename internal::RHSScalarMultiplication<Derived,OtherScalar>::ReturnType
63 operator*(
const OtherScalar & alpha)
const 64 {
return derived().__mult__(alpha); }
66 template<
typename OtherScalar>
67 Derived operator/(
const OtherScalar & alpha)
const 68 {
return derived().__div__(alpha); }
70 template<
typename OtherSpatialType>
71 typename MotionAlgebraAction<OtherSpatialType,Derived>::ReturnType
72 cross(
const OtherSpatialType & d)
const 74 return derived().cross_impl(d);
77 bool isApprox(
const Derived & other,
const Scalar & prec = Eigen::NumTraits<Scalar>::dummy_precision())
const 78 {
return derived().isApprox_impl(other, prec);}
80 bool isZero(
const Scalar & prec = Eigen::NumTraits<Scalar>::dummy_precision())
const 81 {
return derived().isZero_impl(prec);}
83 template<
typename S2,
int O2>
84 typename SE3GroupAction<Derived>::ReturnType
85 se3Action(
const SE3Tpl<S2,O2> & m)
const 86 {
return derived().se3Action_impl(m); }
88 template<
typename S2,
int O2>
89 typename SE3GroupAction<Derived>::ReturnType
90 se3ActionInverse(
const SE3Tpl<S2,O2> & m)
const 91 {
return derived().se3ActionInverse_impl(m); }
93 template<
typename ForceDerived>
94 Scalar dot(
const ForceDense<ForceDerived> & f)
const {
return derived().dot(f.derived()); }
96 void disp(std::ostream & os)
const { derived().disp_impl(os); }
97 friend std::ostream & operator << (std::ostream & os, const MotionBase<Derived> & v)
105 template<
typename MotionDerived>
106 typename internal::RHSScalarMultiplication<MotionDerived,typename MotionDerived::Scalar>::ReturnType
107 operator*(
const typename MotionDerived::Scalar & alpha,
108 const MotionBase<MotionDerived> &
motion)
115 #endif // ifndef __pinocchio_motion_base_hpp__ MotionTpl< Scalar, Options > motion(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointMotionVisitor to get the joint internal motion as a dense motion...
Main pinocchio namespace.