# 四元数 PID 姿态控制在大角度请求下不稳定

> 原文链接：https://robotics.hellobike.com/pitfalls/2024-02-02-robotics-se-8024
> 频道：pitfalls | 更新日期：2024-02-02 | 标签：auto, stackexchange, control, pid, stability
> 核心摘要：用单个 PID 控制四元数姿态误差会把 MIMO 问题伪装成 SISO，建议拆成三轴分别控制并整定。

# 四元数 PID 姿态控制在大角度请求下不稳定

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[PID quaternion contoller](https://robotics.stackexchange.com/questions/8024/pid-quaternion-contoller)（Robotics Stack Exchange #8024）

**状态**：已解决

## 问题

将当前/目标姿态转为四元数 `Qc`、`Qd`，用 `Qr = Qc' x Qd` 的虚部作为滚转、俯仰、偏航力请求；仿真可运行，但在 `R:60 P:60 Y:60` 等情况下不稳定，并希望能绕开俯仰 90° 奇异性。

## 环境

闭环运动控制器

## 解决办法

1. 不要用一个 PID 直接驱动整个四元数误差；四元数包含三自由度，实际是 MIMO 系统，而 PID 是 SISO 控制器。
2. 将控制拆到滚转、俯仰、偏航三个主轴，每个轴使用独立控制回路。
3. 分别按各轴动力学和转动惯量整定 PID 增益；若各轴转动惯量差异较大，单一四元数 PID 可能在某轴稳定、在另一轴失稳。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #8024：PID quaternion contoller](https://robotics.stackexchange.com/questions/8024/pid-quaternion-contoller)