17 #ifndef _ODEPHYSICS_HH_ 18 #define _ODEPHYSICS_HH_ 21 #include <tbb/spin_mutex.h> 22 #include <tbb/concurrent_vector.h> 27 #include <boost/thread/thread.hpp> 34 #include "gazebo/gazebo_config.h" 41 class ODEJointFeedback;
42 class ODEPhysicsPrivate;
105 public:
virtual void Load(sdf::ElementPtr _sdf);
108 public:
virtual void Init();
111 public:
virtual void Reset();
114 public:
virtual void InitForThread();
117 public:
virtual void UpdateCollision();
120 public:
virtual void UpdatePhysics();
123 public:
virtual void Fini();
134 const std::string &_shapeType,
LinkPtr _parent);
137 public:
virtual ShapePtr CreateShape(
const std::string &_shapeType,
141 public:
virtual JointPtr CreateJoint(
const std::string &_type,
145 public:
virtual void SetGravity(
const ignition::math::Vector3d &_gravity);
148 public:
virtual void SetWorldCFM(
double cfm);
151 public:
virtual void SetWorldERP(
double erp);
154 public:
virtual void SetSORPGSPreconIters(
unsigned int iters);
157 public:
virtual void SetSORPGSIters(
unsigned int iters);
160 public:
virtual void SetSORPGSW(
double w);
163 public:
virtual void SetContactMaxCorrectingVel(
double vel);
166 public:
virtual void SetContactSurfaceLayer(
double layer_depth);
170 public:
virtual void SetFrictionModel(
const std::string &_fricModel);
175 SetWorldStepSolverType(
const std::string &_worldSolverType);
178 public:
virtual void SetMaxContacts(
unsigned int max_contacts);
181 public:
virtual double GetWorldCFM();
184 public:
virtual double GetWorldERP();
187 public:
virtual int GetSORPGSPreconIters();
190 public:
virtual int GetSORPGSIters();
193 public:
virtual double GetSORPGSW();
196 public:
virtual double GetContactMaxCorrectingVel();
200 public:
virtual std::string GetFrictionModel()
const;
204 public:
virtual std::string GetWorldStepSolverType()
const;
207 public:
virtual double GetContactSurfaceLayer();
210 public:
virtual unsigned int GetMaxContacts();
213 public:
virtual void DebugPrint()
const;
216 public:
virtual void SetSeed(uint32_t _seed);
219 public:
virtual bool SetParam(
const std::string &_key,
220 const boost::any &_value);
223 public:
virtual boost::any GetParam(
const std::string &_key)
const;
226 public:
virtual bool GetParam(
const std::string &_key,
227 boost::any &_value)
const;
231 public: dSpaceID GetSpaceId()
const;
235 public: dWorldID GetWorldId();
240 public:
static void ConvertMass(
InertialPtr _interial,
void *_odeMass);
246 public:
static void ConvertMass(
void *_odeMass,
InertialPtr _inertial);
252 public:
static Friction_Model
253 ConvertFrictionModel(
const std::string &_fricModel);
259 public:
static std::string
260 ConvertFrictionModel(
const Friction_Model _fricModel);
266 public:
static std::string
267 ConvertWorldStepSolverType(
const World_Solver_Type _solverType);
273 public:
static World_Solver_Type
274 ConvertWorldStepSolverType(
const std::string &_solverType);
278 public:
virtual std::string GetStepType()
const;
282 public:
virtual void SetStepType(
const std::string &_type);
290 dContactGeom *_contactCollisions);
294 public:
void ProcessJointFeedback(ODEJointFeedback *_feedback);
296 protected:
virtual void OnRequest(ConstRequestPtr &_msg);
298 protected:
virtual void OnPhysicsMsg(ConstPhysicsPtr &_msg);
304 private:
static void CollisionCallback(
void *_data, dGeomID _o1,
311 private:
void AddTrimeshCollider(
ODECollision *_collision1,
322 private: ODEPhysicsPrivate *dataPtr;
boost::shared_ptr< Link > LinkPtr
Definition: PhysicsTypes.hh:109
boost::shared_ptr< World > WorldPtr
Definition: PhysicsTypes.hh:89
Constraint force mixing.
Definition: ODEPhysics.hh:60
Forward declarations for the common classes.
Definition: Animation.hh:26
Minimum step size.
Definition: ODEPhysics.hh:84
Base class for all ODE collisions.
Definition: ODECollision.hh:40
Base class for a physics engine.
Definition: PhysicsEngine.hh:41
Limit ratios of inertias of adjacent links (note that the corresponding SDF tag is "use_dynamic_moi_r...
Definition: ODEPhysics.hh:88
virtual std::string GetType() const
Return the physics engine type (ode|bullet|dart|simbody).
Definition: ODEPhysics.hh:126
boost::shared_ptr< Joint > JointPtr
Definition: PhysicsTypes.hh:117
ODE physics engine.
Definition: ODEPhysics.hh:50
ODEParam
ODE Physics parameter types.
Definition: ODEPhysics.hh:54
Surface layer depth.
Definition: ODEPhysics.hh:78
SOR over-relaxation parameter.
Definition: ODEPhysics.hh:72
Error reduction parameter.
Definition: ODEPhysics.hh:63
friction model
Definition: ODEPhysics.hh:91
Number of iterations.
Definition: ODEPhysics.hh:66
boost::shared_ptr< Inertial > InertialPtr
Definition: PhysicsTypes.hh:157
Number of iterations.
Definition: ODEPhysics.hh:69
ODE wrapper forward declarations and typedefs.
boost::shared_ptr< Shape > ShapePtr
Definition: PhysicsTypes.hh:141
Max correcting velocity.
Definition: ODEPhysics.hh:75
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:93
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
Maximum number of contacts.
Definition: ODEPhysics.hh:81
boost::shared_ptr< Collision > CollisionPtr
Definition: PhysicsTypes.hh:113
Solve type.
Definition: ODEPhysics.hh:57