我正在使用 GEKKO 进行四轴飞行器(模拟)的模型预测控制 (MPC),包括计算四轴飞行器质量和阻力的移动地平线估计器 (MHE)。四轴飞行器的命令功能需要我指定一个时间段(即在 x 秒内保持角度 r,p 和油门 z)。我的估计器中的离散化指定如下:
m = GEKKO()
m.time = (0,5,2)
模拟函数如下所示:
for i in range(cycles):
#Simulation measurements
#Request measurements
#MV inputs
T.MEAS = throttle_i[i]
roll.MEAS = roll_i[i]
pitch.MEAS = pitch_i[I]
#simulate one step
quad.move(roll_i[i],pitch_i[i],throttle_i[i],dt).join()
其中dt
是指定命令的时间长度。(即保持滚动,俯仰和油门dt
几秒钟)。
如何确保模拟中的离散化与 MHE 离散化相匹配?另外,我怎样才能在采样率和命令率之间找到一个很好的平衡?恐怕命令过于频繁会对过程进行不必要的细微调整,但采样频率不够会使估计的准确性降低。