17 #ifndef GAZEBO_PHYSICS_JOINT_HH_ 18 #define GAZEBO_PHYSICS_JOINT_HH_ 23 #include <boost/any.hpp> 24 #include <ignition/math/Pose3.hh> 25 #include <ignition/math/Vector3.hh> 29 #include "gazebo/msgs/MessageTypes.hh" 39 #define MAX_JOINT_AXIS 2 95 public:
virtual ~
Joint();
102 const ignition::math::Pose3d &_pose);
106 public:
virtual void Load(sdf::ElementPtr _sdf);
109 public:
virtual void Init();
112 public:
virtual void Fini();
115 public:
void Update();
119 public:
virtual void UpdateParameters(sdf::ElementPtr _sdf);
122 public:
virtual void Reset();
127 public:
void SetState(
const JointState &_state);
131 public:
void SetModel(
ModelPtr _model);
138 public:
virtual LinkPtr GetJointLink(
unsigned int _index)
const = 0;
144 public:
virtual bool AreConnected(
LinkPtr _one,
LinkPtr _two)
const = 0;
152 public:
virtual void Detach();
159 public:
virtual void SetAxis(
const unsigned int _index,
160 const ignition::math::Vector3d &_axis) = 0;
166 public:
virtual void SetDamping(
unsigned int _index,
double _damping) = 0;
172 public:
double GetDamping(
unsigned int _index);
177 public:
virtual void ApplyStiffnessDamping();
185 public:
virtual void SetStiffnessDamping(
unsigned int _index,
186 double _stiffness,
double _damping,
double _reference = 0) = 0;
193 public:
virtual void SetStiffness(
unsigned int _index,
194 const double _stiffness) = 0;
201 public:
double GetStiffness(
unsigned int _index);
207 public:
double GetSpringReferencePosition(
unsigned int _index)
const;
212 public:
template<
typename T>
214 {
return jointUpdate.Connect(_subscriber);}
219 public: ignition::math::Vector3d LocalAxis(
const unsigned int _index)
225 public:
virtual ignition::math::Vector3d GlobalAxis(
226 unsigned int _index)
const = 0;
231 public:
virtual void SetAnchor(
const unsigned int _index,
232 const ignition::math::Vector3d &_anchor) = 0;
237 public:
virtual ignition::math::Vector3d Anchor(
238 const unsigned int _index)
const = 0;
243 public:
virtual double GetEffortLimit(
unsigned int _index);
248 public:
virtual void SetEffortLimit(
unsigned int _index,
double _effort);
253 public:
virtual double GetVelocityLimit(
unsigned int _index);
258 public:
virtual void SetVelocityLimit(
unsigned int _index,
268 public:
virtual void SetVelocity(
unsigned int _index,
double _vel) = 0;
273 public:
virtual double GetVelocity(
unsigned int _index)
const = 0;
283 public:
virtual void SetForce(
unsigned int _index,
double _effort) = 0;
290 public:
double CheckAndTruncateForce(
unsigned int _index,
double _effort);
298 public:
virtual double GetForce(
unsigned int _index);
322 public:
virtual JointWrench GetForceTorque(
unsigned int _index) = 0;
340 public:
virtual double Position(
const unsigned int _index = 0) const
345 public: virtual
unsigned int DOF() const = 0;
363 public: virtual
bool SetPosition(
364 const
unsigned int _index, const
double _position,
365 const
bool _preserveWorldVelocity = false);
377 protected:
bool SetPositionMaximal(
378 const
unsigned int _index,
double _position,
379 const
bool _preserveWorldVelocity = false);
388 protected:
bool SetVelocityMaximal(
unsigned int _index,
double _velocity);
396 public: virtual
ignition::math::Vector3d LinkForce(
397 const
unsigned int _index) const = 0;
405 public: virtual
ignition::math::Vector3d LinkTorque(
406 const
unsigned int _index) const = 0;
417 public: virtual
bool SetParam(const std::
string &_key,
419 const
boost::any &_value) = 0;
425 public: virtual
double GetParam(const std::
string &_key,
426 unsigned int _index);
430 public:
LinkPtr GetChild() const;
434 public:
LinkPtr GetParent() const;
438 public: msgs::
Joint::Type GetMsgType() const;
442 public: virtual
void FillMsg(msgs::
Joint &_msg);
451 public:
double GetInertiaRatio(const
unsigned int _index) const;
462 public:
double InertiaRatio(const
ignition::math::Vector3d &_axis) const;
468 public: virtual
double LowerLimit(
unsigned int _index = 0) const;
481 public: virtual
double UpperLimit(const
unsigned int _index = 0) const;
490 public: virtual
void SetLowerLimit(const
unsigned int _index,
491 const
double _limit);
500 public: virtual
void SetUpperLimit(const
unsigned int _index,
501 const
double _limit);
505 public: virtual
void SetProvideFeedback(
bool _enable);
508 public: virtual
void CacheForceTorque();
513 public:
void SetStopStiffness(
unsigned int _index,
double _stiffness);
518 public:
void SetStopDissipation(
unsigned int _index,
double _dissipation);
523 public:
double GetStopStiffness(
unsigned int _index) const;
528 public:
double GetStopDissipation(
unsigned int _index) const;
533 public:
ignition::math::Pose3d InitialAnchorPose() const;
539 public:
ignition::math::Pose3d WorldPose() const;
546 public:
ignition::math::Pose3d ParentWorldPose() const;
553 public:
ignition::math::Pose3d AnchorErrorPose() const;
560 public:
ignition::math::Quaterniond AxisFrame(
561 const
unsigned int _index) const;
575 public:
ignition::math::Quaterniond AxisFrameOffset(
576 const
unsigned int _index) const;
582 public:
double GetWorldEnergyPotentialSpring(
unsigned int _index) const;
591 protected: virtual
double PositionImpl(const
unsigned int _index = 0)
604 protected:
bool FindAllConnectedLinks(const
LinkPtr &_originalParentLink,
612 protected:
ignition::math::Pose3d ChildLinkPose(
613 const
unsigned int _index, const
double _position);
616 protected: virtual
void RegisterIntrospectionItems();
620 private:
void RegisterIntrospectionPosition(const
unsigned int _index);
624 private:
void RegisterIntrospectionVelocity(const
unsigned int _index);
628 private:
void LoadImpl(const
ignition::math::Pose3d &_pose);
651 protected:
ignition::math::Pose3d parentAnchorPose;
691 private: static sdf::ElementPtr sdfJoint;
694 protected:
bool provideFeedback;
697 private: std::vector<std::
string> sensors;
700 private: event::EventT<
void ()> jointUpdate;
703 private:
double staticPosition;
boost::shared_ptr< Link > LinkPtr
Definition: PhysicsTypes.hh:109
Attribute
Joint attribute types.
Definition: Joint.hh:54
Definition: JointMaker.hh:44
Forward declarations for the common classes.
Definition: Animation.hh:26
virtual void Reset()
Reset the object.
Upper joint limit.
Definition: Joint.hh:84
Maximum force.
Definition: Joint.hh:78
event::ConnectionPtr ConnectJointUpdate(T _subscriber)
Connect a boost::slot the the joint update signal.
Definition: Joint.hh:213
Suspension error reduction parameter.
Definition: Joint.hh:60
Base class for most physics classes.
Definition: Base.hh:77
#define MAX_JOINT_AXIS
maximum number of axis per joint anticipated.
Definition: Joint.hh:39
Constraint force mixing.
Definition: Joint.hh:75
Suspension constraint force mixing.
Definition: Joint.hh:63
keeps track of state of a physics::Joint
Definition: JointState.hh:42
Error reduction parameter.
Definition: Joint.hh:72
Fudge factor.
Definition: Joint.hh:57
boost::shared_ptr< Connection > ConnectionPtr
Definition: CommonTypes.hh:134
Base class for all joints.
Definition: Joint.hh:50
Velocity.
Definition: Joint.hh:81
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:93
Wrench information from a joint.
Definition: JointWrench.hh:40
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
Stop limit error reduction parameter.
Definition: Joint.hh:66
std::vector< LinkPtr > Link_V
Definition: PhysicsTypes.hh:225
boost::shared_ptr< Base > BasePtr
Definition: PhysicsTypes.hh:77
Stop limit constraint force mixing.
Definition: Joint.hh:69