Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KDL_RIGIDBODYINERTIA_HPP
00023 #define KDL_RIGIDBODYINERTIA_HPP
00024
00025 #include "frames.hpp"
00026
00027 #include "rotationalinertia.hpp"
00028
00029 namespace KDL {
00030
00037 class RigidBodyInertia{
00038 public:
00039
00044 explicit RigidBodyInertia(double m=0, const Vector& oc=Vector::Zero(), const RotationalInertia& Ic=RotationalInertia::Zero());
00045
00049 static inline RigidBodyInertia Zero(){
00050 return RigidBodyInertia(0.0,Vector::Zero(),RotationalInertia::Zero());
00051 };
00052
00053
00054 ~RigidBodyInertia(){};
00055
00056 friend RigidBodyInertia operator*(double a,const RigidBodyInertia& I);
00057 friend RigidBodyInertia operator+(const RigidBodyInertia& Ia,const RigidBodyInertia& Ib);
00058 friend Wrench operator*(const RigidBodyInertia& I,const Twist& t);
00059 friend RigidBodyInertia operator*(const Frame& T,const RigidBodyInertia& I);
00060 friend RigidBodyInertia operator*(const Rotation& R,const RigidBodyInertia& I);
00061
00066 RigidBodyInertia RefPoint(const Vector& p);
00067
00071 double getMass() const{
00072 return m;
00073 };
00074
00078 Vector getCOG() const{
00079 if(m==0) return Vector::Zero();
00080 else return h/m;
00081 };
00082
00086 RotationalInertia getRotationalInertia() const{
00087 return I;
00088 };
00089
00090 private:
00091 RigidBodyInertia(double m,const Vector& h,const RotationalInertia& I,bool mhi);
00092 double m;
00093 Vector h;
00094 RotationalInertia I;
00095
00096 friend class ArticulatedBodyInertia;
00097
00098 };
00099
00103 RigidBodyInertia operator*(double a,const RigidBodyInertia& I);
00109 RigidBodyInertia operator+(const RigidBodyInertia& Ia,const RigidBodyInertia& Ib);
00110
00115 Wrench operator*(const RigidBodyInertia& I,const Twist& t);
00116
00120 RigidBodyInertia operator*(const Frame& T,const RigidBodyInertia& I);
00125 RigidBodyInertia operator*(const Rotation& R,const RigidBodyInertia& I);
00126
00127
00128
00129 }
00130
00131
00132 #endif