Open
Description
Description
Environment:
- ROS 2 Distribution: Jazzy
- OS: Ubuntu 24.04 (noble) / [your arch, e.g. arm64]
- ros2_control: [e.g. 4.25.0-1noble]
- joint_state_broadcaster: [e.g. 4.25.0-1noble]
- Installed via: apt
- Workspace build:
colcon build --symlink-install
Problem:
When launching a minimal ros2_control setup with only joint_state_broadcaster
in the controller YAML, the controller fails to load with the following error:
[controller_manager]: Controller 'joint_state_broadcaster' node arguments: --ros-args --params-file
[controller_manager]: Caught exception of type : N6rclcpp10exceptions22RCLInvalidROSArgsErrorE while initializing controller 'joint_state_broadcaster': failed to parse arguments: Couldn't parse trailing --params-file flag. No file path provided., at ./src/rcl/arguments.c:419
controllers.yaml:
controller_manager:
ros__parameters:
update_rate: 50
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
launch file (excerpt):
robot_controllers = PathJoinSubstitution([
FindPackageShare("planar_robot_description"),
"config",
"controllers.yaml"
])
control_node = Node(
package="controller_manager",
executable="ros2_control_node",
parameters=[robot_controllers],
output="both"
)
joint_state_broadcaster_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["joint_state_broadcaster"]
)
What I tried:
- Checked YAML formatting, encoding (UTF-8, no BOM), and indentation (spaces only).
- Cleaned and rebuilt workspace (
rm -rf build/ install/ log/
). - Used both PathJoinSubstitution and absolute path for the YAML file.
- Confirmed the controller type is available via
ros2 control list_controller_types
. - Confirmed hardware and interfaces are available.
- The error persists regardless of these changes.
Expected behavior:
joint_state_broadcaster
should load successfully as in previous ROS 2 distributions (e.g. Humble).
Actual behavior:
Controller fails to load due to a missing params file argument, even though the YAML is present and correct.
Steps To Reproduce
- Use the minimal YAML and launch file above in a clean ROS 2 Jazzy workspace.
- Build and source the workspace.
- Launch the file:
ros2 launch planar_robot_description control_only.launch.py
- Observe the error in the controller_manager logs.
Additional Info
- This issue does not occur on ROS 2 Humble or Rolling with the same setup.
- Other controllers (e.g. joint_trajectory_controller) exhibit similar issues.
- This blocks basic usage of ros2_control on Jazzy.
Thank you for your help!