ODEHinge2Joint.hh
00001 /*
00002  * Copyright 2011 Nate Koenig & Andrew Howard
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  *
00016 */
00017 /* Desc: A hinge joint with 2 degrees of freedom
00018  * Author: Nate Keonig, Andrew Howard
00019  * Date: 21 May 2003
00020  * CVS: $Id: Hinge2Joint.hh 7129 2008-11-12 19:38:15Z natepak $
00021  */
00022 
00023 #ifndef ODEHINGE2JOINT_HH
00024 #define ODEHINGE2JOINT_HH
00025 
00026 #include "math/Angle.hh"
00027 #include "math/Vector3.hh"
00028 
00029 #include "physics/Hinge2Joint.hh"
00030 #include "physics/ode/ODEJoint.hh"
00031 
00032 namespace gazebo
00033 {
00034     namespace physics
00035   {
00036   
00039     
00042 
00043 
00045   class ODEHinge2Joint : public Hinge2Joint<ODEJoint>
00046   {
00048     public: ODEHinge2Joint(dWorldID worldId);
00049   
00051     public: virtual ~ODEHinge2Joint(); 
00052   
00054     protected: virtual void Load( sdf::ElementPtr &_sdf );
00055    
00057     public: virtual void SetAnchor( int index, const math::Vector3 &anchor );
00058   
00060     public: virtual void SetAxis( int index, const math::Vector3 &axis );
00061   
00063     public: virtual void SetDamping(int index, const double damping);
00064   
00066     public: virtual math::Vector3 GetAnchor(int index) const;
00067   
00069     public: virtual math::Vector3 GetGlobalAxis(int index) const;
00070   
00072     public: virtual math::Angle GetAngleImpl(int index) const;
00073   
00075     public: virtual double GetVelocity(int index) const;
00076   
00078     public: virtual void SetVelocity(int index, double angle);
00079   
00081     public: virtual void SetMaxForce(int index, double t);
00082   
00084     public: virtual double GetMaxForce(int index);
00085   
00087     public: virtual void SetForce(int index, double torque);
00088   
00090     public: virtual double GetParam( int parameter ) const;
00091   
00093     public: virtual void SetParam( int parameter, double value );
00094   };
00095   
00098   }
00099 }
00100 #endif
00101