9 from actionlib_msgs.msg
import GoalStatus
10 from ensenso_camera_msgs.msg
import FitPrimitiveAction, FitPrimitiveGoal, Primitive
11 from ensenso_camera_msgs.msg
import RequestDataAction, RequestDataGoal
13 from helper
import Point
20 primitive = Primitive()
21 primitive.type = Primitive.CYLINDER
22 primitive.inlier_threshold = 0.001
24 primitive.inlier_fraction_in = 0.015
25 primitive.min_radius = 0.095
26 primitive.max_radius = 0.105
31 primitive = Primitive()
32 primitive.type = Primitive.SPHERE
33 primitive.inlier_threshold = 0.001
35 primitive.inlier_fraction_in = 0.03
36 primitive.min_radius = 0.048
37 primitive.max_radius = 0.055
42 primitive = Primitive()
43 primitive.type = Primitive.PLANE
44 primitive.inlier_threshold = 0.001
46 primitive.inlier_fraction_in = 0.015
47 primitive.min_radius = 0.095
48 primitive.max_radius = 0.105
74 self.fit_primitive_client.wait_for_server()
77 self.request_data_client.wait_for_server()
79 request_data_goal = RequestDataGoal()
80 request_data_goal.request_point_cloud =
True 81 self.request_data_client.send_goal(request_data_goal)
82 self.request_data_client.wait_for_result()
84 result = self.request_data_client.get_result()
85 self.assertEqual(result.error.code, 0)
88 goal = FitPrimitiveGoal()
90 goal.primitives.append(primitive)
96 goal = FitPrimitiveGoal()
98 goal.primitives.append(primitive)
104 goal = FitPrimitiveGoal()
106 goal.primitives.append(primitive)
112 goal = FitPrimitiveGoal()
122 goal = FitPrimitiveGoal()
125 goal.primitives.append(primitive)
132 for primitive
in result.primitives:
135 self.assertAlmostEqual(primitive.center.x, sphere.center.x, delta=delta)
136 self.assertAlmostEqual(primitive.center.y, sphere.center.y, delta=delta)
137 self.assertAlmostEqual(primitive.center.z, sphere.center.z, delta=delta)
138 self.assertAlmostEqual(primitive.radius, sphere.radius, delta=delta)
141 self.assertAlmostEqual(primitive.center.y, cylinder.center.y, delta=delta)
142 self.assertAlmostEqual(primitive.center.z, cylinder.center.y, delta=delta)
143 self.assertAlmostEqual(primitive.radius, cylinder.radius, delta=delta)
146 self.assertAlmostEqual(primitive.normal.z, plane.normal.z, delta=delta)
147 self.assertAlmostEqual(primitive.center.z, plane.center.z, delta=delta)
150 self.fit_primitive_client.send_goal(goal)
151 self.fit_primitive_client.wait_for_result()
152 self.assertEqual(self.fit_primitive_client.get_state(), GoalStatus.SUCCEEDED)
153 result = self.fit_primitive_client.get_result()
154 self.assertEqual(result.error.code, 0)
158 if __name__ ==
"__main__":
160 rospy.init_node(
"test_fit_primitive")
161 rostest.rosrun(
"ensenso_camera_test",
"test_fit_primitive", TestFitPrimitive)
162 except rospy.ROSInterruptException:
def test_primitive_combinations(self)
def get_cylinder_fit_primitive()
def test_counts_of_object(self)
def get_plane_fit_primitive()
def get_result(self, goal)
def get_sphere_fit_primitive()
def result_check(self, result)