From e31078171e072732b8b4109686892b3532fca278 Mon Sep 17 00:00:00 2001 From: luis-camero <88782189+luis-camero@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:45:43 -0400 Subject: [PATCH] Fix/Feature: Valence Battery Update/Fix (#227) * Only add battery estimator when no battery driver * Update valence arguments * Fix valence launch filename * Remove duplicate definition * Add robot namespace argument --- .../launch/generator.py | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/clearpath_generator_robot/clearpath_generator_robot/launch/generator.py b/clearpath_generator_robot/clearpath_generator_robot/launch/generator.py index 832ab42..ade6d8b 100644 --- a/clearpath_generator_robot/clearpath_generator_robot/launch/generator.py +++ b/clearpath_generator_robot/clearpath_generator_robot/launch/generator.py @@ -261,27 +261,25 @@ def __init__(self, setup_path: str = '/etc/clearpath/') -> None: if (self.clearpath_config.platform.battery.model in [BatteryConfig.VALENCE_U24_12XP, BatteryConfig.VALENCE_U27_12XP]): - can_dev = 'can1' - bms_id = '0' - launch_args = self.clearpath_config.platform.battery.launch_args - if launch_args: - if 'can_device' in launch_args: - can_dev = launch_args['can_device'] - if 'bms_id' in launch_args: - bms_id = launch_args['bms_id'] - - bms_launch_args = [ - ('namespace', self.namespace), - ('can_device', can_dev), - ('bms_id', bms_id), + valence_launch_args = [ + ('robot_namespace', self.namespace), + ('namespace', f'{self.namespace}/platform/bms'), + ('interface', 'can1'), + ('bms_id', '0') ] + for i in range(len(valence_launch_args)): + key = valence_launch_args[i][0] + if key in launch_args: + val = launch_args[key] + valence_launch_args[i] = (key, str(val)) + self.bms_launch_file = LaunchFile( 'bms', package=Package('valence_bms_driver'), - args=bms_launch_args + args=valence_launch_args ) # Inventus BMS elif (self.clearpath_config.platform.battery.model in @@ -461,6 +459,10 @@ def __init__(self, setup_path: str = '/etc/clearpath/') -> None: ): common_platform_components.append(self.base_station_node) + # Only add estimator when no BMS is present + if self.bms_launch_file is None: + common_platform_components.append(self.battery_state_estimator) + if len(self.can_bridges) > 0: common_platform_components.extend(self.can_bridges)