24 from geometry_msgs.msg
import PoseStamped
26 import simple_moveit_interface
as smi_
27 import cob_pick_place_action.msg
30 def gen_pose(frame_id="/base_link", pos=[0,0,0], euler=[0,0,0]):
32 pose.header.frame_id = frame_id
33 pose.header.stamp = rospy.Time.now()
34 pose.pose.position.x, pose.pose.position.y, pose.pose.position.z = pos
35 pose.pose.orientation.x, pose.pose.orientation.y, pose.pose.orientation.z, pose.pose.orientation.w = quaternion_from_euler(*euler)
39 psi = smi_.get_planning_scene_interface()
43 smi_.clear_objects(
"arm_left_7_link")
50 pose.header.frame_id =
"/base_footprint" 51 pose.header.stamp = rospy.Time.now()
52 pose.pose.position.x = -0.9
53 pose.pose.position.y = 0
54 pose.pose.position.z = 0.39
55 pose.pose.orientation.x = 0
56 pose.pose.orientation.y = 0
57 pose.pose.orientation.z = 0
58 pose.pose.orientation.w = 1
59 psi.add_box(
"bookcase", pose, size=(0.5, 1.5, 0.78))
67 pick_action_client.wait_for_server()
70 goal = cob_pick_place_action.msg.CobPickGoal()
71 goal.object_class = object_class
72 goal.object_name = object_name
73 goal.object_pose = object_pose
75 goal.gripper_type =
"sdh" 77 goal.gripper_side =
"left" 81 goal.grasp_database =
"OpenRAVE" 82 goal.support_surface =
"bookcase" 86 pick_action_client.send_goal(goal)
89 finished_before_timeout=pick_action_client.wait_for_result(rospy.Duration(300, 0))
91 if finished_before_timeout:
92 state=pick_action_client.get_state()
93 print "Action finished: %s"%state
105 place_action_client.wait_for_server()
108 goal = cob_pick_place_action.msg.CobPlaceGoal()
109 goal.object_class = object_class
110 goal.object_name = object_name
111 goal.destinations = destinations
112 goal.support_surface =
"bookcase" 116 place_action_client.send_goal(goal)
119 finished_before_timeout=place_action_client.wait_for_result(rospy.Duration(300, 0))
121 if finished_before_timeout:
122 state=place_action_client.get_state()
123 print "Action finished: %s"%state
128 if __name__ ==
'__main__':
132 rospy.init_node(
'CobPickAction_client_py')
136 psi = smi_.get_planning_scene_interface()
139 filename = roslib.packages.get_pkg_dir(
'cob_grasp_generation')+
"/files/meshes/yellowsaltcube.stl" 140 pose1 =
gen_pose(pos=[-0.7, 0.0, 0.85], euler=[random.uniform(-pi, pi), random.uniform(-pi, pi), random.uniform(-pi, pi)])
141 psi.add_mesh(
"cube1", pose1, filename)
144 pose2 =
gen_pose(pos=[-0.7, 0.2, 0.85], euler=[random.uniform(-pi, pi), random.uniform(-pi, pi), random.uniform(-pi, pi)])
145 psi.add_mesh(
"cube2", pose2, filename)
149 for x
in numpy.arange(-0.9, -0.6, 0.1):
150 for y
in numpy.arange(-0.3, -0.2, 0.1):
151 for theta
in numpy.arange(-pi, pi, pi/2):
152 destination =
gen_pose(pos=[x,y,0.78], euler=[0,0,theta])
153 destinations.append(destination)
172 except rospy.ROSInterruptException:
173 print "program interrupted before completion" def cob_place_action_client(object_class, object_name, destinations)
def cob_pick_action_client(object_class, object_name, object_pose)
def gen_pose(frame_id="/base_link", pos=[0, euler=[0)
Helper function.