// %Tag(Menu)% void makeMenuMarker() { InteractiveMarker int_marker; int_marker.header.frame_id = "/base_link"; int_marker.pose.position.y = -3.0 * marker_pos++;; int_marker.scale = 1; int_marker.name = "context_menu"; int_marker.description = "Context Menu\n(Right Click)"; InteractiveMarkerControl control; // make one control using default visuals control.interaction_mode = InteractiveMarkerControl::MENU; control.description="Options"; control.name = "menu_only_control"; int_marker.controls.push_back(control); // make one control showing a box Marker marker = makeBox( int_marker ); control.markers.push_back( marker ); control.always_visible = true; int_marker.controls.push_back(control); server->insert(int_marker); server->setCallback(int_marker.name, &processFeedback); menu_handler.apply( *server, int_marker.name ); }
void makeMenuMarker() { InteractiveMarker int_marker; int_marker.header.frame_id = "/base_link"; int_marker.pose.position.z = 2.5; int_marker.scale = 1; int_marker.name = "context_menu"; int_marker.description = "Vision Menu"; InteractiveMarkerControl control; control.interaction_mode = InteractiveMarkerControl::MENU; control.description = "Options"; control.name = "menu_only_control"; Marker marker; marker.type = Marker::SPHERE; marker.scale.x = 0.45; marker.scale.y = 0.45; marker.scale.z = 0.45; marker.color.r = 0.0; marker.color.g = 0.0; marker.color.b = 1.0; marker.color.a = 1.0; control.markers.push_back(marker); control.always_visible = true; int_marker.controls.push_back(control); server->insert(int_marker); menu_handler.apply(*server, int_marker.name); }
// %Tag(Menu)% void makeMenuMarker( const tf::Vector3& position ) { InteractiveMarker int_marker; int_marker.header.frame_id = "/l_foot"; tf::pointTFToMsg(position, int_marker.pose.position); int_marker.scale = 1; int_marker.name = "Command Menu"; int_marker.description = "Command Menu\n(Right Click)"; InteractiveMarkerControl control; control.interaction_mode = InteractiveMarkerControl::MENU; control.name = "menu_only_control"; Marker marker = makeManuBox(); control.markers.push_back( marker ); //control.always_visible = true; int_marker.controls.push_back(control); server->insert(int_marker); server->setCallback(int_marker.name, &processFeedback); menu_handler.apply( *server, int_marker.name ); }
// %Tag(6DOF)% void make6DofMarker( bool fixed, unsigned int interaction_mode, const tf::Vector3& position, bool show_6dof ) { InteractiveMarker int_marker; int_marker.header.frame_id = "base_link"; tf::pointTFToMsg(position, int_marker.pose.position); int_marker.scale = 1; int_marker.name = "simple_6dof"; int_marker.description = "Simple 6-DOF Control"; // insert a box makeBoxControl(int_marker); int_marker.controls[0].interaction_mode = interaction_mode; InteractiveMarkerControl control; if ( fixed ) { int_marker.name += "_fixed"; int_marker.description += "\n(fixed orientation)"; control.orientation_mode = InteractiveMarkerControl::FIXED; } if (interaction_mode != visualization_msgs::InteractiveMarkerControl::NONE) { std::string mode_text; if( interaction_mode == visualization_msgs::InteractiveMarkerControl::MOVE_3D ) mode_text = "MOVE_3D"; if( interaction_mode == visualization_msgs::InteractiveMarkerControl::ROTATE_3D ) mode_text = "ROTATE_3D"; if( interaction_mode == visualization_msgs::InteractiveMarkerControl::MOVE_ROTATE_3D ) mode_text = "MOVE_ROTATE_3D"; int_marker.name += "_" + mode_text; int_marker.description = std::string("3D Control") + (show_6dof ? " + 6-DOF controls" : "") + "\n" + mode_text; } if(show_6dof) { control.orientation.w = 1; control.orientation.x = 1; control.orientation.y = 0; control.orientation.z = 0; control.name = "rotate_x"; control.interaction_mode = InteractiveMarkerControl::ROTATE_AXIS; int_marker.controls.push_back(control); control.name = "move_x"; control.interaction_mode = InteractiveMarkerControl::MOVE_AXIS; int_marker.controls.push_back(control); control.orientation.w = 1; control.orientation.x = 0; control.orientation.y = 1; control.orientation.z = 0; control.name = "rotate_z"; control.interaction_mode = InteractiveMarkerControl::ROTATE_AXIS; int_marker.controls.push_back(control); control.name = "move_z"; control.interaction_mode = InteractiveMarkerControl::MOVE_AXIS; int_marker.controls.push_back(control); control.orientation.w = 1; control.orientation.x = 0; control.orientation.y = 0; control.orientation.z = 1; control.name = "rotate_y"; control.interaction_mode = InteractiveMarkerControl::ROTATE_AXIS; int_marker.controls.push_back(control); control.name = "move_y"; control.interaction_mode = InteractiveMarkerControl::MOVE_AXIS; int_marker.controls.push_back(control); } server->insert(int_marker); server->setCallback(int_marker.name, &processFeedback); if (interaction_mode != visualization_msgs::InteractiveMarkerControl::NONE) menu_handler.apply( *server, int_marker.name ); }