8 from actionlib_msgs.msg
import GoalStatus
9 from ensenso_camera_msgs.msg
import LocatePatternAction, LocatePatternGoal
10 from ensenso_camera_msgs.msg
import ProjectPatternAction, ProjectPatternGoal
12 from helper
import ImagePoint
18 self.locate_pattern_client.wait_for_server()
20 self.project_pattern_client.wait_for_server()
23 self.locate_pattern_client.send_goal(LocatePatternGoal())
24 self.locate_pattern_client.wait_for_result()
25 self.assertEqual(self.locate_pattern_client.get_state(), GoalStatus.SUCCEEDED)
26 location_result = self.locate_pattern_client.get_result()
27 self.assertEqual(location_result.error.code, 0)
29 self.assertTrue(location_result.found_pattern)
30 self.assertEqual(len(location_result.patterns), 1)
31 self.assertEqual(len(location_result.pattern_poses), 1)
33 detected_pattern = location_result.patterns[0]
34 detected_pattern_pose = location_result.pattern_poses[0].pose
39 goal = ProjectPatternGoal()
40 goal.grid_spacing = detected_pattern.grid_spacing
41 goal.grid_size_x = detected_pattern.grid_size_x
42 goal.grid_size_y = detected_pattern.grid_size_y
43 goal.pattern_pose = detected_pattern_pose
45 self.project_pattern_client.send_goal(goal)
46 self.project_pattern_client.wait_for_result()
48 self.assertEqual(self.project_pattern_client.get_state(), GoalStatus.SUCCEEDED)
49 projection_result = self.project_pattern_client.get_result()
50 self.assertEqual(projection_result.error.code, 0)
52 self.assertEqual(projection_result.pattern_is_visible,
True)
53 self.assertEqual(len(detected_pattern.left_points), len(projection_result.left_points))
54 self.assertEqual(len(detected_pattern.right_points), len(projection_result.right_points))
56 reference_points = map(
lambda p: ImagePoint.from_message(p),
57 detected_pattern.left_points + detected_pattern.right_points)
58 projected_points = map(
lambda p: ImagePoint.from_message(p),
59 projection_result.left_points + projection_result.right_points)
60 for reference_point, projected_point
in zip(reference_points, projected_points):
61 self.assertTrue(reference_point.equals(projected_point))
64 if __name__ ==
"__main__":
66 rospy.init_node(
"test_project_pattern")
67 rostest.rosrun(
"ensenso_camera_test",
"test_project_pattern", TestProjectPattern)
68 except rospy.ROSInterruptException:
def test_project_pattern(self)