# franka_ros2仿真重力补偿失效致机械臂下垂的修复

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-07-08-franka-ros2-222
> 频道：pitfalls | 更新日期：2026-07-08 | 标签：auto, github-issue, franka_ros2
> 核心摘要：Humble下gravity_compensation_example_controller因加载默认SDF致零力矩时机械臂下垂，需改用empty_no_gravity.sdf或添加OSFR源修复。

# franka_ros2仿真重力补偿失效致机械臂下垂的修复

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Gravity compensation example does not work in simulation](https://github.com/frankarobotics/franka_ros2/issues/222)（GitHub frankaemika/franka_ros2 #222）

**状态**：已解决

## 问题

在franka_ros2 v2.3.0 dev container (Humble) 中运行 gazebo_franka_arm_example_controller.launch.py，gravity_compensation_example_controller 激活后输出零力矩，但机械臂仍受重力影响发生下垂。

## 环境

franka_ros2 v2.3.0 tag, ROS 2 Humble, Gazebo Sim, franka_gazebo_bringup, gravity_compensation_example_controller

## 解决办法

1. 修改 gazebo_franka_arm_example_controller.launch.py 第130-133行，使用 get_package_share_directory('franka_gazebo_bringup') 获取包路径，拼接 worlds/empty_no_gravity.sdf 作为 gz_args_name 的 default_value，替换原 '-r empty.sdf'。
2. 若需保留世界重力仅对机器人禁用，添加OSFR apt源并安装最新版gz-physics与sdformat以支持逐link重力覆盖（Jazzy分支已集成此修复）。
3. 注意 empty_no_gravity.sdf 会使整个仿真环境无重力，仅为临时绕过方案，官方后续版本将正式修复逐link重力禁用问题。

讨论原作者：@smihael 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub frankaemika/franka_ros2 #222：Gravity compensation example does not work in simulation](https://github.com/frankarobotics/franka_ros2/issues/222)