背景
我的任务是为室内飞行的微型四旋翼设计和构建一个速度PID控制器。飞行的房间配备有基于摄像机的高精度室内跟踪系统,可以为四旋翼提供速度和位置数据。生成的系统应能够接受每个轴(x、y、z)的目标速度并以该速度驱动四旋翼。
四旋翼的控制输入是横滚/俯仰/偏航角和高度升力百分比。
我的想法是为每个轴实现一个PID控制器,其中SP是该方向上的期望速度,测量值是跟踪系统提供的速度,输出值分别是横滚/俯仰/偏航角和升力百分比。
不幸的是,由于这是我第一次接触控制理论,我不确定自己是否朝着正确的方向前进。
问题
我了解基本的PID控制器原理,但还不清楚它如何通过僅將誤差相加並乘以一個常數就能将速度(m/s)轉換為横滚/俯仰/偏航(弧度)?是的,速度和横滚/俯仰成正比,这是否意味着只要乘以正确的常数就能得到正确的结果?
对于垂直速度控制器的情况,如果将速度设置为0,则四旋翼实际上应保持其高度而不上升或下降。如何将其与PID控制器集成,以便当误差为0时,推力值不为0(应保持悬停,而不是掉落)?我应该在输出中添加一个常量项吗?
一旦系统被实现,调整PID增益参数的好方法是什么?手动试错?
系统发展的下一个步骤是另外一层位置PID控制器,它以期望位置(x、y、z)作为设定点,测量位置由室内跟踪系统提供,输出为x/y/z速度。这是一个好方法吗?之所以将这些PID控制层分开是因为该项目是更大框架的一部分,该框架促进重用性。是否最好只使用单层PID控制器,该控制器直接将位置坐标作为设定点,并输出横滚/俯仰/偏航/推力值?