Go to the documentation of this file.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