10 #ifndef _HAND_PLUGIN_HH_ 11 #define _HAND_PLUGIN_HH_ 14 #include "gazebo/common/Plugin.hh" 15 #include <gazebo/msgs/msgs.hh> 16 #include <gazebo/physics/physics.hh> 17 #include <gazebo/transport/transport.hh> 23 #include <boost/algorithm/string/classification.hpp> 24 #include <boost/algorithm/string/split.hpp> 31 #define PARAM_NAME "name" 32 #define PARAM_TARGET "target" 34 #define PARAM_MULTIPLIER "multiplier" 36 #define PARAM_JOINT_GROUP "actuatedJoint" 38 #define PARAM_MIMIC_JOINT "mimicJoint" 40 #define PARAM_VIRTUAL_JOINTS "virtualJoints" 42 #define PARAM_CONTROLLERS "controllers" 44 #define PARAM_CTRL_REAL "real" 46 #define PARAM_CTRL_VIRTUAL "virtual" 48 #define PARAM_CTRL_TYPE "type" 50 #define PARAM_GRAVITY "gravity" 54 #define FORCE grasp::msgs::Target::FORCE 55 #define POSITION grasp::msgs::Target::POSITION 57 #define VELOCITY grasp::msgs::Target::VELOCITY 63 #define REQUEST_TOPIC "~/hand" 64 #define RESPONSE_TOPIC "~/hand/response" 73 typedef const boost::shared_ptr<const grasp::msgs::Hand>
90 private: std::unique_ptr<HandPluginPrivate>
data_ptr;
92 private: physics::ModelPtr
model;
94 private: physics::WorldPtr
world;
106 private:
bool timer_active {
false};
111 private:
const common::Time routine_timestep {0.02};
113 private:
bool routine_active {
false};
120 private: ignition::math::Pose3d init_pose {0,0,1,0,0,0};
122 private:
bool recv_msg {
false};
124 private: boost::shared_ptr<HandMsg const>
msg_req;
139 public:
virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf);
142 public:
void onUpdate();
145 public:
void onReset();
154 private:
bool loadMimicJoints(sdf::ElementPtr _sdf,
JointGroup & joint);
159 private:
bool loadJointGroups(sdf::ElementPtr _sdf);
164 private:
bool loadVirtualJoints(sdf::ElementPtr _sdf);
169 private:
bool loadControllers(sdf::ElementPtr _sdf);
172 private:
void imobilise();
175 private:
void resetJoints();
183 private:
void setupTimer(
184 common::Time & timeout,
186 const common::Time & duration);
197 private:
void setPose(
const ignition::math::Pose3d & pose);
208 private:
void updateForces();
211 private:
void setPIDController(
212 physics::JointControllerPtr controller,
214 physics::JointPtr joint,
215 double p,
double i,
double d,
216 double initial_value);
223 private:
void setPIDTarget(
225 physics::JointPtr joint,
231 private:
void updatePIDTargets(
HandMsgPtr & _msg);
238 private:
void sendTimeout();
241 private:
void resetWorld();
grasp::msgs::Hand HandMsg
Declaration for hand message type.
Definition: run_trials.hh:108
Definition: ContactSensorPlugin.cc:12
const boost::shared_ptr< const grasp::msgs::Hand > HandMsgPtr
Shared pointer declaration for hand message type.
Definition: run_trials.hh:111
const boost::shared_ptr< const grasp::msgs::Hand > HandMsgPtr
Shared pointer declaration for request message type.
Definition: HandPlugin.hh:74
boost::shared_ptr< HandMsg const > msg_req
Last received request message.
Definition: HandPlugin.hh:124
common::Time timeout
Next timeout.
Definition: HandPlugin.hh:108
void setPose(gazebo::transport::PublisherPtr pub, ignition::math::Pose3d pose, double timeout=-1)
Sets hand pose.
Class for joint and respective mimics data.
Definition: HandPlugin.cc:15
physics::ModelPtr model
Model to which the plugin is attached.
Definition: HandPlugin.hh:92
event::ConnectionPtr update_connection
Connection to world update event.
Definition: HandPlugin.hh:96
event::ConnectionPtr reset_connection
Connection to world reset event.
Definition: HandPlugin.hh:98
std::unique_ptr< HandPluginPrivate > data_ptr
Class with private attributes.
Definition: HandPlugin.hh:90
std::vector< JointForcePair > joint_force_pairs
Array of finger joints.
Definition: HandPlugin.hh:117
common::Time routine_timeout
Next routine timeout.
Definition: HandPlugin.hh:115
Definition: HandPlugin.hh:26
Class for joints under periodic force.
Definition: HandPlugin.cc:34
Class for private hand plugin data.
Definition: HandPlugin.cc:48
physics::WorldPtr world
World in which the model exists.
Definition: HandPlugin.hh:94
std::vector< JointGroup > joint_groups
Array of finger joints.
Definition: HandPlugin.hh:101
std::vector< physics::JointPtr > virtual_joints
Array of virtual x y z r p y joint pointers.
Definition: HandPlugin.hh:103