00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef GRIPPER_CLICK_PLUGIN_H_
00031 #define GRIPPER_CLICK_PLUGIN_H_
00032
00033
00034 #include "pr2_gripper_click/GripperClickPickupAction.h"
00035 #include "pr2_gripper_click/GripperClickPlaceAction.h"
00036
00037
00038 namespace rviz {
00039 class VisualizationManager;
00040 }
00041
00042 namespace Ogre {
00043 class SceneNode;
00044 }
00045
00046 namespace pr2_gripper_click {
00047
00048
00049
00050
00051 template<class ActionClass>
00052 class GripperClickPlugin
00053 {
00054 public:
00055
00056 typedef typename ActionClass::_action_result_type::_result_type ResultType;
00057 typedef typename ActionClass::_action_goal_type::_goal_type GoalType;
00058
00059 GripperClickPlugin( std::string name ) :
00060 name_( name ),
00061 description_changed_(false) {}
00062
00063 virtual ~GripperClickPlugin(){}
00064
00065 std::string getName() { return name_; }
00066
00067
00068 void setDescription( const std::string &description ) {
00069 description_ = description;
00070 description_changed_ = true;
00071 }
00072
00073
00074
00075 virtual bool setGoal( const typename GoalType::ConstPtr &goal ) = 0;
00076
00077
00078 virtual void init( rviz::VisualizationManager *vis_manager, Ogre::SceneManager* scene_manager, Ogre::SceneNode* camera_node ) = 0;
00079
00080 virtual void update(float wall_dt, float ros_dt) = 0;
00081
00082
00083 virtual bool hasValidResult() = 0;
00084
00085
00086 virtual void show( ) = 0;
00087 virtual void hide( ) = 0;
00088
00089 virtual void onRenderWindowMouseEvents( wxMouseEvent& event, Ogre::Ray &mouse_ray ) = 0;
00090
00091
00092 virtual void getGripperParams( bool &visible, Ogre::Vector3 &position, Ogre::Quaternion &orientation, float &angle )
00093 {
00094 visible = false;
00095 }
00096
00097 virtual bool getResult(ResultType &result) = 0;
00098
00099 std::string& getDescription() { return description_; }
00100 bool descriptionChanged() { bool c=description_changed_; description_changed_=false; return c; }
00101
00102 private:
00103
00104 std::string name_;
00105
00106 std::string description_;
00107 bool description_changed_;
00108 };
00109
00110 }
00111
00112 #endif