9 from actionlib_msgs.msg
import GoalStatus
10 from ensenso_camera_msgs.msg
import LocatePatternAction, LocatePatternGoal
12 from helper
import Pose
14 DATA_SET_DIRECTORY =
"../data/locate_pattern/" 16 FRAMES_CONTAIN_PATTERN = [
True,
False]
22 self.locate_pattern_client.wait_for_server()
25 for contains_pattern
in FRAMES_CONTAIN_PATTERN:
26 self.locate_pattern_client.send_goal(LocatePatternGoal())
27 self.locate_pattern_client.wait_for_result()
28 self.assertEqual(self.locate_pattern_client.get_state(), GoalStatus.SUCCEEDED)
29 result = self.locate_pattern_client.get_result()
30 self.assertEqual(result.error.code, 0)
33 self.assertTrue(result.found_pattern)
34 self.assertEqual(len(result.patterns), 1)
35 self.assertEqual(len(result.pattern_poses), 1)
37 self.assertNotEqual(result.frame,
"")
39 pattern = result.patterns[0]
40 self.assertEqual(pattern.thickness, 0.001)
41 self.assertEqual(pattern.grid_spacing, 0.01875)
42 self.assertEqual(pattern.grid_size_x, 7)
43 self.assertEqual(pattern.grid_size_y, 7)
44 self.assertEqual(len(pattern.left_points), 49)
45 self.assertEqual(len(pattern.right_points), 49)
47 self.assertNotEqual(result.pattern_poses[0].header.stamp, 0)
48 self.assertNotEqual(result.pattern_poses[0].header.frame_id,
"")
50 reference_pattern_pose = Pose.from_json(os.path.join(DATA_SET_DIRECTORY,
"pattern_pose.json"))
51 estimated_pattern_pose = Pose.from_message(result.pattern_poses[0].pose)
52 self.assertTrue(reference_pattern_pose.equals(estimated_pattern_pose))
54 self.assertFalse(result.found_pattern)
55 self.assertEqual(len(result.patterns), 0)
56 self.assertEqual(len(result.pattern_poses), 0)
59 if __name__ ==
"__main__":
61 rospy.init_node(
"test_locate_pattern")
62 rostest.rosrun(
"ensenso_camera_test",
"test_locate_pattern", TestLocatePattern)
63 except rospy.ROSInterruptException:
def test_locate_pattern(self)