TargetPlugin.hh
Go to the documentation of this file.
1 
10 #ifndef _TARGET_PLUGIN_HH_
11 #define _TARGET_PLUGIN_HH_
12 
13 // Gazebo
14 #include "gazebo/common/Plugin.hh"
15 #include <gazebo/msgs/msgs.hh>
16 #include <gazebo/physics/physics.hh>
17 #include <gazebo/transport/transport.hh>
18 
19 // Custom messages
20 #include "target_request.pb.h"
21 #include "target_response.pb.h"
22 
23 namespace TargetPlugin {
24 
25  // Plugin messages
26 
28  #define REQUEST_TOPIC "~/grasp/target"
29  #define RESPONSE_TOPIC "~/grasp/target/response"
31 
33  #define REQ_GET_POSE grasp::msgs::TargetRequest::GET_POSE
34  #define REQ_SET_POSE grasp::msgs::TargetRequest::SET_POSE
36  #define REQ_GET_REST_POSE grasp::msgs::TargetRequest::GET_REST_POSE
38  #define REQ_RESET grasp::msgs::TargetRequest::RESET
40  #define RES_POSE grasp::msgs::TargetResponse::POSE
42  #define RES_REST_POSE grasp::msgs::TargetResponse::REST_POSE
44 
46  #define LIN_VEL_EPSILON 0.000001
47  #define ANG_VEL_EPSILON 0.00001
49 }
50 
51 namespace gazebo {
52 
56  typedef const boost::shared_ptr<const grasp::msgs::TargetRequest>
61  typedef const boost::shared_ptr<const grasp::msgs::TargetResponse>
63 
64  // Forward declaration of private data class
65  class TargetPluginPrivate;
66 
68  class TargetPlugin : public ModelPlugin
69  {
70  // Private attributes
71 
73  private: std::unique_ptr<TargetPluginPrivate> data_ptr;
75  private: physics::ModelPtr model;
77  private: event::ConnectionPtr update_connection;
79  private: event::ConnectionPtr reset_connection;
80 
82  private: bool get_pose {false};
84  private: bool set_pose {false};
86  private: bool update_rest_pose {false};
88  private: bool reset {false};
90  private: ignition::math::Pose3d init_pose;
92  private: ignition::math::Pose3d new_pose;
93 
94  // Public methods
95 
97  public: TargetPlugin();
98 
100  public: virtual ~TargetPlugin() override;
101 
105  public: virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf);
106 
108  public: void onUpdate();
109 
111  public: void onReset();
112 
115  public: void onRequest(TargetRequestPtr & _msg);
116 
117  };
118 }
119 
120 #endif
Definition: ContactSensorPlugin.cc:12
ignition::math::Pose3d new_pose
New pose.
Definition: TargetPlugin.hh:92
event::ConnectionPtr update_connection
Connection to world update event.
Definition: TargetPlugin.hh:77
Class for private Target plugin data.
Definition: TargetPlugin.cc:16
event::ConnectionPtr reset_connection
Connection to world reset event.
Definition: TargetPlugin.hh:79
grasp::msgs::TargetResponse TargetResponse
Declaration for response message type.
Definition: TargetPlugin.hh:59
std::unique_ptr< TargetPluginPrivate > data_ptr
Class with private attributes.
Definition: TargetPlugin.hh:73
grasp::msgs::TargetRequest TargetRequest
Declaration for request message type.
Definition: TargetPlugin.hh:54
physics::ModelPtr model
Model to which the plugin is attached.
Definition: TargetPlugin.hh:75
const boost::shared_ptr< const grasp::msgs::TargetResponse > TargetResponsePtr
Shared pointer declaration for response message type.
Definition: TargetPlugin.hh:62
ignition::math::Pose3d init_pose
Initial pose.
Definition: TargetPlugin.hh:90
const boost::shared_ptr< const grasp::msgs::TargetRequest > TargetRequestPtr
Shared pointer declaration for request message type.
Definition: TargetPlugin.hh:57
Definition: TargetPlugin.hh:23