3
# Copyright 2012 Shadow Robot Company Ltd.
5
# This program is free software: you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by the Free
7
# Software Foundation, either version 2 of the License, or (at your option)
10
# This program is distributed in the hope that it will be useful, but WITHOUT
11
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15
# You should have received a copy of the GNU General Public License along
16
# with this program. If not, see <http://www.gnu.org/licenses/>.
21
import roslib; roslib.load_manifest('handle_demo_step_action_servers')
25
from handle_demo_step_actions.msg import PlacePositionSelectionAction, PlacePositionSelectionResult, PlacePositionSelectionFeedback
26
from handle_demo_step_actions.srv import PlacePositionSelection
28
class PlacePositionSelectionServer(object):
30
self.service_place_position_selection_from_list = None
31
self.server = actionlib.SimpleActionServer('select_place_position', PlacePositionSelectionAction, self.execute, False)
33
rospy.loginfo("Step actionlib servers: place_position_selection server ready")
35
def init_services(self):
37
srvname = '/decision_services/place_position_selection'
38
rospy.loginfo("Waiting for service " + srvname)
39
rospy.wait_for_service(srvname)
40
self.service_place_position_selection_from_list = rospy.ServiceProxy(srvname, PlacePositionSelection)
42
def execute(self, goal):
43
self.server.publish_feedback(PlacePositionSelectionFeedback(1, "Select a pose"))
48
self.selection_srv_response = self.service_place_position_selection_from_list(goal.initial_pose_of_the_object)
49
except rospy.ServiceException, e:
50
print "Service did not process request: %s" % str(e)
51
self.server.publish_feedback(PlacePositionSelectionFeedback(100, "Error: position selection service error"))
52
self.server.set_aborted()
56
self.server.publish_feedback(PlacePositionSelectionFeedback(100, "Position selected: x=" + str(self.selection_srv_response.selected_place_pose.pose.position.x) +
57
" y=" + str(self.selection_srv_response.selected_place_pose.pose.position.y) +
58
" z=" + str(self.selection_srv_response.selected_place_pose.pose.position.z)))
60
self.server.set_succeeded(PlacePositionSelectionResult(self.selection_srv_response.selected_place_pose))
63
if __name__ == '__main__':
64
rospy.init_node('place_position_selection_server')
65
server = PlacePositionSelectionServer()
b'\\ No newline at end of file'