我是 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 = 20,yaw = 0和roll = 0(正俯仰向下,意味着无人机向前飞行),我希望它在pitch = 0,yaw = 0和滚动= 0。
要旋转无人机,我需要增加前转子的 RPM(和/或降低后转子的 RPM)。
如果我计算俯仰轴的 PID输出,设定值为 0,过程变量为 20,我会得到另一个角度。我如何使用它来改变转子的功率?
我不需要任何这些问题的切实解决方案,我只需要一些提示/朝着正确的方向轻推。