workspace_calibration.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 import random
3 import unittest
4 
5 import ensenso_camera.ros2 as ros2py
6 
7 from ensenso_camera_msgs.msg import Parameter
8 
9 import ensenso_camera_test.ros2_testing as ros2py_testing
10 
11 from geometry_msgs.msg import Pose, Point, Quaternion
12 
13 CalibrateWorkspace = ros2py.import_action("ensenso_camera_msgs", "CalibrateWorkspace")
14 LocatePattern = ros2py.import_action("ensenso_camera_msgs", "LocatePattern")
15 SetParameter = ros2py.import_action("ensenso_camera_msgs", "SetParameter")
16 
17 tolerance = 0.001
18 
19 
20 class TestWorkspaceCalibration(unittest.TestCase):
21  def setUp(self):
22  self.node = ros2py.create_node("test_workspace_calibration")
23  self.calibration_client = ros2py.create_action_client(self.node, "calibrate_workspace", CalibrateWorkspace)
24  self.locate_pattern_client = ros2py.create_action_client(self.node, "locate_pattern", LocatePattern)
25  self.set_parameter_client = ros2py.create_action_client(self.node, "set_parameter", SetParameter)
26  ros2py.wait_for_server(self.node, self.locate_pattern_client)
27 
29  parameter = Parameter(key=Parameter.FOLLOW_LINK, string_value="Disabled")
30  goal = SetParameter.Goal(parameters=[parameter])
31  response = ros2py.send_action_goal(self.node, self.set_parameter_client, goal)
32 
33  result = response.get_result()
34  self.assertTrue(response.successful())
35  self.assertEqual(result.error.code, 0)
36 
38  for _ in range(5):
39  x = random.randint(-500, 500)
40  y = random.randint(-500, 500)
41  z = random.randint(-500, 500)
42 
43  p = Point(x=float(x), y=float(y), z=float(z))
44 
45  q = Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
46  pose = Pose(position=p, orientation=q)
47 
48  # Calibrate for the random pose.
49  goal = CalibrateWorkspace.Goal(defined_pattern_pose=pose)
50  response = ros2py.send_action_goal(self.node, self.calibration_client, goal)
51  result = response.get_result()
52 
53  self.assertTrue(response.successful())
54  self.assertEqual(result.error.code, 0)
55  self.assertTrue(result.successful)
56 
57  self.disable_follow_link()
58 
59  # Locate the pattern. It should now be at the random pose.
60  response = ros2py.send_action_goal(self.node, self.locate_pattern_client, LocatePattern.Goal())
61  result = response.get_result()
62 
63  self.assertTrue(response.successful())
64  self.assertEqual(result.error.code, 0)
65 
66  self.assertTrue(result.found_pattern)
67  self.assertEqual(len(result.pattern_poses), 1)
68 
69  pose = result.pattern_poses[0].pose
70  self.assertTrue(abs(pose.position.x - x) < tolerance)
71  self.assertTrue(abs(pose.position.y - y) < tolerance)
72  self.assertTrue(abs(pose.position.z - z) < tolerance)
73 
74 
75 def main():
76  ros2py_testing.run_ros1_test("test_workspace_calibration", TestWorkspaceCalibration)
77 
78 
79 if __name__ == "__main__":
80  main()
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.node
node
Definition: workspace_calibration.py:22
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.locate_pattern_client
locate_pattern_client
Definition: workspace_calibration.py:24
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration
Definition: workspace_calibration.py:20
ensenso_camera_test.workspace_calibration.main
def main()
Definition: workspace_calibration.py:75
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.disable_follow_link
def disable_follow_link(self)
Definition: workspace_calibration.py:28
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.set_parameter_client
set_parameter_client
Definition: workspace_calibration.py:25
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.test_workspace_calibration
def test_workspace_calibration(self)
Definition: workspace_calibration.py:37
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.calibration_client
calibration_client
Definition: workspace_calibration.py:23
ensenso_camera_test.ros2_testing
Definition: ros2_testing.py:1
ensenso_camera_test.workspace_calibration.TestWorkspaceCalibration.setUp
def setUp(self)
Definition: workspace_calibration.py:21


ensenso_camera_test
Author(s): Ensenso
autogenerated on Wed Apr 2 2025 02:37:52