Skip to content

Parameters for force_torque_sensor_broadcaster not being parsed #1558

Open
@rcruzoliver

Description

@rcruzoliver

Environment (please complete the following information):

  • OS: [Ubuntu 24 - Docker Container with base image Humble]
  • Version [Humble]

Description
force_torque_sensor_broadcaster parameters are not parsed properly and the controller does not start. The same launch file and config files work in jazzy.

This is the launch file

import os
import launch
import launch_ros.actions
from ament_index_python.packages import get_package_share_directory


def generate_launch_description():
    # Get the package share directory
    package_share_directory = get_package_share_directory('bota_driver')

    # Locate the URDF file
    urdf_file = os.path.join(package_share_directory, 'urdf', 'bota_ft_sensor_standalone_robot.urdf')
    
    # Locate the ROS2 Control parameters file
    controller_manager_params = os.path.join(package_share_directory, 'config', 'controller_manager_params.yaml')

    # Locate the force-torque sensor broadcaster parameters file
    force_torque_sensor_broadcaster_params = os.path.join(package_share_directory, 'config', 'force_torque_sensor_broadcaster_params.yaml')

    # Read the URDF file contents
    with open(urdf_file, 'r') as file:
        robot_description = file.read()

    # Robot State Publisher
    robot_state_publisher_node = launch_ros.actions.Node(
        package='robot_state_publisher',
        executable='robot_state_publisher',
        name='robot_state_publisher',
        output='screen',
        parameters=[{'robot_description': robot_description}]
    )

    # Controller Manager 
    controller_manager_node = launch_ros.actions.Node(
        package='controller_manager',
        executable='ros2_control_node',
        name='controller_manager',
        output='screen',
        parameters=[{'robot_description': robot_description}, controller_manager_params]
    )

    # Spawner for force-torque sensor broadcaster
    force_torque_sensor_broadcaster_spawner = launch_ros.actions.Node(
        package='controller_manager',
        executable='spawner',
        arguments=['force_torque_sensor_broadcaster', '--param-file', force_torque_sensor_broadcaster_params],
        output='screen',
    )

    return launch.LaunchDescription([
        robot_state_publisher_node,
        controller_manager_node,  # Start the controller manager properly
        force_torque_sensor_broadcaster_spawner  # Load the force sensor broadcaster
    ])`

This is controller_manager_params.yaml

controller_manager:
  ros__parameters:
    update_rate: 100  # Hz
    use_sim_time: false

This is the force_torque_sensor_broadcaster_params.yaml

force_torque_sensor_broadcaster:
  ros__parameters:
    type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
    frame_id: "sensor_frame"
    sensor_name: "bota_ft_sensor"

I have also tried to pass all the parameters to the ros2_control_node...modifying the controller_manager_params.yaml to this:

controller_manager:
  ros__parameters:
    update_rate: 100  # Hz
    use_sim_time: false

    force_torque_sensor_broadcaster:
      type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
      frame_id: "sensor_frame"
      sensor_name: "bota_ft_sensor"   

But it does also not work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions