You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用lbr_fri_ros2_stack在ROS2 Humble的Gazebo中模拟KUKA iiwa14力扭矩数据

解决ROS 2 Humble中Gazebo加载LBR iiwa14并模拟力扭矩传感器的问题

一、修复机器人未加载到Gazebo的问题

你当前的launch文件存在两个关键问题导致机器人无法加载:

  1. 硬编码xacro路径不可靠
    替换绝对路径为基于包的相对路径,避免环境变化导致路径失效:

    robot_description_content = ParameterValue(
        Command([
            "xacro ",
            PathJoinSubstitution([
                FindPackageShare("lbr_description"),
                "urdf/iiwa14/iiwa14.xacro"
            ]),
            " mode:=gazebo"
        ]),
        value_type=str
    )
    
  2. robot_description话题命名空间不匹配
    你的robot_state_publisher在lbr命名空间下发布robot_description,但spawn节点默认监听全局话题,需指定完整话题路径:

    Node(
        package='ros_gz_sim',
        executable='create',
        output='screen',
        arguments=[
            '-name', LaunchConfiguration("robot_name"),
            '-topic', '/lbr/robot_description',  # 加上命名空间
            '-z', '0.1'
        ]
    )
    

修改后重新启动launch文件,机器人应该能正常加载到Gazebo空世界中。

二、配置模拟力扭矩传感器(两种方案)

要让/lbr/force_torque_broadcaster/wrench输出模拟数据,推荐以下两种方案:

方案1:复用ros2_control控制器(与硬件逻辑一致)

这种方案和真实硬件的工作流程完全对齐,无需额外桥接:

  1. 在ros2_control配置中添加FT传感器插件
    找到lbr_description中对应ros2_control的xacro文件(如iiwa14_ros2_control.xacro),添加传感器配置:

    <sensor name="force_torque_sensor" type="force_torque">
      <plugin>ros2_control_ft_sensor/FTSensor</plugin>
      <param name="frame_id">${robot_name}_link_ee</param>
      <param name="update_rate">200</param>
    </sensor>
    
  2. 添加force_torque_broadcaster控制器配置
    在lbr_bringup/config/controllers.yaml中添加:

    force_torque_broadcaster:
      ros__parameters:
        type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
        sensor_name: force_torque_sensor
        frame_id: iiwa14_link_ee
    
  3. 在launch文件中启动该控制器
    在Controllers部分添加:

    force_torque_broadcaster = LBRROS2ControlMixin.node_controller_spawner(
        controller="force_torque_broadcaster"
    )
    ld.add_action(force_torque_broadcaster)
    

方案2:Gazebo原生传感器+话题桥接

如果你更倾向于用Gazebo原生传感器,需添加桥接节点将Gazebo话题转成ROS2目标话题:

  1. 保留你添加的Gazebo传感器配置
    确保${robot_name}_link_ee是已存在的末端link(不要重复定义空link)。

  2. 在launch文件中添加ros_gz_bridge节点
    将Gazebo输出的FT数据桥接到目标话题:

    ld.add_action(Node(
        package='ros_gz_bridge',
        executable='parameter_bridge',
        arguments=[
            '/iiwa14/ft_sensor/force_torque@sensor_msgs/msg/Wrench@ignition.msgs.Wrench',
            '--ros-args', '--remap', '/iiwa14/ft_sensor/force_torque:/lbr/force_torque_broadcaster/wrench'
        ],
        output='screen'
    ))
    

    注意:Gazebo传感器的话题默认格式为/模型名/传感器名/force_torque,需根据你的机器人名称调整前缀。

三、验证

完成配置后,重启launch文件,运行:

ros2 topic echo /lbr/force_torque_broadcaster/wrench

即可看到模拟的力扭矩数据。

内容的提问来源于stack exchange,提问作者Maha Tri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:35:05