ODEHingeJoint.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 body that has a box shape 00018 * Author: Nate Keonig, Andrew Howard 00019 * Date: 21 May 2003 00020 */ 00021 00022 #ifndef ODEHINGEJOINT_HH 00023 #define ODEHINGEJOINT_HH 00024 00025 #include "math/Angle.hh" 00026 #include "math/Vector3.hh" 00027 00028 #include "physics/HingeJoint.hh" 00029 #include "physics/ode/ODEJoint.hh" 00030 00031 namespace gazebo 00032 { 00033 namespace physics 00034 { 00037 00040 00042 class ODEHingeJoint : public HingeJoint<ODEJoint> 00043 { 00045 public: ODEHingeJoint(dWorldID worldId); 00046 00048 public: virtual ~ODEHingeJoint(); 00049 00051 protected: virtual void Load( sdf::ElementPtr &_sdf ); 00052 00054 public: virtual math::Vector3 GetAnchor(int index) const; 00055 00057 public: virtual void SetAnchor(int index, const math::Vector3 &anchor); 00058 00060 public: virtual math::Vector3 GetGlobalAxis(int index) const; 00061 00063 public: virtual void SetAxis(int index, const math::Vector3 &axis); 00064 00066 public: virtual void SetDamping( int index, const double damping ); 00067 00069 public: void ApplyDamping(); 00070 00072 public: virtual math::Angle GetAngleImpl(int index) const; 00073 00075 public: virtual void SetVelocity(int index, double angle); 00076 00078 public: virtual double GetVelocity(int index) const; 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 private: event::ConnectionPtr jointUpdateConnection; 00096 }; 00097 00100 00101 } 00102 } 00103 #endif 00104

1.7.5.1