19 import moveit_commander
20 from geometry_msgs.msg
import Pose, PoseStamped
21 from tf.transformations
import quaternion_from_euler
22 from crane_x7_examples.srv
import ObstacleAvoidance, ObstacleAvoidanceResponse
31 server.shutdown(
'rospy shutdown')
35 arm = moveit_commander.MoveGroupCommander(
"arm")
36 arm.set_max_velocity_scaling_factor(0.1)
37 arm.set_max_acceleration_scaling_factor(1.0)
38 arm.set_named_target(
"vertical")
45 arm = moveit_commander.MoveGroupCommander(
"arm")
46 arm.set_max_velocity_scaling_factor(0.1)
47 arm.set_max_acceleration_scaling_factor(1.0)
48 scene = moveit_commander.PlanningSceneInterface()
49 rospy.sleep(SLEEP_TIME)
52 scene.remove_world_object()
53 rospy.sleep(SLEEP_TIME)
57 floor_size = (2.0, 2.0, 0.01)
58 floor_pose = PoseStamped()
59 floor_pose.header.frame_id =
"/base_link"
60 floor_pose.pose.position.z = -floor_size[2]/2.0
61 scene.add_box(floor_name, floor_pose, floor_size)
62 rospy.sleep(SLEEP_TIME)
65 if req.obstacle_enable:
66 scene.add_box(req.obstacle_name, req.obstacle_pose_stamped,
67 (req.obstacle_size.x, req.obstacle_size.y, req.obstacle_size.z))
68 rospy.sleep(SLEEP_TIME)
72 arm.set_named_target(
'home')
77 arm.set_pose_target(req.start_pose)
82 arm.set_pose_target(req.goal_pose)
87 arm.set_named_target(
'home')
92 scene.remove_world_object()
93 rospy.sleep(SLEEP_TIME)
95 return ObstacleAvoidanceResponse(result)
101 rospy.init_node(
"obstacle_avoidance_example")
102 rospy.on_shutdown(hook_shutdown)
104 server = rospy.Service(
'~obstacle_avoidance', ObstacleAvoidance, callback)
105 print(
'Ready to avoid obstacles')
110 if __name__ ==
'__main__':
112 if not rospy.is_shutdown():
114 except rospy.ROSInterruptException: