Skip to content

Commit fe254a3

Browse files
author
David Gossow
committed
adapted to most recent interactive m. server interface change (r36970)
1 parent 02ed353 commit fe254a3

3 files changed

Lines changed: 28 additions & 43 deletions

File tree

interactive_marker_tutorials/src/basic_controls.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
using namespace visualization_msgs;
4141

42-
interactive_markers::InteractiveMarkerServer *server;
42+
boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server;
4343
float marker_pos = 0;
4444

4545

@@ -170,7 +170,8 @@ InteractiveMarker makeEmptyMarker( bool dummyBox=true )
170170

171171
void saveMarker( InteractiveMarker int_marker )
172172
{
173-
server->insert(int_marker, &processFeedback);
173+
server->insert(int_marker);
174+
server->setCallback(int_marker.name, &processFeedback);
174175
#if 0
175176
//make a non-frame aligned copy
176177
int_marker.pose.position.x += 5.0;
@@ -333,7 +334,8 @@ void makeChessPieceMarker( )
333334
int_marker.controls.push_back(control);
334335

335336
// we want to use our special callback function
336-
server->insert(int_marker, &alignMarker);
337+
server->insert(int_marker);
338+
server->setCallback(int_marker.name, &alignMarker);
337339
}
338340

339341
void makePanTiltMarker( )
@@ -465,7 +467,7 @@ int main(int argc, char** argv)
465467
// create a timer to update the published transforms
466468
ros::Timer frame_timer = n.createTimer(ros::Duration(0.01), frameCallback);
467469

468-
server = new interactive_markers::InteractiveMarkerServer("basic_controls");
470+
server.reset( new interactive_markers::InteractiveMarkerServer("basic_controls","",false) );
469471

470472
ros::Duration(0.1).sleep();
471473

@@ -483,4 +485,6 @@ int main(int argc, char** argv)
483485
server->publishUpdate();
484486

485487
ros::spin();
488+
489+
server.reset();
486490
}

interactive_marker_tutorials/src/cube.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939

4040
using namespace visualization_msgs;
4141

42-
interactive_markers::InteractiveMarkerServer *server;
43-
42+
boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server;
4443

4544
std::vector< btVector3 > positions;
4645

@@ -132,7 +131,8 @@ void makeCube( )
132131

133132
makeBoxControl(int_marker);
134133

135-
server->insert( int_marker, &processFeedback );
134+
server->insert( int_marker );
135+
server->setCallback( int_marker.name, &processFeedback );
136136

137137
count++;
138138
}
@@ -144,8 +144,7 @@ int main(int argc, char** argv)
144144
{
145145
ros::init(argc, argv, "cube");
146146

147-
148-
server = new interactive_markers::InteractiveMarkerServer("cube");
147+
server.reset( new interactive_markers::InteractiveMarkerServer("cube") );
149148

150149
ros::Duration(0.1).sleep();
151150

@@ -155,4 +154,6 @@ int main(int argc, char** argv)
155154
ROS_INFO("ready.");
156155

157156
ros::spin();
157+
158+
server.reset();
158159
}

interactive_marker_tutorials/src/pong.cpp

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -160,29 +160,16 @@ class PongGame
160160
server_.publishUpdate();
161161
}
162162

163-
void processPaddleFeedback( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback )
163+
void processPaddleFeedback( unsigned player, const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback )
164164
{
165-
boost::mutex::scoped_lock lock;
166-
std::string control_marker_name = feedback->marker_name;
167-
168-
int player;
169-
std::string display_marker_name;
170-
171-
if ( control_marker_name == "player_1_control" )
172-
{
173-
player = 0;
174-
display_marker_name = "player_1_display";
175-
}
176-
else if ( control_marker_name == "player_2_control" )
177-
{
178-
player = 1;
179-
display_marker_name = "player_2_display";
180-
}
181-
else
165+
if ( player > 1 )
182166
{
183167
return;
184168
}
185169

170+
boost::mutex::scoped_lock lock;
171+
std::string control_marker_name = feedback->marker_name;
172+
186173
geometry_msgs::Pose pose = feedback->pose;
187174

188175
// clamp position
@@ -201,16 +188,7 @@ class PongGame
201188
player_contexts_[player].active = feedback->dragging;
202189

203190
// copy pose to display marker
204-
server_.setPose( display_marker_name, pose );
205-
206-
switch ( feedback->event_type )
207-
{
208-
case visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE:
209-
break;
210-
211-
default:
212-
break;
213-
}
191+
server_.setPose( feedback->marker_name+"_display", pose );
214192
}
215193

216194
// restart round
@@ -375,14 +353,16 @@ class PongGame
375353
float player_x = FIELD_WIDTH * 0.5 + BORDER_SIZE;
376354

377355
// Control for player 1
378-
int_marker.name = "player_1_control";
356+
int_marker.name = "paddle0";
379357
int_marker.pose.position.x = -player_x;
380-
server_.insert( int_marker, boost::bind( &PongGame::processPaddleFeedback, this, _1 ) );
358+
server_.insert( int_marker );
359+
server_.setCallback( int_marker.name, boost::bind( &PongGame::processPaddleFeedback, this, 0, _1 ), visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE );
381360

382361
// Control for player 2
383-
int_marker.name = "player_2_control";
362+
int_marker.name = "paddle1";
384363
int_marker.pose.position.x = player_x;
385-
server_.insert( int_marker, boost::bind( &PongGame::processPaddleFeedback, this, _1 ) );
364+
server_.insert( int_marker );
365+
server_.setCallback( int_marker.name, boost::bind( &PongGame::processPaddleFeedback, this, 1, _1 ), visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE );
386366

387367
// Make display markers
388368
marker.scale.x = BORDER_SIZE;
@@ -395,7 +375,7 @@ class PongGame
395375
control.always_visible = true;
396376

397377
// Display for player 1
398-
int_marker.name = "player_1_display";
378+
int_marker.name = "paddle0_display";
399379
int_marker.pose.position.x = -player_x;
400380

401381
marker.color.g = 1.0;
@@ -408,7 +388,7 @@ class PongGame
408388
server_.insert( int_marker );
409389

410390
// Display for player 2
411-
int_marker.name = "player_2_display";
391+
int_marker.name = "paddle1_display";
412392
int_marker.pose.position.x = player_x;
413393

414394
marker.color.g = 0.5;

0 commit comments

Comments
 (0)