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);
691 private:
static sdf::ElementPtr sdfJoint;
697 private: std::vector<std::string> sensors;
703 private:
double staticPosition;
ModelPtr model
Pointer to the parent model.
Definition: Joint.hh:637
boost::shared_ptr< Link > LinkPtr
Definition: PhysicsTypes.hh:109
Attribute
Joint attribute types.
Definition: Joint.hh:54
ignition::math::Pose3d parentAnchorPose
Anchor pose relative to parent link frame.
Definition: Joint.hh:651
Forward declarations for the common classes.
Definition: Animation.hh:26
virtual void Reset()
Reset the object.
LinkPtr anchorLink
Anchor link.
Definition: Joint.hh:654
Upper joint limit.
Definition: Joint.hh:84
ignition::math::Pose3d anchorPose
Anchor pose specified in SDF <joint><pose> tag.
Definition: Joint.hh:648
LinkPtr childLink
The first link this joint connects to.
Definition: Joint.hh:631
Maximum force.
Definition: Joint.hh:78
bool provideFeedback
Provide Feedback data for contact forces.
Definition: Joint.hh:694
event::ConnectionPtr ConnectJointUpdate(T _subscriber)
Connect a boost::slot the the joint update signal.
Definition: Joint.hh:213
LinkPtr parentLink
The second link this joint connects to.
Definition: Joint.hh:634
Suspension error reduction parameter.
Definition: Joint.hh:60
JointWrench wrench
Cache Joint force torque values in case physics engine clears them at the end of update step...
Definition: Joint.hh:682
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.
gazebo::event::ConnectionPtr applyDamping
apply damping for adding viscous damping forces on updates
Definition: Joint.hh:666
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
ignition::math::Vector3d anchorPos
Anchor pose.
Definition: Joint.hh:641