rigidbodyinertia.hpp
Go to the documentation of this file.
00001 // Copyright  (C)  2009  Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00002 
00003 // Version: 1.0
00004 // Author: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00005 // Maintainer: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00006 // URL: http://www.orocos.org/kdl
00007 
00008 // This library is free software; you can redistribute it and/or
00009 // modify it under the terms of the GNU Lesser General Public
00010 // License as published by the Free Software Foundation; either
00011 // version 2.1 of the License, or (at your option) any later version.
00012 
00013 // This library is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016 // Lesser General Public License for more details.
00017 
00018 // You should have received a copy of the GNU Lesser General Public
00019 // License along with this library; if not, write to the Free Software
00020 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
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 }//namespace
00130 
00131 
00132 #endif


orocos_kdl
Author(s):
autogenerated on Mon Oct 6 2014 03:11:17