parameter.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 import rospy
3 import rostest
4 
5 import unittest
6 
7 import actionlib
8 from actionlib_msgs.msg import GoalStatus
9 from ensenso_camera_msgs.msg import GetParameterAction, GetParameterGoal
10 from ensenso_camera_msgs.msg import SetParameterAction, SetParameterGoal
11 
12 from ensenso_camera_msgs.msg import Parameter
13 
14 from helper import RegionOfInterest
15 
16 
17 class TestParameter(unittest.TestCase):
18  def setUp(self):
19  self.get_parameter_client = actionlib.SimpleActionClient("get_parameter", GetParameterAction)
20  self.get_parameter_client.wait_for_server()
21  self.set_parameter_client = actionlib.SimpleActionClient("set_parameter", SetParameterAction)
22  self.set_parameter_client.wait_for_server()
23 
24  def get_parameter(self, keys, parameter_set=""):
25  self.get_parameter_client.send_goal(GetParameterGoal(parameter_set=parameter_set, keys=keys))
26  self.get_parameter_client.wait_for_result()
27 
28  self.assertEqual(self.get_parameter_client.get_state(), GoalStatus.SUCCEEDED)
29  self.assertEqual(self.get_parameter_client.get_result().error.code, 0)
30 
31  result = self.get_parameter_client.get_result()
32  self.assertTrue(abs(result.stamp.to_sec() - rospy.Time.now().to_sec()) < 1)
33 
34  return result.results
35 
36  def set_parameter(self, parameters, parameter_set=""):
37  self.set_parameter_client.send_goal(SetParameterGoal(parameter_set=parameter_set, parameters=parameters))
38  self.set_parameter_client.wait_for_result()
39 
40  self.assertEqual(self.set_parameter_client.get_state(), GoalStatus.SUCCEEDED)
41  self.assertEqual(self.set_parameter_client.get_result().error.code, 0)
42 
43  return self.set_parameter_client.get_result().results
44 
45  def test_parameter(self):
46  # We only test the trigger mode, because the other parameters are not
47  # supported by a file camera.
48 
49  result = self.get_parameter([Parameter.TRIGGER_MODE])
50  self.assertEqual(len(result), 1)
51  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
52  self.assertEqual(result[0].string_value, "Software")
53 
54  # Set the parameter in a specific parameter set.
55  result = self.set_parameter([Parameter(key=Parameter.TRIGGER_MODE, string_value="Continuous")],
56  parameter_set="test")
57  self.assertEqual(len(result), 1)
58  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
59  self.assertEqual(result[0].string_value, "Continuous")
60 
61  # We should be able to read the new value.
62  result = self.get_parameter([Parameter.TRIGGER_MODE], parameter_set="test")
63  self.assertEqual(len(result), 1)
64  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
65  self.assertEqual(result[0].string_value, "Continuous")
66 
67  # But it should still have the same value in the default parameter set.
68  result = self.get_parameter([Parameter.TRIGGER_MODE])
69  self.assertEqual(len(result), 1)
70  self.assertEqual(result[0].key, Parameter.TRIGGER_MODE)
71  self.assertEqual(result[0].string_value, "Software")
72 
73  # Test the special ROI parameter that does not map to an NxLib node.
74 
75  default_roi = RegionOfInterest([0, 0, 0], [0, 0, 0])
76  test_roi = RegionOfInterest([1, 2, 3], [4, 5, 6])
77 
78  result = self.get_parameter([Parameter.REGION_OF_INTEREST])
79  self.assertEqual(len(result), 1)
80  self.assertEqual(result[0].key, Parameter.REGION_OF_INTEREST)
81  self.assertTrue(RegionOfInterest.from_message(result[0].region_of_interest_value).equals(default_roi))
82 
83  roi_message = Parameter(key=Parameter.REGION_OF_INTEREST)
84  test_roi.write_to_message(roi_message.region_of_interest_value)
85  result = self.set_parameter([roi_message])
86  self.assertEqual(len(result), 1)
87  self.assertEqual(result[0].key, Parameter.REGION_OF_INTEREST)
88  self.assertTrue(RegionOfInterest.from_message(result[0].region_of_interest_value).equals(test_roi))
89 
90  result = self.get_parameter([Parameter.REGION_OF_INTEREST])
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 
96 if __name__ == "__main__":
97  try:
98  rospy.init_node("test_parameter")
99  rostest.rosrun("ensenso_camera_test", "test_parameter", TestParameter)
100  except rospy.ROSInterruptException:
101  pass
def test_parameter(self)
Definition: parameter.py:45
def set_parameter(self, parameters, parameter_set="")
Definition: parameter.py:36
def get_parameter(self, keys, parameter_set="")
Definition: parameter.py:24


ensenso_camera_test
Author(s): Ensenso
autogenerated on Thu May 6 2021 02:50:10