From ba5e4e6cc26e905d62cbdbc13c8ba1dcd98c06be Mon Sep 17 00:00:00 2001 From: y-bachmann Date: Tue, 16 Dec 2025 17:36:16 +0100 Subject: [PATCH 1/2] fix ParameterAlreadyDeclaredException when _on_heartbeat_timeout is called multiple times --- bondpy/bondpy/bondpy.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bondpy/bondpy/bondpy.py b/bondpy/bondpy/bondpy.py index e7e53cd..86bdebe 100644 --- a/bondpy/bondpy/bondpy.py +++ b/bondpy/bondpy/bondpy.py @@ -34,6 +34,7 @@ from bond.msg import Constants, Status from bondpy.BondSM_sm import BondSM_sm +from rclpy.exceptions import ParameterAlreadyDeclaredException import rclpy from rclpy.duration import Duration @@ -184,7 +185,11 @@ def _on_connect_timeout(self): def _on_heartbeat_timeout(self): # Checks that heartbeat timeouts haven't been disabled globally - self.node.declare_parameter(Constants.DISABLE_HEARTBEAT_TIMEOUT_PARAM, False) + try: + if not self.node.has_parameter(Constants.DISABLE_HEARTBEAT_TIMEOUT_PARAM): + self.node.declare_parameter(Constants.DISABLE_HEARTBEAT_TIMEOUT_PARAM, False) + except ParameterAlreadyDeclaredException: + pass disable_heartbeat_timeout = self.node.get_parameter( Constants.DISABLE_HEARTBEAT_TIMEOUT_PARAM).value if disable_heartbeat_timeout: From 62426418953577ee442d5ff0ad908872c19020d8 Mon Sep 17 00:00:00 2001 From: y-bachmann Date: Tue, 16 Dec 2025 17:53:17 +0100 Subject: [PATCH 2/2] Reorder import statements in bondpy.py --- bondpy/bondpy/bondpy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bondpy/bondpy/bondpy.py b/bondpy/bondpy/bondpy.py index 86bdebe..7612b0b 100644 --- a/bondpy/bondpy/bondpy.py +++ b/bondpy/bondpy/bondpy.py @@ -34,10 +34,10 @@ from bond.msg import Constants, Status from bondpy.BondSM_sm import BondSM_sm -from rclpy.exceptions import ParameterAlreadyDeclaredException import rclpy from rclpy.duration import Duration +from rclpy.exceptions import ParameterAlreadyDeclaredException def duration_to_sec(duration):