9 from actionlib_msgs.msg
import GoalStatus
10 from ensenso_camera_msgs.msg
import TexturedPointCloudAction, TexturedPointCloudGoal
11 from ensenso_camera_msgs.msg
import RequestDataMonoAction, RequestDataMonoGoal
12 from ensenso_camera_msgs.msg
import RequestDataAction, RequestDataGoal
21 STEREO_NAMESPACE =
"stereo" 22 MONO_NAMESPACE =
"mono" 23 MONO_SERIAL =
"color_mono" 31 TexturedPointCloudAction)
34 if not client.wait_for_server(rospy.Duration(WAIT_TIMEOUT)):
35 self.fail(msg=
"Timeout reached for servers.")
44 goal_mono = RequestDataMonoGoal()
45 goal_mono.request_rectified_images =
True 46 goal = RequestDataGoal()
47 goal.request_point_cloud =
True 48 self.request_mono.send_goal(goal_mono)
49 self.request_stereo.send_goal(goal)
52 if not client.wait_for_result(rospy.Duration(WAIT_TIMEOUT)):
53 self.fail(msg=
"Timeout reached for results.")
54 self.assertTrue(client.get_state() == GoalStatus.SUCCEEDED, msg=
"Request action has not been successful.")
57 goal_texture = TexturedPointCloudGoal()
58 goal_texture.use_opengl =
False 59 goal_texture.include_results_in_response =
True 60 goal_texture.mono_serial = MONO_SERIAL
61 goal_texture.far_plane = 4000.0
62 goal_texture.near_plane = 100.0
63 self.colorize_point_cloud.send_goal(goal_texture)
64 if not self.colorize_point_cloud.wait_for_result(rospy.Duration(WAIT_TIMEOUT)):
65 self.fail(msg=
"Timeout reached for results.")
68 result = self.colorize_point_cloud.get_result()
69 self.assertEqual(result.error.message,
"", msg=
"Got an error with the result")
70 self.
cloud_points = list(pc2.read_points(result.point_cloud, skip_nans=
True))
72 msg=
" The recieved point cloud is empty. Recieved {} points".format(len(self.
cloud_points)))
81 s = struct.pack(
'>f', test)
82 i = struct.unpack(
'>l', s)[0]
84 pack = ctypes.c_uint32(i).value
85 r = (pack & 0x00FF0000) >> 16
86 g = (pack & 0x0000FF00) >> 8
87 b = (pack & 0x000000FF)
89 self.assertTrue(r != 0., msg=
"r-value cannot be zero")
90 self.assertTrue(g != 0., msg=
"g-value cannot be zero")
91 self.assertTrue(b != 0., msg=
"b-value cannot be zero")
94 if __name__ ==
"__main__":
96 rospy.init_node(
"test_colorized_point_cloud")
97 rostest.rosrun(
"ensenso_camera_test",
"test_colorized_point_cloud", TestColorizedPointCloud)
98 except rospy.ROSInterruptException:
def recieved_point_cloud(self)
def test_colorize_point_cloud(self)
def send_data_goals(self)