0

我是 PID 控制器和四轴飞行器的新手,我正在尝试为四轴飞行器编写一个非常简单(但现实)的模拟。我不是想构建一个实际的四轴飞行器控制器。

我大致了解 PID 的工作原理,但我不太了解如何使用它们。我知道我至少需要三个 PID,每个旋转轴一个,但我不确定这是否足够。

我的模拟以每秒 60 个滴答的速度运行,每个滴答都会更新 PID 并模拟无人机。

情况1)

这个案例与无人机模拟没有直接关系,只是我试图理解和感受PID。假设无人机在世界坐标(0 -60 0)(Y 为上轴),我希望它在世界原点(0 0 0)保持水平,所以它需要向上加速。对于这种情况,让我们完全忽略转子,我可以神奇地直接对无人机施加力。无人机也是直立的,只能上下移动。

为了平稳地加速到原点,我假设我需要一个 PID(我们称之为PID0)并使用设定值0(世界原点的 y 坐标)来计算它,过程变量是 y 坐标无人机。但是,输出不是力量。我可以将输出直接作为速度应用,效果很好,但这不是我想要的。我是否需要一个额外PID ( PID1 )来计算

这意味着我需要 6 个 PID(除了 3 个旋转 PID)来在所有轴上移动?这对我来说似乎不对。

如何根据PID0的结果计算我需要施加的力?

案例2)

对于这种情况,我们假设无人机可以自由运动,无人机的线速度和角速度由旋翼升力和旋翼扭矩决定。假设无人机的角度pitch = 20yaw = 0roll = 0(正俯仰向下,意味着无人机向前飞行),我希望它在pitch = 0yaw = 0滚动= 0

要旋转无人机,我需要增加前转子的 RPM(和/或降低后转子的 RPM)。

如果我计算俯仰轴的 PID输出,设定值为 0,过程变量为 20,我会得到另一个角度。我如何使用它来改变转子的功率?



我不需要任何这些问题的切实解决方案,我只需要一些提示/朝着正确的方向轻推。

4

1 回答 1

0

我可能会建议将加速度计用作传感器,然后将加速度用作 PID 的设定值。如果您在飞机的圆周上放置一个阵列,在无人机中心的每个运动轴上放置一个阵列,那么您将拥有一个很好的调平和导航无人机的方法。旋转加速度计可用于轴向旋转。

然而...

在场景 1 中,您的过程变量的导数位置将是速度。因此,如果您有一些可编程逻辑可以近似您的导数关于时间的导数,您将获得近似的速度。根据您的稳定性需求,简单的有限差分近似可能是有效的。

在场景 2 中,我可能建议为每个转子 RPM 使用带有单个因变量的单独 PID。

于 2017-08-02T19:41:36.043 回答