# 四旋翼内外层PD控制器采样频率如何实现

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-01-20-robotics-se-7235
> 频道：pitfalls | 更新日期：2017-01-20 | 标签：auto, stackexchange, quadcopter, matlab, microcontroller
> 核心摘要：四旋翼位置跟踪中内外环不应都按同一思路处理，可在Simulink中用1kHz姿态环和100Hz位置环实现。

# 四旋翼内外层PD控制器采样频率如何实现

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[how to implement and code inner and outer PD controllers for quadrotor for position tracking](https://robotics.stackexchange.com/questions/7235/how-to-implement-and-code-inner-and-outer-pd-controllers-for-quadrotor-for-posit)（Robotics Stack Exchange #7235）

**状态**：已解决

## 问题

提问者用`ode45`实现四旋翼位置跟踪时，内层姿态控制和外层位置控制都以1kHz运行，不确定是否需要在`ode45`内加入`while-loop`让姿态环更快。

## 环境

通用四旋翼；MATLAB `ode45`代码与Simulink模型；小角度线性化模型；姿态环1kHz、位置环100Hz。

## 解决办法

1. 参考答案中的Simulink结构：红色模块为姿态控制，按`1kHz`运行；绿色模块为线性位移跟踪，按`100Hz`运行。
2. 为保持`small angles`假设有效，应先基本完成起飞并达到期望高度`z_d`，再开始跟踪随时间变化的`x_d(t)`和`y_d(t)`。
3. 期望圆形轨迹应从四旋翼初始位置`(x(0), y(0))`开始。
4. 根据控制器增益调整，可得到较好的`x`、`y`、`z`跟踪效果；原文未给出针对提问代码的直接修改代码。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #7235：how to implement and code inner and outer PD controllers for quadrotor for position tracking](https://robotics.stackexchange.com/questions/7235/how-to-implement-and-code-inner-and-outer-pd-controllers-for-quadrotor-for-posit)