-
Notifications
You must be signed in to change notification settings - Fork 424
Open
Labels
Description
Bug Description
When the diff_drive_controller is namespaced (for example /control/diff_drive_controller) The odom_frame_id and base_frame_id always use relative namespaces which can lead to TF frames with names such as /control//odom instead of the expected /odom
To Reproduce
Steps to reproduce the behavior:
# controller_config.yaml
/uirover/control/controller_manager:
ros__parameters:
update_rate: 100 # Hz
...
diff_drive_controller:
type: diff_drive_controller/DiffDriveController
...
/uirover/control/diff_drive_controller:
ros__parameters:
...
odom_frame_id: /odom
base_frame_id: /base_link# launch file
ld.add_action(
Node(
package="controller_manager",
executable="spawner",
namespace="/uirover/control",
arguments=[
"diff_drive_controller",
"-c",
"controller_manager",
"--switch-timeout",
"15",
],
# note: adding remappings had no effect
remappings=[
("odom", "/odom"),
("base_link", "/base_link")
]
)
)Expected behavior
published transforms should use a frame_id of /odom and /base_link
Screenshots
Environment:
- OS: Ubuntu 24.04.3 LTS
- Version Jazzy
- Binary installation
Additional context
I understand that the obvious fix is to simply not use namespacing for ros2 control nodes. In our use case we have 2 separate systems connected via rmw_zenoh and would prefer to keep the namespacing for more explicit seperation of the two