From b7808258f263fd1b56b841a56120280bf8090921 Mon Sep 17 00:00:00 2001 From: Jorge Arrese Rodriguez Date: Fri, 10 Jul 2026 23:26:53 +0200 Subject: [PATCH] fix(bot_state_machine): use namespace-relative lifecycle client names create_comms() built transition_event/change_state/get_state names with a leading slash, making them absolute and bypassing the state machine's own namespace. With a robot_name set in robot_config.yaml, all get_state calls failed and every node stayed 'unknown', so bringup never ran. Relative names resolve inside the node's namespace and are identical to the previous behavior when no robot name is set (namespace '/'). --- botbrain_ws/src/bot_state_machine/src/lifecycle_manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/botbrain_ws/src/bot_state_machine/src/lifecycle_manager.cpp b/botbrain_ws/src/bot_state_machine/src/lifecycle_manager.cpp index f28e845..0f8cd14 100644 --- a/botbrain_ws/src/bot_state_machine/src/lifecycle_manager.cpp +++ b/botbrain_ws/src/bot_state_machine/src/lifecycle_manager.cpp @@ -244,7 +244,7 @@ void LifecycleManager::create_comms() // Watch lifecycle transition events for this node. auto sub = this->create_subscription( - "/" + n.name + "/transition_event", + n.name + "/transition_event", rclcpp::SystemDefaultsQoS(), [this, node_name = n.name](const lifecycle_msgs::msg::TransitionEvent::SharedPtr msg) { this->transition_callback(node_name, msg); @@ -255,13 +255,13 @@ void LifecycleManager::create_comms() // Service clients used to push lifecycle commands and query status. auto change_cli = this->create_client - ("/" + n.name + "/change_state", + (n.name + "/change_state", rmw_qos_profile_services_default, cbg_); change_state_srvs_.emplace(n.name, change_cli); auto get_cli = this->create_client - ("/" + n.name + "/get_state", + (n.name + "/get_state", rmw_qos_profile_services_default, cbg_); get_state_srvs_.emplace(n.name, get_cli);