自控原理之系统辨识
前沿
数学模型是一个或多或少,以一定的形式表达出你正在观测的事物。**通过观测事物的各项属性,推断出一个数学模型,这是科学。**系统辨识,着手从观测事物得到的数据中,建立一个数学模型。正由于物理系统在我们身边应用很广,所以系统辨识学科有个很宽广的应用范围。
物理系统(dynamic systems)
一个物理系统可以简化成一个黑箱,有四个相关的变量。u是输入信号;w是可测量的干扰两;v是不可测量的干扰信号;y是输出。
是最常见的二阶物理系统
模型(model)
模型的种类(三种)
- 心理模型:这种模型没有数学公式去描述。比如开车需要经验去判断踩多重的油门,会使车的速度达到你想要的速度。
- 图像模型:比如常见的bode图,阶跃响应图
- 数学模型:常用差分、微分方程表示。
常见的连续时间表达式有微分方程,状态空间和传递函数。
常用的离散时间表达式是差分方程
创建模型(两种方法)
- 分解成子系统:比如一个机械手臂,能够分成很多个子系统。再把简单的子系统按流程构造成框图,就得到了模型。
- 实验分析法:通过实验获取输入输出信号值,通过数据分析推断模型。这个方法就是系统辨识。
真实系统的虚构性
数学模型为我们提供一个窗口,来观察真实世界。但我们永远无法对物理系统构建一个完全精确的数学模型。
系统辨识过程
三要素
- 数据集:用户通过设点测量那些信号,什么时候和怎么测量,以及可选择输入信号的形式。这种通过实验获得的数据,但让是信息越丰富,输出有限制越好。
- 选择一类模型结构:系统辨识最重要的一环。工程师根据经验预判那种模型更合适。如果模型的参数不能反应物理系统的状态,我们称之为“黑箱”。
- 评估规则:辨识的方法。模型好不好,要看在同样的输入条件下,该模型的输出和原系统的输出相似度高不高。
模型验证
在辨识出一个模型后,还要去测试这个模型是否“足够好”。
系统辨识的环节
好事多磨,辨识一次不一定能够得到一个较理想的模型,通过模型验证有效后,如果模型拟合不佳,继续从第一步重新做。
matlab系统辨识
五大步骤:
- 采集数据:系统辨识的方法不止一种,本文是根据输入输出数据辨识传递函数。
- 导入数据到matlab
- 系统辨识:使用system identification工具箱
- 自动整定PID参数:用到了control system designer的工具箱以及simulink
- v-rep验证
在v-rep里采集数据
添加图表和想记录的变量
使用Graph图表收集仿真数据
仿真,让云台做阶跃响应
把采集到的数据导出到excel文件里,第一步顺利完成
导入数据到matlab中
输入导入
把test分开两部分:
In= table2array(in)是把table转换成矩阵,这样才能继续做下一步的系统辨识。
此时工作区中的in和out都是411行1列的double型矩阵
系统辨识system identification
导入数据到system identification的app里
这里的采样时间是0.02,因为v-rep里默认的仿真时间是20ms。
数据预处理
这里只做了把数据分成训练集和验证集两部分。(本质是神经网络)
处理完后,把madatae和madatav分别拖入到working data和validation data的工作框内
传递函数的辨识
导出传递函数即可
用simulink自动整定PID
搭建模型
把辨识出的传递函数写进去transfer function 里
打开PID tunner app
调节两个移动图标
得到满足你需求的一个曲线后(这里的例子上升时间大约0.5s),然后更新到simulink中
simulink仿真更新后的PID,发现仿真曲线和PID tuner的一样,包括上升时间,超调等参数都一样。
v-rep验证模型辨识的准确性
把PID参数更新到v-rep模型里
仿真得到曲线
注意:上图v-rep仿真中,幅度为3的阶跃响应,上升时间是0.48s。这里的3,实际上相当于电机转动了180°。
结论:调节时间在500ms左右,超调量在0.70左右。证明系统辨识过程是正确的,有一定的准确性和指导意义,大大减小了调PID的时间。