# 2D四旋翼PD控制滚转角发散到10^5怎么办

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-02-23-robotics-se-10940
> 频道：pitfalls | 更新日期：2017-02-23 | 标签：auto, stackexchange, quadcopter, pid, matlab
> 核心摘要：2D四旋翼PD控制仿真中姿态发散；采纳答案建议加推力/力矩和姿态角饱和、去掉加速度前馈并重调增益。

# 2D四旋翼PD控制滚转角发散到10^5怎么办

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[How to implement PD controller to this 2D planar quadcopter dynamics?](https://robotics.stackexchange.com/questions/10940/how-to-implement-pd-controller-to-this-2d-planar-quadcopter-dynamics)（Robotics Stack Exchange #10940）

**状态**：已解决

## 问题

实现2D平面四旋翼动力学和PD控制时，不确定是否需要执行器饱和；没有期望加速度项；控制信号产生很大的`u2`力矩，高角速度积分后使滚转角达到约`10^5`，破坏小角度线性化假设。

## 环境

闭环运动控制器

## 解决办法

1. 在电机映射后，对发送给电机的推力和力矩输出加入饱和限制；具体限值与机器相关，需要在代码中处理。
2. 由于PD控制器不适合大角度，必要时还要对最大俯仰角等姿态角加入饱和限制。
3. 若没有期望加速度，`ddot z_T`、`ddot y_T`等加速度前馈项可以忽略，仍可收敛到目标点或轨迹，但性能会降低。
4. 重新调整`k_p`、`k_v`等增益，并加入正确饱和，使仿真在物理上合理。
5. 姿态估计不要只积分陀螺仪角速度，应使用互补滤波器，否则状态会漂移。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #10940：How to implement PD controller to this 2D planar quadcopter dynamics?](https://robotics.stackexchange.com/questions/10940/how-to-implement-pd-controller-to-this-2d-planar-quadcopter-dynamics)