上下文
我的任务是设计和建立一个微型四轴飞行器的速度PID控制器,而不是在室内飞行.四轴飞行器飞行的房间配备了基于摄像头的高精度室内跟踪系统,可以为四轴飞行器提供速度和位置数据.由此产生的系统应该能够接受每个轴(x,y,z)的目标速度,并以该速度驱动四轴飞行器.
四轴飞行器的控制输入是侧倾/俯仰/偏航角度和高度的推力百分比.
我的想法是为每个轴实施一个PID控制器,其中SP是该方向上的所需速度,测量值是跟踪系统提供的速度,输出值是滚动/俯仰/偏航角和推力百分比.
不幸的是,因为这是我第一次接触控制理论,我不确定我是否正朝着正确的方向前进.
问题
>我理解基本的PID控制器原理,但它仍然存在
我不清楚如何将速度(m / s)转换成滚动/俯仰/偏航
(弧度)只加总误差并乘以常数?
是的,速度和滚动/俯仰是成正比的,它也是如此
意味着通过乘以正确的常数产生正确的
结果?
>对于垂直速度控制器的情况,如果速度设置为0,则四轴飞行器实际上应保持其高度而不上升或下降.如何将这个与PID控制器集成在一起,以便当误差实际为0时推力值不为0(应该保持悬停而不是下降)?我应该在输出中添加一个常量项吗?
>一旦系统实施,那将是一个好方法
调整PID增益参数?手动试错?
>系统开发的下一步是附加层
位置PID控制器,作为设定点所需的
位置(x,y,z),测量位置由室内提供
跟踪系统和输出是x / y / z速度.这是一个好方法吗?
分离这些PID控制层的原因是该项目是一个促进可重用性的更大框架的一部分.使用单层PID控制器直接将位置坐标作为设定值并输出滚转/俯仰/偏航/推力值会更好吗?
最佳答案 >这是基本的想法.理论上,您可以在系统中使用几个常量来从一个单元转换为另一个单元.在您的情况下,P,I,D常数将隐含地包含正确的转换因子.例如,如果在一个理想化的系统中你想要通过反馈来控制角度,P = 0.5度,你可以访问的是速度,你知道5度倾斜给出1 m / s,那么你会编程P控制器将测量的速度乘以0.1,结果将是角度的控制输入.
>我认为最好的方法是实现一个SISO PID控制器,不是高度(h),而是垂直速度(dh / dt),推力百分比作为输出,但我不确定.
>不幸的是,如果您对参数没有预先了解,那将是唯一的出路.如果四轴飞行器坠毁,我推荐一个不会造成太大伤害的环境……
>听起来这是一个很好的方式