找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 21719|回复: 16

【原创】MATLAB初体验二(系统辨别)

  [复制链接]
8 乐币 回复本帖可获得 1 乐币奖励! 每人限 1 次(中奖概率 20%)
发表于 2012-8-10 20:37:20 | 显示全部楼层 |阅读模式
本帖最后由 史上最强 于 2012-8-10 21:27 编辑

下面我来介绍关于系统如何构建。
对于一般的Simulink建模方法可以分为两类。
第一类是首要原则法,就是根据系统的物理意义构造微分方程,得到状态方程后,利用Simulink里自带的乘法和加法器进行模块构建,或者直接用状态方程模块分别写入A,B,C,D四个矩阵得到系统。还有一种方法是利用Simulink里面自带的Simscape物理建模平台,里面有基本的建立机械系统,动力传动系统和机械和电子系统的模块搭建系统。最后一种就是搭建CAD模型,利用SimMechanics把CAD模型转换成MATLAB模块进行系统的搭建。
所以这种方法需要玩家的数学功底比较强,知识面广阔。
第二类是数据驱动法,利用MAtLAB系统辨识工具箱,根据实测数据反推系统的方程,从而达到建模目的。
这种方法的首要前提是要有搭建好的物理模型进行测试。

还有一个工具叫SimulinkDesign Optimization,根据实测数据调节首要原则法建立的模型中不准确的参数。

         从这里我们很快就能发现LEGO最大的优点就是很快的建立好物理模型,利用蓝牙传送被测的物理量。所以利用系统辨识工具箱可以很快建立出模型。下面我对系统辨识工具箱的应用进行讲解。
         在讲解之前,首先我们对这次建模利用的Simulink模块进行介绍。
         首先是SignalBuilder模块,如图1所示。打开模块的设置界面,可以方便地通过GUI(用户交互式)界面画出任意需要的波形,如图2所示。波形的输入可以通过手动的修改波形,也可以通过Excel导入的形式输入到模块内。这个模块的意义就是写入测试数据,这个就是数据驱动法的首要条件。当然在以后的设计中,当我们得到了系统,建立模型进行测试的时候不是通过上NXT进行测试,而是经过Simulink仿真,所以我们经常要写一些测试数据,所以这个模块的意义也变得十分重要。在MATLAB帮助文件里面也经常会看见这个模块的出现。
图 (1).jpeg
图 (2).jpeg

然后是LEGO MINDSTORMSNXT模块,如图3所示。中两个指轮状的就是电机模型,一个是角度传感器,返回的是电机转动的角度,一个是电机模块,输入是电机的速度[-100,100]之间。


图 (3).jpeg
接着是差分模块,如图4所示。顾名思义通过模块得到上一次的值与这一次值的差值,例如角度传感器输入进去后,输出的就是角速度。
图 (4).jpeg
最后是输出模块,如图5所示。这个模块可以把输出结果,放入MATLAB的工作空间中,以便进行数据处理。举个例子说明工作空间的意思,你在写C语言的时候如果想看某些变量数值的时候是比较麻烦的,但是在MATLAB把变量的数值放在工作空间中,能像Excel一样的观看数值,而且可以画出图像等等,十分方便。
图 (5).jpeg
下面开始建立Simulink模型如图6所示。输入是角速度,输出是反馈回来的角速度,也可以反馈是角度值。
图 (6).jpeg
         其中SignalBuilder如图7所示。我是利用Excel导入进Signal Builder中的,如图8所示。
图 (7).jpeg
图 (8).jpeg

这样我们就可以点Tool->Runon Target HardWare->Run就可以编译下载到NXT中了

最后得到一个结构体,数据经过提取Time和得到的角速度建立矩阵out,再把输入值建立矩阵in,格式是第一列是时间,第二列是角速度。

在MATLAB中输入Ident打开系统辨识工具箱。点Importdata,如图9所示,选择Time-Domain Signals时域信号,并填入图10所示的参数。

图 (9).jpeg
图 (10).jpeg

点击Estimate选择Quick Start。如图11所示。我们发现arxqs拟合度为91.82比较好。吧arxqs拖动到ToWorkspace中,这样我们的系统就建立完毕了。


图 (11).jpeg

下面开始讲如何应用系统,建立如图12所示的模型。其中LTISystem模块参数修改为arxqs,就可以把模型输入到系统中了。

图 (12).jpeg
可能大家还会对PID算法中系数的选取有些迷茫,即使是图形化界面也会因为种种原因选择不好最佳的参数,在下一次体验中我会介绍MATLAB最令人振奋的工具箱,可以自动帮你选定PID参数。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2015-4-20 13:56:43 | 显示全部楼层
顶一下,支持支持,辛苦了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-9-9 09:08:51 | 显示全部楼层

回帖奖励 +1 乐币

真的很深奥
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-7-24 12:55:01 | 显示全部楼层
值得学习!收藏!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-5-20 07:40:12 | 显示全部楼层
慢慢学习
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-2-13 21:34:43 | 显示全部楼层
不错
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-1-27 11:33:18 | 显示全部楼层
不错 学习中
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-11-14 11:12:36 | 显示全部楼层
学习中。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-11-14 11:11:06 | 显示全部楼层
学习学习,希望能学会仿真。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-17 07:07:21 | 显示全部楼层
顶一下,支持支持,辛苦了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-11 21:41:25 | 显示全部楼层
很好的一份LEGO和MATLAB应用贴,收藏,,{:soso_e179:}
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-11 14:55:20 | 显示全部楼层
blackblue 发表于 2012-8-11 14:07
有中文版的没有?软件在什么地方可以下到?
楼主其实可以结合一个LEGO机器人实例来讲解一下的.......

我正在做一个机器人。回头过几个月做好了会发上来的。MATLAB 2012a 4.7G。等到10月MATLAB 2012b粉丝版就会出来了。电驴应该有下,而且淘宝也有好多。MATLAB编译效率也是很高的,而且Simulink的建模也看见了,跟LabVIEW也是差不多的。而且Simulink可以结合优化工具箱,自动寻找参数。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-11 14:07:37 | 显示全部楼层
有中文版的没有?软件在什么地方可以下到?
楼主其实可以结合一个LEGO机器人实例来讲解一下的.......
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-10 23:31:13 | 显示全部楼层
imlucky1 发表于 2012-8-10 23:26
先提点具体问题吧
1,图10中的数字参数怎么选的,为什么是0.6和0.2?
2,arxqs是什么?

那个东西你做一遍就知道,采样回来数据时间从0.6s开始的,采样间隔是0.2s。 快速辨识会生成4个系统,arxqs是其中一个,如果你懂得系统辨识,可以选择状态方程去拟合。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-10 23:26:02 | 显示全部楼层
先提点具体问题吧
1,图10中的数字参数怎么选的,为什么是0.6和0.2?
2,arxqs是什么?
谢谢
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-4-17 02:58 , Processed in 0.435170 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表