球杆系统-系统辨识

在完成了角度控制之后, 整个系统的框图就变了。
 

figure 3.1 角度控制后系统框图
如图所示, 角度控制后, figure0.2的第一个子系统变成输入为角度设定了。 如果想要控制小球的位移, 我们可以进行一个位移的闭环控制。 同时, 可以将小球的运动的两次积分简化为单个系统(速度无法直接观测, 分为单个系统无意义)。
 

figure 3.2 位移控制策略 
此时的控制框图是个典型的串级控制结构, 外环套内环。 此时系统的控制器设计与普通的二阶系统控制器设计毫无二致, 除了中间的非线性环节之外。 经过分析, 该非线性环节是一个关于y=sin(x)的函数, 在x绝对值比较小的时候可以近似为y=x, 因此该环节在系统中可直接忽略。 另外要注意的是, 对象是一个包含两个积分环节的二阶系统, 如果单纯使用P控制, 则系统极点在y轴,属于临界稳定, 理想状况下会震荡, 所以需要PD控制将极点配在坐标系左边。 另外系统无需积分即可消除稳态误差, 这是因为系统包含积分环节。

那么此时是否可以开始设计PD控制器了呢? 在设计之前, 得考虑位移误差的微分如何得到。 位移的微分其实就是速度值。 我们只有位移传感器, 却没有速度传感器, 那么此时就必须进行微分。
 

figure 3.3 位移微分的结果
如图所示, 直接微分的结果非常糟糕, 信噪比目测不足2:1, 在这种情况下控制器不光无法镇定, 高频的抖动还可能损坏机械结构。
现在有两个解决办法, 一是通过购买噪声非常小的激光测距传感器或其他传感器来获得更为理想的测量值,二是通过观测器的设计来替代微分, 获得较好的速度值。 接下来我会选择第二种方法解决这个问题。
观测器本质上是一种数据融合的方法, 将系统的动力学模型的预测值与测量值进行信息的融合, 获得更为平滑低噪声的信息。 著名的卡尔曼滤波就是观测器的一种动态的最优解。 在进行观测器设计之前, 我们至少需要大概计算一下系统的动力学模型, 这就是系统辨识。
简单的说, 观测器就是通过系统模型作为一个”传感器“来估计测量不到的状态量。
系统辨识就是通过系统的输入和输出计算系统的模型。

这个时候滑动变阻器就派上用场了。
 

figure 3.4 手操横杆控制
输入量即角度值, 输出量即位移值, 将手动控制过程中的数据提取出来, 利用matlab的系统辨识工具箱进行快速而简单的辨识。数据记录如下:

点击下载数据

数据有一部分其实是不可用的, 这是因为这部分数据可能球已经打到边缘, 或者是由手扶着的。 这种情况下的运动数据是无法反映我们想要获得的运动模型的。 运行压缩包中的sig_seg.m, 可以打出来我截取的数据。

 

虽然说使用了系统辨识工具箱, 不需要自己去写求解算法,但是如果不明白其中原理的话也很难求解比较好的参数。 以此次为例, 咱们的模型在之前已经分析过了, 从角度到球的位移是二阶近似线性关系, 因此使用二阶次的线性系统作为模型, 利用输入输出数据, 求取各项参数。

 

模型阶次2阶, 模型类型选择观测标准型。 然后就能够得到辨识后的系统了。
 
figure 3.5 辨识得到的模型对辨识数据的预测仿真
可以看到, 辨识的模型很精准的把握了位移的变化趋势, 但并没有和位移完全重合。 这是机械的摩擦、滑动造成的。 另外模型预测的速度信息比较平滑, 也很好的贴合了速度的趋势, 并且完全没有高频的噪声。

得到的模型表示如下(m文件):

A = [0 1;   0.06279 -1.1];
B = [-2.521; -33.86];
C = [1 0];
sys = ss(A,B,C,0);
至此, 有了ABC矩阵, 系统辨识就算完成了。

1
说点什么

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
sjh2100 Recent comment authors
  Subscribe  
最新 最旧 得票最多
提醒
sjh2100
游客
sjh2100

如何获知状态变量的含义,请指点一二

error: Content is protected !!