17#ifndef GAZEBO_PHYSICS_MODEL_HH_
18#define GAZEBO_PHYSICS_MODEL_HH_
24#include <boost/function.hpp>
25#include <boost/thread/recursive_mutex.hpp>
36 class recursive_mutex;
70 public:
void Load(sdf::ElementPtr _sdf);
76 public:
virtual void Init();
82 public:
virtual void Fini();
90 public:
virtual const sdf::ElementPtr
GetSDF();
102 using Base::RemoveChild;
195 public:
LinkPtr GetLinkById(
unsigned int _id)
const;
233 public:
virtual void FillMsg(msgs::Model &_msg);
244 double _position,
int _index = 0);
250 const std::map<std::string, double> &_jointPositions);
257 const std::map<std::string, common::NumericAnimationPtr> &_anims,
258 boost::function<
void()> _onComplete =
NULL);
278 ignition::math::Pose3d _offset);
294 public:
void SetScale(
const ignition::math::Vector3d &_scale,
295 const bool _publish =
false);
301 public: ignition::math::Vector3d
Scale()
const;
314 std::string _linkName);
361 const std::string &_name)
const;
406 const std::string &_name,
const std::string &_type,
419 sdf::ElementPtr _sdf);
462 ignition::msgs::Plugin_V &_plugins,
bool &_success);
471 private:
void LoadLinks();
474 private:
void LoadModels();
478 private:
void LoadJoint(sdf::ElementPtr _sdf);
482 private:
void LoadPlugin(sdf::ElementPtr _sdf);
486 private:
void LoadGripper(sdf::ElementPtr _sdf);
491 private:
void RemoveLink(
const std::string &_name);
494 private:
virtual void PublishScale();
506 private:
LinkPtr canonicalLink;
518 private: std::vector<GripperPtr> grippers;
521 private: std::vector<ModelPluginPtr> plugins;
524 private: std::map<std::string, common::NumericAnimationPtr>
528 private: boost::function<void()> onJointAnimationComplete;
534 private:
mutable boost::recursive_mutex updateMutex;
537 private: std::mutex receiveMutex;
#define NULL
Definition CommonTypes.hh:31
default namespace for gazebo
Forward declarations for transport.
A complete URI.
Definition URI.hh:177
virtual void RemoveChild(unsigned int _id)
Remove a child from this entity.
Base class for all physics objects in Gazebo.
Definition Entity.hh:53
virtual void Reset()
Reset the entity.
Store state information of a physics::Model object.
Definition ModelState.hh:49
A model is a collection of links, joints, and plugins.
Definition Model.hh:60
void SetAngularVel(const ignition::math::Vector3d &_vel)
Set the angular velocity of the model, and all its links.
void SetScale(const ignition::math::Vector3d &_scale, const bool _publish=false)
Set the scale of model.
JointControllerPtr GetJointController()
Get a handle to the Controller for the joints in this model.
void DetachStaticModel(const std::string &_model)
Detach a static model from this model.
virtual gazebo::physics::JointPtr CreateJoint(sdf::ElementPtr _sdf)
Create a joint for this model.
virtual bool GetSelfCollide() const
If true, all links within the model will collide by default.
virtual ignition::math::Vector3d RelativeAngularVel() const
Get the angular velocity of the entity.
void SetLaserRetro(const float _retro)
Set the laser retro reflectiveness of the model.
std::vector< ignition::math::Pose3d > attachedModelsOffset
used by Model::AttachStaticModel
Definition Model.hh:500
virtual void SetWindMode(const bool _mode)
Set whether wind affects this body.
void PluginInfo(const common::URI &_pluginUri, ignition::msgs::Plugin_V &_plugins, bool &_success)
Get information about plugins in this model or one of its children, according to the given _pluginUri...
virtual void Fini()
Finalize the model.
void Reset()
Reset the model.
virtual void Init()
Initialize the model.
virtual void RemoveChild(EntityPtr _child)
Remove a child.
void SetAutoDisable(bool _disable)
Allow the model the auto disable.
void ResetPhysicsStates()
Reset the velocity, acceleration, force and torque of all child links.
const Link_V & GetLinks() const
Construct and return a vector of Link's in this model Note this constructs the vector of Link's on th...
const Model_V & NestedModels() const
Get all the nested models.
virtual const sdf::ElementPtr GetSDF()
Get the SDF values for the model.
unsigned int GetJointCount() const
Get the number of joints.
LinkPtr CreateLink(const std::string &_name)
Create a new link for this model.
void ProcessMsg(const msgs::Model &_msg)
Update parameters from a model message.
Model(BasePtr _parent)
Constructor.
virtual void RegisterIntrospectionItems()
Register items in the introspection service.
void SetJointAnimation(const std::map< std::string, common::NumericAnimationPtr > &_anims, boost::function< void()> _onComplete=NULL)
Joint Animation.
virtual ignition::math::Box BoundingBox() const
Get the size of the bounding box.
unsigned int GetSensorCount() const
Get the number of sensors attached to this model.
LinkPtr GetLink(const std::string &_name="canonical") const
Get a link by name.
double GetWorldEnergyKinetic() const
Returns sum of the kinetic energies of all links in this model.
virtual bool RemoveJoint(const std::string &_name)
Remove a joint for this model.
virtual ignition::math::Vector3d WorldAngularVel() const
Get the angular velocity of the entity in the world frame.
JointPtr GetJoint(const std::string &name)
Get a joint.
std::vector< std::string > SensorScopedName(const std::string &_name) const
Get scoped sensor name(s) in the model that matches sensor name.
virtual ignition::math::Vector3d RelativeLinearVel() const
Get the linear velocity of the entity.
void SetEnabled(bool _enabled)
Enable all the links in all the models.
virtual const sdf::ElementPtr UnscaledSDF()
virtual bool WindMode() const
Get the wind mode.
double GetWorldEnergy() const
Returns this model's total energy, or sum of Model::GetWorldEnergyPotential() and Model::GetWorldEner...
transport::PublisherPtr jointPub
Publisher for joint info.
Definition Model.hh:503
boost::shared_ptr< Model > shared_from_this()
Allow Model class to share itself as a boost shared_ptr.
void SetLinkWorldPose(const ignition::math::Pose3d &_pose, std::string _linkName)
Set the Pose of the entire Model by specifying desired Pose of a Link within the Model.
GripperPtr GetGripper(size_t _index) const
Get a gripper based on an index.
virtual ignition::math::Vector3d RelativeAngularAccel() const
Get the angular acceleration of the entity.
virtual void StopAnimation()
Stop the current animations.
void SetLinearVel(const ignition::math::Vector3d &_vel)
Set the linear velocity of the model, and all its links.
virtual ~Model()
Destructor.
double GetWorldEnergyPotential() const
Returns the potential energy of all links and joint springs in the model.
void SetState(const ModelState &_state)
Set the current model state.
virtual void SetSelfCollide(bool _self_collide)
Set this model's self_collide property.
virtual gazebo::physics::JointPtr CreateJoint(const std::string &_name, const std::string &_type, physics::LinkPtr _parent, physics::LinkPtr _child)
Create a joint for this model.
virtual ignition::math::Vector3d RelativeLinearAccel() const
Get the linear acceleration of the entity.
virtual void FillMsg(msgs::Model &_msg)
Fill a model message.
virtual ignition::math::Vector3d WorldLinearAccel() const
Get the linear acceleration of the entity in the world frame.
void SetJointPosition(const std::string &_jointName, double _position, int _index=0)
Set the positions of a Joint by name.
const Joint_V & GetJoints() const
Get the joints.
bool GetAutoDisable() const
Return the value of the SDF <allow_auto_disable> element.
void SetGravityMode(const bool &_value)
Set the gravity mode of the model.
size_t GetGripperCount() const
Get the number of grippers in this model.
void Load(sdf::ElementPtr _sdf)
Load the model.
void SetJointPositions(const std::map< std::string, double > &_jointPositions)
Set the positions of a set of joints.
std::vector< ModelPtr > attachedModels
used by Model::AttachStaticModel
Definition Model.hh:497
virtual void UpdateParameters(sdf::ElementPtr _sdf)
Update the parameters using new sdf values.
void AttachStaticModel(ModelPtr &_model, ignition::math::Pose3d _offset)
Attach a static model to this model.
ModelPtr NestedModel(const std::string &_name) const
Get a nested model that is a direct child of this model.
virtual void OnPoseChange()
Callback when the pose of the model has been changed.
ignition::math::Vector3d Scale() const
Get the scale of model.
virtual ignition::math::Vector3d WorldAngularAccel() const
Get the angular acceleration of the entity in the world frame.
void SetCollideMode(const std::string &_mode)
\TODO This is not implemented in Link, which means this function doesn't do anything.
void Update()
Update the model.
unsigned int GetPluginCount() const
Get the number of plugins this model has.
void LoadJoints()
Load all the joints.
virtual ignition::math::Vector3d WorldLinearVel() const
Get the linear velocity of the entity in the world frame.
void SetLinkWorldPose(const ignition::math::Pose3d &_pose, const LinkPtr &_link)
Set the Pose of the entire Model by specifying desired Pose of a Link within the Model.
void LoadPlugins()
Load all plugins.
Definition JointMaker.hh:45
std::vector< ModelPtr > Model_V
Definition PhysicsTypes.hh:205
boost::shared_ptr< JointController > JointControllerPtr
Definition PhysicsTypes.hh:121
boost::shared_ptr< Link > LinkPtr
Definition PhysicsTypes.hh:109
boost::shared_ptr< Gripper > GripperPtr
Definition PhysicsTypes.hh:197
boost::shared_ptr< Base > BasePtr
Definition PhysicsTypes.hh:77
std::vector< JointPtr > Joint_V
Definition PhysicsTypes.hh:213
boost::shared_ptr< Entity > EntityPtr
Definition PhysicsTypes.hh:85
std::vector< LinkPtr > Link_V
Definition PhysicsTypes.hh:225
boost::shared_ptr< Model > ModelPtr
Definition PhysicsTypes.hh:93
boost::shared_ptr< Joint > JointPtr
Definition PhysicsTypes.hh:117
boost::shared_ptr< Publisher > PublisherPtr
Definition TransportTypes.hh:49
Forward declarations for the common classes.
Definition Animation.hh:27