|
4 | 4 | from rcl_interfaces.msg import Parameter, SetParametersResult |
5 | 5 | from sensor_msgs.msg import CameraInfo, CompressedImage, Image, JointState |
6 | 6 |
|
7 | | -from .parameters import QoSParams, TopicParams |
8 | | -from .qos_profile_factory import qos_profile_factory |
| 7 | +from .qos_profiles import JOINT_STATES_QOS, SENSOR_QOS |
9 | 8 | from .roboreg_node import RoboregNode |
10 | 9 |
|
11 | 10 |
|
12 | 11 | class MonocularDepthNode(RoboregNode): |
13 | 12 | @dataclass |
14 | 13 | class _ExtraParams: |
15 | | - image_topic: TopicParams |
16 | | - camera_info_topic: TopicParams |
17 | | - depth_topic: TopicParams |
18 | | - depth_camera_info_topic: TopicParams |
19 | | - joint_state_topic: TopicParams |
| 14 | + image_topic: str |
| 15 | + camera_info_topic: str |
| 16 | + depth_topic: str |
| 17 | + depth_camera_info_topic: str |
| 18 | + joint_state_topic: str |
20 | 19 |
|
21 | 20 | def _register_synced_subscribers(self): |
22 | | - qos_profile = qos_profile_factory(self._extra_params.image_topic.qos) |
23 | 21 | self._data_collector.subscribers["camera.image"] = Subscriber( |
24 | 22 | self, |
25 | 23 | ( |
26 | 24 | CompressedImage |
27 | | - if "compressed" in self._extra_params.image_topic.name |
| 25 | + if "compressed" in self._extra_params.image_topic |
28 | 26 | else Image |
29 | 27 | ), |
30 | | - self._extra_params.image_topic.name, |
31 | | - qos_profile=qos_profile, |
| 28 | + self._extra_params.image_topic, |
| 29 | + qos_profile=SENSOR_QOS, |
32 | 30 | ) |
33 | | - qos_profile = qos_profile_factory(self._extra_params.camera_info_topic.qos) |
34 | 31 | self._data_collector.subscribers["camera.image.camera_info"] = Subscriber( |
35 | 32 | self, |
36 | 33 | CameraInfo, |
37 | | - self._extra_params.camera_info_topic.name, |
38 | | - qos_profile=qos_profile, |
| 34 | + self._extra_params.camera_info_topic, |
| 35 | + qos_profile=SENSOR_QOS, |
39 | 36 | ) |
40 | | - qos_profile = qos_profile_factory(self._extra_params.depth_topic.qos) |
41 | 37 | self._data_collector.subscribers["camera.depth"] = Subscriber( |
42 | 38 | self, |
43 | 39 | ( |
44 | 40 | CompressedImage |
45 | | - if "compressed" in self._extra_params.depth_topic.name |
| 41 | + if "compressed" in self._extra_params.depth_topic |
46 | 42 | else Image |
47 | 43 | ), |
48 | | - self._extra_params.depth_topic.name, |
49 | | - qos_profile=qos_profile, |
50 | | - ) |
51 | | - qos_profile = qos_profile_factory( |
52 | | - self._extra_params.depth_camera_info_topic.qos |
| 44 | + self._extra_params.depth_topic, |
| 45 | + qos_profile=SENSOR_QOS, |
53 | 46 | ) |
54 | 47 | self._data_collector.subscribers["camera.depth.camera_info"] = Subscriber( |
55 | 48 | self, |
56 | 49 | CameraInfo, |
57 | | - self._extra_params.depth_camera_info_topic.name, |
58 | | - qos_profile=qos_profile, |
| 50 | + self._extra_params.depth_camera_info_topic, |
| 51 | + qos_profile=SENSOR_QOS, |
59 | 52 | ) |
60 | | - qos_profile = qos_profile_factory(self._extra_params.joint_state_topic.qos) |
61 | 53 | self._data_collector.subscribers["joint_states"] = Subscriber( |
62 | 54 | self, |
63 | 55 | JointState, |
64 | | - self._extra_params.joint_state_topic.name, |
65 | | - qos_profile=qos_profile, |
| 56 | + self._extra_params.joint_state_topic, |
| 57 | + qos_profile=JOINT_STATES_QOS, |
66 | 58 | ) |
67 | 59 |
|
68 | 60 | def _declare_extra_parameters(self): |
69 | 61 | self.declare_parameters( |
70 | 62 | namespace="", |
71 | 63 | parameters=[ |
72 | | - ("topics.image.name", "/camera/image_rect_color"), |
73 | | - ("topics.image.qos.reliability", "BEST_EFFORT"), |
74 | | - ("topics.image.qos.durability", "VOLATILE"), |
75 | | - ( |
76 | | - "topics.image.camera_info.name", |
77 | | - "/camera/image_rect_color/camera_info", |
78 | | - ), |
79 | | - ("topics.image.camera_info.qos.reliability", "BEST_EFFORT"), |
80 | | - ("topics.image.camera_info.qos.durability", "VOLATILE"), |
81 | | - ("topics.depth.name", "/camera/depth_registered"), |
82 | | - ("topics.depth.qos.reliability", "BEST_EFFORT"), |
83 | | - ("topics.depth.qos.durability", "VOLATILE"), |
84 | | - ( |
85 | | - "topics.depth.camera_info.name", |
86 | | - "/camera/depth_registered/camera_info", |
87 | | - ), |
88 | | - ("topics.depth.camera_info.qos.reliability", "BEST_EFFORT"), |
89 | | - ("topics.depth.camera_info.qos.durability", "VOLATILE"), |
90 | | - ("topics.joint_state.name", "/joint_states"), |
91 | | - ("topics.joint_state.qos.reliability", "BEST_EFFORT"), |
92 | | - ("topics.joint_state.qos.durability", "VOLATILE"), |
| 64 | + ("topics.image", "/camera/image_rect_color"), |
| 65 | + ("topics.camera_info", "/camera/image_rect_color/camera_info"), |
| 66 | + ("topics.depth", "/camera/depth_registered"), |
| 67 | + ("topics.depth_camera_info", "/camera/depth_registered/camera_info"), |
| 68 | + ("topics.joint_state", "/joint_states"), |
93 | 69 | ], |
94 | 70 | ) |
95 | 71 |
|
96 | 72 | def _get_extra_parameters(self): |
97 | 73 | self._extra_params = self._ExtraParams( |
98 | | - image_topic=TopicParams( |
99 | | - name=self.get_parameter("topics.image.name") |
100 | | - .get_parameter_value() |
101 | | - .string_value, |
102 | | - qos=QoSParams( |
103 | | - reliability=self.get_parameter("topics.image.qos.reliability") |
104 | | - .get_parameter_value() |
105 | | - .string_value, |
106 | | - durability=self.get_parameter("topics.image.qos.durability") |
107 | | - .get_parameter_value() |
108 | | - .string_value, |
109 | | - ), |
110 | | - ), |
111 | | - camera_info_topic=TopicParams( |
112 | | - name=self.get_parameter("topics.image.camera_info.name") |
113 | | - .get_parameter_value() |
114 | | - .string_value, |
115 | | - qos=QoSParams( |
116 | | - reliability=self.get_parameter( |
117 | | - "topics.image.camera_info.qos.reliability" |
118 | | - ) |
119 | | - .get_parameter_value() |
120 | | - .string_value, |
121 | | - durability=self.get_parameter( |
122 | | - "topics.image.camera_info.qos.durability" |
123 | | - ) |
124 | | - .get_parameter_value() |
125 | | - .string_value, |
126 | | - ), |
127 | | - ), |
128 | | - depth_topic=TopicParams( |
129 | | - name=self.get_parameter("topics.depth.name") |
130 | | - .get_parameter_value() |
131 | | - .string_value, |
132 | | - qos=QoSParams( |
133 | | - reliability=self.get_parameter("topics.depth.qos.reliability") |
134 | | - .get_parameter_value() |
135 | | - .string_value, |
136 | | - durability=self.get_parameter("topics.depth.qos.durability") |
137 | | - .get_parameter_value() |
138 | | - .string_value, |
139 | | - ), |
140 | | - ), |
141 | | - depth_camera_info_topic=TopicParams( |
142 | | - name=self.get_parameter("topics.depth.camera_info.name") |
143 | | - .get_parameter_value() |
144 | | - .string_value, |
145 | | - qos=QoSParams( |
146 | | - reliability=self.get_parameter( |
147 | | - "topics.depth.camera_info.qos.reliability" |
148 | | - ) |
149 | | - .get_parameter_value() |
150 | | - .string_value, |
151 | | - durability=self.get_parameter( |
152 | | - "topics.depth.camera_info.qos.durability" |
153 | | - ) |
154 | | - .get_parameter_value() |
155 | | - .string_value, |
156 | | - ), |
157 | | - ), |
158 | | - joint_state_topic=TopicParams( |
159 | | - name=self.get_parameter("topics.joint_state.name") |
160 | | - .get_parameter_value() |
161 | | - .string_value, |
162 | | - qos=QoSParams( |
163 | | - reliability=self.get_parameter("topics.joint_state.qos.reliability") |
164 | | - .get_parameter_value() |
165 | | - .string_value, |
166 | | - durability=self.get_parameter("topics.joint_state.qos.durability") |
167 | | - .get_parameter_value() |
168 | | - .string_value, |
169 | | - ), |
170 | | - ), |
| 74 | + image_topic=self.get_parameter("topics.image") |
| 75 | + .get_parameter_value() |
| 76 | + .string_value, |
| 77 | + camera_info_topic=self.get_parameter("topics.camera_info") |
| 78 | + .get_parameter_value() |
| 79 | + .string_value, |
| 80 | + depth_topic=self.get_parameter("topics.depth") |
| 81 | + .get_parameter_value() |
| 82 | + .string_value, |
| 83 | + depth_camera_info_topic=self.get_parameter("topics.depth_camera_info") |
| 84 | + .get_parameter_value() |
| 85 | + .string_value, |
| 86 | + joint_state_topic=self.get_parameter("topics.joint_state") |
| 87 | + .get_parameter_value() |
| 88 | + .string_value, |
171 | 89 | ) |
172 | 90 |
|
173 | 91 | def _on_set_extra_parameters_impl( |
174 | 92 | self, paramaters: list[Parameter] |
175 | 93 | ) -> SetParametersResult: |
176 | 94 | result = SetParametersResult(successful=True) |
177 | 95 | for parameter in paramaters: |
178 | | - if parameter.name == "topics.joint_state.name": |
| 96 | + if parameter.name == "topics.joint_state": |
179 | 97 | self.get_logger().info( |
180 | 98 | f"Setting joint state topic to {parameter.value}" |
181 | 99 | ) |
182 | | - self._extra_params.joint_state_topic.name = parameter.value |
| 100 | + self._extra_params.joint_state_topic = parameter.value |
183 | 101 | self._reload_synced_subscribers() |
184 | 102 | else: |
185 | 103 | continue |
|
0 commit comments