# Gazebo SetForce()导致力传到整个模型

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-03-19-robotics-se-11642
> 频道：pitfalls | 更新日期：2017-03-19 | 标签：auto, stackexchange, ros, gazebo, joint
> 核心摘要：Gazebo 关节施力使底盘受反作用力，可通过增加底盘质量或模拟与地面接触来绕过。

# Gazebo SetForce()导致力传到整个模型

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Gazebo joint-&gt;SetForce() call applies forces to the whole model. How to circumvent that?](https://robotics.stackexchange.com/questions/11642/gazebo-joint-setforce-call-applies-forces-to-the-whole-model-how-to-circumve)（Robotics Stack Exchange #11642）

**状态**：有绕过办法

## 问题

在 Gazebo 插件 `OnUpdate()` 中对转动关节调用 `joint->SetForce()` 让激光往返旋转时，力会传递到模型其他部分，尤其是承载激光的 `chassis`，但底盘又不能用固定关节固定到地面。

## 环境

Gazebo / Ignition 仿真环境

## 解决办法

1. 给 `chassis` 增加足够大的质量，例如在 `<link name='chassis'>` 的 `<inertial>` 中设置 `<mass>10</mass>`，让外力不产生明显加速度。
2. 如果不想只靠增重，应建模轮子与地面的连接；答案建议用一系列柔性关节模拟与地面的接触，而不是把移动车辆用固定关节固定到地面。

原问题作者：pijemcolu；采纳答案作者：Chuck。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #11642：Gazebo joint->SetForce() call applies forces to the whole model. How to circumvent that?](https://robotics.stackexchange.com/questions/11642/gazebo-joint-setforce-call-applies-forces-to-the-whole-model-how-to-circumve)