parameter.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 import unittest
3 
4 import ensenso_camera.ros2 as ros2py
5 
6 from ensenso_camera_msgs.msg import Parameter
7 
8 from ensenso_camera_test.helper import RegionOfInterest
9 import ensenso_camera_test.ros2_testing as ros2py_testing
10 
11 
12 GetParameter = ros2py.import_action("ensenso_camera_msgs", "GetParameter")
13 SetParameter = ros2py.import_action("ensenso_camera_msgs", "SetParameter")
14 
15 
16 class TestParameter(unittest.TestCase):
17  def setUp(self):
18  self.node = ros2py.create_node("test_parameter")
19  self.get_parameter_client = ros2py.create_action_client(self.node, "get_parameter", GetParameter)
20  self.set_parameter_client = ros2py.create_action_client(self.node, "set_parameter", SetParameter)
21 
22  clients = [self.get_parameter_client, self.set_parameter_client]
23  ros2py.wait_for_servers(self.node, clients)
24 
25  def get_parameter(self, keys, parameter_set=""):
26  goal = GetParameter.Goal(parameter_set=parameter_set, keys=keys)
27  response = ros2py.send_action_goal(self.node, self.get_parameter_client, goal)
28  result = response.get_result()
29 
30  self.assertTrue(response.successful())
31  self.assertEqual(result.error.code, 0)
32 
33  self.assertTrue(
34  abs(ros2py_testing.to_sec(result.stamp) - ros2py_testing.to_sec(self.node.get_clock().now())) < 1
35  )
36 
37  return result.results
38 
39  def set_parameter(self, parameters, parameter_set=""):
40  goal = SetParameter.Goal(parameter_set=parameter_set, parameters=parameters)
41  response = ros2py.send_action_goal(self.node, self.set_parameter_client, goal)
42  result = response.get_result()
43 
44  self.assertTrue(response.successful())
45  self.assertEqual(result.error.code, 0)
46 
47  return result.results
48 
49  def test_parameter(self):
50  # We only test the trigger mode, because the other parameters are not
51  # supported by a file camera.
52 
53  result = self.get_parameter([Parameter.TRIGGER_MODE])
54  self.assertEqual(len(result), 1)
55  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
56  self.assertEqual(result[0].string_value, "Software")
57 
58  # Set the parameter in a specific parameter set.
59  result = self.set_parameter(
60  [Parameter(key=Parameter.TRIGGER_MODE, string_value="Continuous")], parameter_set="test"
61  )
62  self.assertEqual(len(result), 1)
63  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
64  self.assertEqual(result[0].string_value, "Continuous")
65 
66  # We should be able to read the new value.
67  result = self.get_parameter([Parameter.TRIGGER_MODE], parameter_set="test")
68  self.assertEqual(len(result), 1)
69  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
70  self.assertEqual(result[0].string_value, "Continuous")
71 
72  # But it should still have the same value in the default parameter set.
73  result = self.get_parameter([Parameter.TRIGGER_MODE])
74  self.assertEqual(len(result), 1)
75  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
76  self.assertEqual(result[0].string_value, "Software")
77 
78  # Test the special ROI parameter that does not map to an NxLib node.
79 
80  default_roi = RegionOfInterest([0, 0, 0], [0, 0, 0])
81  test_roi = RegionOfInterest([1, 2, 3], [4, 5, 6])
82 
83  result = self.get_parameter([Parameter.REGION_OF_INTEREST])
84  self.assertEqual(len(result), 1)
85  self.assertEqual(result[0].key, Parameter.REGION_OF_INTEREST)
86  self.assertTrue(RegionOfInterest.from_message(result[0].region_of_interest_value).equals(default_roi))
87 
88  roi_message = Parameter(key=Parameter.REGION_OF_INTEREST)
89  test_roi.write_to_message(roi_message.region_of_interest_value)
90  result = self.set_parameter([roi_message])
91  self.assertEqual(len(result), 1)
92  self.assertEqual(result[0].key, Parameter.REGION_OF_INTEREST)
93  self.assertTrue(RegionOfInterest.from_message(result[0].region_of_interest_value).equals(test_roi))
94 
95  result = self.get_parameter([Parameter.REGION_OF_INTEREST])
96  self.assertEqual(len(result), 1)
97  self.assertEqual(result[0].key, Parameter.REGION_OF_INTEREST)
98  self.assertTrue(RegionOfInterest.from_message(result[0].region_of_interest_value).equals(test_roi))
99 
100 
101 def main():
102  ros2py_testing.run_ros1_test("test_parameter", TestParameter)
103 
104 
105 if __name__ == "__main__":
106  main()
ensenso_camera_test.parameter.TestParameter.node
node
Definition: parameter.py:18
ensenso_camera_test.parameter.main
def main()
Definition: parameter.py:101
ensenso_camera_test.helper
Definition: helper.py:1
ensenso_camera_test.parameter.TestParameter.set_parameter
def set_parameter(self, parameters, parameter_set="")
Definition: parameter.py:39
ensenso_camera_test.parameter.TestParameter.get_parameter_client
get_parameter_client
Definition: parameter.py:19
ensenso_camera_test.parameter.TestParameter.setUp
def setUp(self)
Definition: parameter.py:17
ensenso_camera_test.parameter.TestParameter.test_parameter
def test_parameter(self)
Definition: parameter.py:49
ensenso_camera_test.helper.RegionOfInterest
Definition: helper.py:102
ensenso_camera_test.parameter.TestParameter.set_parameter_client
set_parameter_client
Definition: parameter.py:20
ensenso_camera_test.parameter.TestParameter
Definition: parameter.py:16
ensenso_camera_test.ros2_testing
Definition: ros2_testing.py:1
ensenso_camera_test.parameter.TestParameter.get_parameter
def get_parameter(self, keys, parameter_set="")
Definition: parameter.py:25


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