我是PID控制器和quadcopters的新手,我正在尝试为四轴飞行器编写一个非常简单(但真实的)模拟。我不打算建造一个实际的四轴飞行器控制器。
我大致了解PID的工作原理,但我不太明白如何使用它们。我知道我需要至少三个PID,每个旋转轴一个,但我不确定这是否足够。
我的模拟以每秒60个刻度运行,每次更新PID并且模拟无人机。
案例1)
这个案例与无人机模拟直接无关,只是我试图理解并感受到PID。 假设无人机处于世界坐标(0 -60 0)(Y是向上轴),我希望它在世界原点(0 0 0)处平稳,因此它需要向上加速。对于这种情况,让我们完全忽略转子,我可以直接将力直接施加到无人机上。无人机也是直立的,只能向上或向下移动。
为了平稳地向原点加速,我假设我需要一个PID(我们称之为 PID0 )并在设定值为0(y坐标)的情况下进行计算(世界起源),过程变量是无人机的y坐标。但是,输出不是一种力量。我可以直接将输出应用为速度,但效果很好,但这不是我想要的。我是否需要一个额外的PID( PID1 ),设定值是 PID0 和过程变量的输出 是当前的无人机速度,来计算力?
这意味着我需要6个PID(除了3个旋转PID)才能在所有轴上移动?这对我来说似乎不对。
如何根据 PID0 的结果计算我需要施加的力?
案例2)
对于这种情况,我们假设无人机具有自由运动,无人机的线性和角速度由转子升力和转子转矩决定。假设无人机的角度 pitch = 20 , yaw = 0 和 roll = 0 (正向俯仰指向下方,无人机是向前飞行),我希望它在 pitch = 0 , yaw = 0 和 roll = 0 时达到平衡。
要旋转无人机,我需要增加前转子的转速(和/或降低后转子的转速)。
如果我为俯仰轴计算PID的输出,设定值为0且过程变量为20,我得到另一个角度。如何使用它来改变转子的功率?
对于任何这些问题,我都不需要切实的解决方案,我只需要一些正确方向的提示/推动。
答案 0 :(得分:0)
我可能会建议使用加速度计作为传感器,然后使用加速度作为PID的设定值。如果你在无人机中心的每个移动轴上围绕飞机的圆周放置一个阵列,那么你就拥有了很好的平衡和导航无人机的方法。旋转加速度计可用于轴向旋转。
...然而
方案1中的,过程变量的导数,位置将是速度。因此,如果您有一些可编程逻辑可以近似导数相对于时间的导数,那么您将具有近似速度。根据您的稳定性需求,简单的有限差分近似可能是有效的。
在方案2中,我可能建议对每个转子RPM使用单个因变量的单独PID。