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_LINE
00031 #define GRIPPER_CLICK_LINE
00032
00033 #include "pr2_gripper_click/gripper_click_rviz_ui.h"
00034
00035 namespace Ogre {
00036 class ManualObject;
00037 }
00038
00039 namespace pr2_gripper_click {
00040
00041 class GripperClickLine : public GripperClickPlugin<GripperClickPickupAction>
00042 {
00043
00044 public:
00045 GripperClickLine();
00046
00047
00048 virtual void init( rviz::VisualizationManager *vis_manager, Ogre::SceneManager* scene_manager, Ogre::SceneNode* camera_node );
00049
00050 virtual bool setGoal( const GripperClickPickupGoal::ConstPtr &goal );
00051
00052 virtual bool getResult(GripperClickPickupResult &result);
00053
00054 virtual void update(float wall_dt, float ros_dt);
00055
00056
00057 virtual bool hasValidResult();
00058
00059
00060 virtual void show( );
00061 virtual void hide( );
00062
00063 virtual void getGripperParams( bool &visible, Ogre::Vector3 &position, Ogre::Quaternion &orientation, float &angle );
00064
00065 virtual void onRenderWindowMouseEvents( wxMouseEvent& event, Ogre::Ray &mouse_ray );
00066
00067 protected:
00068
00069 struct ClickInfo
00070 {
00071 bool lbutton_down_, valid_;
00072 int down_x_, down_y_, up_x_, up_y_;
00073 };
00074
00075 ClickInfo click_info_;
00076
00077 float gripper_angle_;
00078 float gripper_roll_;
00079 float gripper_approach_;
00080
00081 btTransform gripper_transform_;
00082
00083 bool computeTransform();
00084
00085 stereo_msgs::DisparityImage disparity_image_;
00086 sensor_msgs::CameraInfo camera_info_;
00087
00088 Ogre::ManualObject* line_object_;
00089 };
00090
00091 }
00092
00093 #endif