|
4 | 4 | from queue import Empty, Full, Queue
|
5 | 5 |
|
6 | 6 | import rclpy
|
7 |
| -from bitbots_utils.utils import get_parameters_from_other_node |
| 7 | +from bitbots_utils.utils import RobotNotConfiguredError, get_parameters_from_other_node |
8 | 8 | from rclpy.executors import SingleThreadedExecutor
|
9 | 9 | from rclpy.logging import LoggingSeverity
|
10 | 10 | from rclpy.node import Node
|
@@ -155,8 +155,17 @@ def __init__(self, node: Node):
|
155 | 155 | self.freq: float = node.get_parameter("send_frequency").value
|
156 | 156 |
|
157 | 157 | target_ip_parameter_name: str = "monitoring_host_ip"
|
158 |
| - params_blackboard = get_parameters_from_other_node(node, "parameter_blackboard", [target_ip_parameter_name]) |
159 |
| - self.target: str = params_blackboard[target_ip_parameter_name] |
| 158 | + self.params_blackboard = get_parameters_from_other_node( |
| 159 | + node, "parameter_blackboard", [target_ip_parameter_name] |
| 160 | + ) |
| 161 | + if any(param_val is None for param_val in self.params_blackboard.values()): |
| 162 | + error_text = """ |
| 163 | +The robot is not configured properly or the parameter_blackboard is not found. |
| 164 | +It is likely that the robot was not configured when you syncronised your clean code onto the robot. |
| 165 | +Run the deploy_robots script with the -c option to configure the robot and set parameters like the robot id and its role.""" |
| 166 | + self._node.get_logger().fatal(error_text) |
| 167 | + raise RobotNotConfiguredError(error_text) |
| 168 | + self.target: str = self.params_blackboard[target_ip_parameter_name] |
160 | 169 | self.port: int = node.get_parameter("port").value
|
161 | 170 | self.sock = self.setup_udp_socket()
|
162 | 171 |
|
|
0 commit comments