interactive_marker_interface.h
Go to the documentation of this file.
1 #include <ros/ros.h>
2 
3 #include <tf/tf.h>
4 //#include <tf/transform_listener.h>
6 
8 
10 #include <jsk_interactive_marker/SetPose.h>
11 #include <jsk_interactive_marker/MarkerSetPose.h>
12 
13 #include <math.h>
14 #include <jsk_interactive_marker/MarkerMenu.h>
15 #include <jsk_interactive_marker/MarkerPose.h>
16 
17 #include <std_msgs/Int8.h>
18 #include "urdf_parser/urdf_parser.h"
19 #if ROS_VERSION_MINIMUM(1,12,0) // kinetic
20 #include <urdf_world/types.h>
21 #else
22 namespace urdf {
24 }
25 #endif
26 
28  private:
29  struct MeshProperty{
30  std::string link_name;
31  std::string mesh_file;
32  geometry_msgs::Point position;
33  geometry_msgs::Quaternion orientation;
34 
35  };
36 
37  struct UrdfProperty{
39  std::string root_link_name;
40  geometry_msgs::Pose pose;
41  double scale;
42  std_msgs::ColorRGBA color;
44  };
45 
46  public:
47  visualization_msgs::InteractiveMarker make6DofControlMarker( std::string name, geometry_msgs::PoseStamped &stamped, float scale, bool fixed_position, bool fixed_rotation);
48 
49  void proc_feedback( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
50  void proc_feedback( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, int type );
51  void pub_marker_tf ( std_msgs::Header header, geometry_msgs::Pose pose);
52  void pub_marker_pose ( std_msgs::Header header, geometry_msgs::Pose pose, std::string name, int type );
53 
54  void pub_marker_menu(std::string marker,int menu, int type);
55  void pub_marker_menu(std::string marker,int menu);
56 
57  void pub_marker_menuCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, int menu );
58 
59  void pub_marker_menuCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, int menu, int type);
60 
61  void IMSizeLargeCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
62 
63  void IMSizeMiddleCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
64 
65  void IMSizeSmallCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
66 
67  void changeMoveModeCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
68 
69  void changeMoveModeCb1( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
70 
71  void changeMoveModeCb2( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
72 
73  void changeForceModeCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
74 
75  void changeForceModeCb1( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
76 
77  void changeForceModeCb2( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
78 
79 
80  void targetPointMenuCB( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
81 
82  void lookAutomaticallyMenuCB( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
83 
84  void ConstraintCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
85 
86  void modeCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
87 
88  void changeMoveArm( std::string m_name, int menu );
89 
90  void setOriginCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, bool origin_hand);
91 
92  void ikmodeCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
93  void toggleIKModeCb( const std_msgs::EmptyConstPtr &msg);
94  void useTorsoCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
95 
96  void usingIKCb( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
97 
98  void marker_menu_cb( const jsk_interactive_marker::MarkerMenuConstPtr &msg);
99 
100  void updateHeadGoal( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback);
101  void updateBase( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback);
102  void updateFinger( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, std::string hand);
103 
104  visualization_msgs::InteractiveMarker makeBaseMarker( const char *name, const geometry_msgs::PoseStamped &stamped, float scale, bool fixed);
105 
106 
107 
108  void changeMarkerForceMode( std::string mk_name , int im_mode);
109 
110  void toggleStartIKCb( const std_msgs::EmptyConstPtr &msg);
111 
112  void initControlMarkers(void);
113 
114  void initBodyMarkers(void);
115 
116  void initHandler(void);
117 
118  void changeMarkerMoveMode( std::string mk_name , int im_mode);
119 
120  void changeMarkerMoveMode( std::string mk_name , int im_mode, float mk_size);
121 
122  void changeMarkerMoveMode( std::string mk_name , int im_mode, float mk_size, geometry_msgs::PoseStamped dist_pose);
123 
124  void changeMarkerOperationModelMode( std::string mk_name );
125 
126  //void addHandMarker(visualization_msgs::InteractiveMarkerControl &imc,std::vector < MeshProperty > mesh_vec, double mk_size);
127  void addHandMarker(visualization_msgs::InteractiveMarker &im,std::vector < UrdfProperty > urdf_vec);
128  void addSphereMarker(visualization_msgs::InteractiveMarker &im, double scale, std_msgs::ColorRGBA color);
129  void makeCenterSphere(visualization_msgs::InteractiveMarker &mk, double mk_size);
130 
132 
133  bool markers_set_cb ( jsk_interactive_marker::MarkerSetPose::Request &req,
134  jsk_interactive_marker::MarkerSetPose::Response &res );
135 
136  bool markers_del_cb ( jsk_interactive_marker::MarkerSetPose::Request &req,
137  jsk_interactive_marker::MarkerSetPose::Response &res );
138 
139  void move_marker_cb ( const geometry_msgs::PoseStampedConstPtr &msg);
140 
141  bool set_cb ( jsk_interactive_marker::MarkerSetPose::Request &req,
142  jsk_interactive_marker::MarkerSetPose::Response &res );
143 
144  bool reset_cb ( jsk_interactive_marker::SetPose::Request &req,
145  jsk_interactive_marker::SetPose::Response &res );
146 
147  void loadMeshFromYaml(XmlRpc::XmlRpcValue val, std::string name, std::vector<MeshProperty>& mesh);
148  void loadUrdfFromYaml(XmlRpc::XmlRpcValue val, std::string name, std::vector<UrdfProperty>& mesh);
149  void loadMeshes(XmlRpc::XmlRpcValue val);
150 
151  void makeIMVisible(visualization_msgs::InteractiveMarker &im);
152 
153  private:
154 
157  std::shared_ptr<interactive_markers::InteractiveMarkerServer> server_;
169  //tf::TransformListener tfl_;
172 
182 
186 
188 
192 
193  // parameters
194  std::string marker_name;
195  std::string server_name;
196  std::string base_frame;
197  std::string move_base_frame;
198  std::string target_frame;
203 
206 
211 
212 
215 
219  int use_arm;
220 
221 
222 
223  std::list<visualization_msgs::InteractiveMarker> imlist;
224  //interactive_markers::MenuHandler menu_handler;
225 
226  struct GripperState{
227  GripperState() : on_(false), view_facing_(false), edit_control_(false), torso_frame_(false) {}
228 
229  bool on_;
233  };
234 
235  struct ControlState{
236  ControlState() : posture_r_(false), posture_l_(false), torso_on_(false), head_on_(false),
237  projector_on_(false), init_head_goal_(false), base_on_(true), r_finger_on_(false), l_finger_on_(false), move_arm_(RARM), move_origin_state_(HAND_ORIGIN) {}
238 
239  void print()
240  {
241  ROS_DEBUG_NAMED("control_state", "gripper: on[%d|%d][%d], edit[%d|%d][%d], torso[%d|%d]",
242  l_gripper_.on_, r_gripper_.on_, dual_grippers_.on_, l_gripper_.edit_control_, r_gripper_.edit_control_, dual_grippers_.edit_control_, l_gripper_.torso_frame_, r_gripper_.torso_frame_);
243  ROS_DEBUG_NAMED("control_state", "posture[%d|%d] torso[%d] base[%d] head[%d] projector[%d]",
244  posture_l_, posture_r_, torso_on_, base_on_, head_on_, projector_on_ );
245  }
246 
247  enum MoveArmState { RARM, LARM, ARMS};
248  enum MoveOriginState { HAND_ORIGIN, DESIGNATED_ORIGIN};
249 
252 
253  geometry_msgs::PoseStamped marker_pose_;
254 
257  bool torso_on_;
258  bool head_on_;
262  bool base_on_;
269  };
270 
274 
275 
277 
278  geometry_msgs::PoseStamped head_goal_pose_;
279 
280  std::string hand_type_;
281 
282  std::string head_link_frame_;
283  std::string head_mesh_;
284  std::vector< MeshProperty > rhand_mesh_, lhand_mesh_;
285  std::vector< UrdfProperty > rhand_urdf_, lhand_urdf_;
286 
287 };
288 
interactive_markers::MenuHandler menu_handler
interactive_markers::MenuHandler menu_head_
interactive_markers::MenuHandler::EntryHandle start_ik_menu_
interactive_markers::MenuHandler menu_handler_force
interactive_markers::MenuHandler menu_handler1
interactive_markers::MenuHandler::EntryHandle stop_ik_menu_
geometry_msgs::PoseStamped head_goal_pose_
std::vector< UrdfProperty > rhand_urdf_
interactive_markers::MenuHandler::EntryHandle use_torso_t_menu_
interactive_markers::MenuHandler::EntryHandle h_mode_last3
interactive_markers::MenuHandler::EntryHandle sub_menu_handle2
interactive_markers::MenuHandler::EntryHandle head_auto_look_handle_
interactive_markers::MenuHandler menu_base_
visualization_msgs::InteractiveMarker makeBaseMarker(const char *name, const geometry_msgs::PoseStamped &stamped, float scale, bool fixed)
interactive_markers::MenuHandler::EntryHandle h_mode_last
interactive_markers::MenuHandler menu_handler_force2
#define ROS_DEBUG_NAMED(name,...)
interactive_markers::MenuHandler menu_finger_r_
interactive_markers::MenuHandler menu_head_target_
interactive_markers::MenuHandler::EntryHandle sub_menu_handle
boost::shared_ptr< ModelInterface > ModelInterfaceSharedPtr
interactive_markers::MenuHandler::EntryHandle use_fullbody_menu_
std::list< visualization_msgs::InteractiveMarker > imlist
std::vector< MeshProperty > rhand_mesh_
interactive_markers::MenuHandler::EntryHandle rotation_nil_menu_
interactive_markers::MenuHandler::EntryHandle sub_menu_handle_ik
interactive_markers::MenuHandler menu_handler2
std::shared_ptr< interactive_markers::InteractiveMarkerServer > server_
interactive_markers::MenuHandler::EntryHandle use_torso_menu_
interactive_markers::MenuHandler::EntryHandle head_target_handle_
interactive_markers::MenuHandler menu_handler_force1
interactive_markers::MenuHandler menu_finger_l_
interactive_markers::MenuHandler::EntryHandle rotation_t_menu_
interactive_markers::MenuHandler::EntryHandle h_mode_last2
interactive_markers::MenuHandler::EntryHandle use_torso_nil_menu_


jsk_interactive_marker
Author(s): furuta
autogenerated on Sat Mar 20 2021 03:03:33