主要内容

摩擦建模:MATLAB文件静态输出系统的建模

这个例子展示了灰色矩形建模的静态输入,对于系统使用MATLAB函数ODE文件。

系统识别通常处理识别参数动态模型。然而,静态模型也感兴趣的,有时在自己的,有时更大更复杂模型的子模型。后者的一个例子是讨论的案例研究“工业机器人的手臂”(idnlgreydemo13.m),在一个静态摩擦模型采用固定(预测)组件的机械臂模型。

我们讨论如何表示静态摩擦现象作为IDNLGREY模型和估计相应的系数。

一个连续可微的摩擦模型

不连续和分段连续摩擦力模型通常有问题的高性能连续控制器。这一事实的动机Makkar医生,迪克逊,索耶和胡锦涛提出一个新的连续和可微摩擦模型来捕获在实践中遇到的最常见的摩擦现象。在新的摩擦模型结构

c . Makkar医生w·e·迪克森,w·G·索耶和G。胡锦涛“一个新的不断

可微的摩擦模型控制系统设计”,IEEE (R) / ASME

先进的智能机电一体化,国际会议上

蒙特利,CA, 2005年,页600 - 605。

并将作为我们的静态识别实验的基础。

Makkar医生提出的摩擦模型,et al,链接的滑动速度v (t)身体接触摩擦的另一个身体力f (t)通过静态关系

f (t) = g(1) *(双曲正切(g (2) * v (t) -双曲正切(g (3) * v (t))

+ g(4) *双曲正切(g (5) * v (t)) + g (6) * v (t)

g (1),…,g(6) are 6 unknown positive parameters. This model structure displays a number of nice properties arising in real-world applications:

  1. 关于原点对称的摩擦模型

  2. 近似静态摩擦系数g (1) + g (4)

  3. 第一项方程的双曲正切(g (2) * v (t) -双曲正切(g (3) * v (t),抓住了所谓Striebeck效应,在摩擦项显示,而原点附近以增加滑动的速度突然下降。

  4. 库仑摩擦效应是由术语g(4) *双曲正切(g (5) * v (t))

  5. 上学期的粘滞摩擦耗散反映,g (6) * v (t)

参考上述纸一般对许多关于摩擦的更多细节,尤其是提出的模型结构。

IDNLGREY摩擦建模

现在让我们创建一个描述静摩擦IDNLGREY模型对象。像往常一样,起点是编写一个IDNLGREY建模文件,我们构造一个MATLAB文件,friction_m。米,内容如下。

函数(dx, f) = friction_m (t, x, v, g,变长度输入宗量)

% FRICTION_M非线性摩擦模型与Stribeck库仑和粘性

%耗散效应。

%输出方程。

f = g(1) *(双曲正切v (g(2) *(1)双曲正切(g (3) * v (1)))……% Stribeck效果。

+ g(4) *双曲正切(g (5) * v (1))…%库仑作用。

v + g (6) * (1);%粘性耗散项。

%的静态系统;没有状态。

dx = [];

注意,状态更新dx总是必须返回的模型文件,应该是空的([])在静态建模案例。

我们的下一步是通过模型文件,信息模型秩序,猜测参数向量等等IDNLGREY构造函数的输入参数。我们还指定名称和单位的输入和输出和状态,所有模型参数必须是积极的。

文件名=“friction_m”;%文件描述模型结构。订单= (1 1 0);%模型[纽约νnx]命令。参数= {(0.20;90;11;0.12;110;0.015)};%初始参数。InitialStates = [];%初始初始状态。t = 0;%的时间连续系统。nlgr = idnlgrey(文件名、秩序、参数、InitialStates Ts,“名字”,“静态摩擦模型”,“InputName”,滑动速度的,“InputUnit”,“米/秒”,“OutputName”,“摩擦力”,“OutputUnit”,“N”,“TimeUnit”,“年代”);nlgr = setpar (nlgr,“最低”,{0 (5、1)});%所有参数必须> = 0。

这些行动后,我们有一个初始摩擦模型与属性如下。

礼物(nlgr);
nlgr =连续时间非线性静态模型定义为“friction_m”(MATLAB文件):y (t) = H (t, u (t) p1) + e (t)与1输入(s), 0状态(s), 1个输出(s),自由参数(s)和6(6)输入:u(1)滑动速度(t) (m / s)输出:y(1)摩擦力(t) [N]参数:值p1 (1) p1 0.2(估计)[0,正]p1(2) 90(估计)[0,正]p1(3) 11(估计)[0,正]p1(4) 0.12(估计)[0,正]p1(5) 110(估计)[0,正]p1(6) 0.015(估计)[0,正]名称:静态摩擦模型状态:由直接建设或转换。不估计。在模型的“报告”属性的更多信息。

在识别实验我们不仅是完整的摩擦模型感兴趣,而且在研究减少摩擦模型将如何执行。通过减少我们这里的意思是三届的摩擦模型,该模型包含两个完整的模型。调查这三份完整的模型结构在每个副本创建和修复参数向量,因此只有两个方面的贡献:

nlgr1 = nlgr;nlgr1。Name =“没有Striebeck项”;nlgr1 = setpar (nlgr1,“价值”,{[0 (3,1);参数{1}(4:6)]});nlgr1 = setpar (nlgr1,“固定”,{[真(3,1);假(3,1)]});nlgr2 = nlgr;nlgr2。Name =“没有库仑项”;nlgr2 = setpar (nlgr2,“价值”{1},{[参数(1:3);0;0;参数{1}(6)]});nlgr2 = setpar (nlgr2,“固定”,{[假(3,1);真正的(2,1);假]});nlgr3 = nlgr;nlgr3。Name =“没有耗散项”;nlgr3 = setpar (nlgr3,“价值”{1},{[参数(1:5);0]});nlgr3 = setpar (nlgr3,“固定”,{[假(1);真正的]});

输入输出数据

在我们处理两种不同的(模拟)的数据集,输入滑速度被从-10 m / s 10 m / s斜缓的方式。我们加载数据并创建两个IDDATA对象为我们识别实验中,泽估计和用于验证。

负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“frictiondata”));泽= iddata (f1, v, 1,“名字”,“静态摩擦系统”);集(泽,“InputName”,滑动速度的,“InputUnit”,“米/秒”,“OutputName”,“摩擦力”,“OutputUnit”,“N”,“Tstart”0,“TimeUnit”,“年代”);zv = iddata (f2, v, 1,“名字”,“静态摩擦系统”);集(zv,“InputName”,滑动速度的,“InputUnit”,“米/秒”,“OutputName”,“摩擦力”,“OutputUnit”,“N”,“Tstart”0,“TimeUnit”,“年代”);

的输入-输出数据将用于评估图所示窗口。

图(“名字”,ze.Name);情节(泽);

图静摩擦系统包含2轴对象。坐标轴对象1标题摩擦力包含一个类型的对象。这个对象表示静态摩擦系统。坐标轴对象2标题滑动速度包含一个类型的对象。这个对象表示静态摩擦系统。

图1:输入-输出数据从一个系统出现摩擦。

初始摩擦模型的性能

对输入输出数据的访问和四种不同初始摩擦模型现在最明显的问题是,这些模型是多好?让我们调查这个估计的数据集通过模拟进行了比较:

集(gcf,“DefaultLegendLocation”,“东南”);比较(泽、nlgr nlgr1、nlgr2 nlgr3);

图静态摩擦系统包含一个坐标轴对象。坐标轴对象包含5线类型的对象。这些对象代表静态摩擦系统(摩擦力),静态摩擦模型:69.41%,没有Striebeck术语:68.55%,没有库仑术语:50.14%,没有耗散项:73.04%。

图2:比较真实的输出和模拟输出的四个初始摩擦模型。

参数估计

没有一个初始模型能够正确描述正确的输出。为了克服这个我们估计模型参数的四个模型结构。我们配置所有估计执行最多30个迭代和停止迭代只有宽容是几乎为零(它在实践中永远不会对真实世界数据)。这些计算将花费一些时间。

选择= nlgreyestOptions (“显示”,“上”);opt.SearchOptions。MaxIterations = 30;opt.SearchOptions。FunctionTolerance =每股收益;opt.EstimateCovariance = false;nlgr = nlgreyest (nlgr、泽、选择);nlgr1 = nlgreyest (nlgr1、泽、选择);nlgr2 = nlgreyest (nlgr2、泽、选择);nlgr3 = nlgreyest (nlgr3、泽、选择);

估计摩擦模型的性能

模型的性能再次调查通过比较真实的输出与模拟输出的四个模型获得使用比较,但这一次的比较是基于zv验证数据集。

比较(zv、nlgr nlgr1、nlgr2 nlgr3);

图静态摩擦系统包含一个坐标轴对象。坐标轴对象包含5线类型的对象。这些对象代表静态摩擦系统(摩擦力),静态摩擦模型:99.68%,没有Striebeck术语:91.63%,没有库仑术语:91.85%,没有耗散项:81.81%。

图3:比较真实的输出和模拟输出的四个估计摩擦模型。

我们清楚地看到,这个系统完整的模型优于减少的。然而,减少模型似乎能够获得他们的影响模型相当好,并在每种情况下的评估结果在一个更好的健康。获得最适合的粘性耗散项的模型已被排除。令人印象深刻的的完整模型之际,没有大的意外,其模型结构与用于生成真正的输出数据。完整的模型的参数也接近那些被用来生成真正的模型输出:

disp (“真正的估计参数向量”);
真正的估计参数向量
ptrue = (0.25;100;10;0.1;100;0.01);流(“% 7.3 f % 7.3 f \ n”[ptrue ';getpvec (nlgr) '));
0.250 0.249 100.000 106.637 10.000 9.978 0.100 0.100 100.000 87.699 0.010 0.010

最后预测误差(消防工程)标准(低价值是好的)应用到所有四个摩擦模型证实了完整的摩擦模型的优越性:

消防工程(nlgr、nlgr1 nlgr2 nlgr3);
1.0 e 03 * 0.0002 0.1665 0.1584 0.7931

至于动态系统,我们也可以检查使用PE静态模型的预测误差。我们这样做完整的摩擦模型,得出这样的结论:残差似乎随机性质:

pe (zv nlgr);

图静态摩擦系统包含一个坐标轴对象。坐标轴对象包含一个类型的对象。这些对象代表静态摩擦系统(摩擦力),静态摩擦模型。

图4:预测与估计错误获得完整的摩擦模型。

我们进一步验证了随机性通过观察残差(“剩菜”)的完整的摩擦模型:

图(“名字”,(nlgr.Name“:残差估计IDNLGREY模式”]);渣油(zv nlgr);

图静态摩擦模型:残差估计IDNLGREY模型包含2轴对象。坐标轴对象1标题AutoCorr包含2线类型的对象。这个对象表示静态摩擦模型。坐标轴对象2标题XCorr(滑动速度)包含2线类型的对象。这个对象表示静态摩擦模型。

图5:获得的残差估计完整的摩擦模型。

静态模型的阶跃响应也可以计算和绘制。我们单位阶跃和做这个申请四个估计摩擦模型:

图(“名字”,(nlgr.Name“估计模型:一步反应”]);步骤(nlgr、nlgr1 nlgr2 nlgr3);传奇(nlgr。名字,nlgr1。名字,nlgr2。名称、nlgr3.Name“位置”,“东南”);

图静态摩擦模型:一步估计模型的响应包含一个坐标轴对象。坐标轴对象的标题:滑动速度:摩擦力包含4线类型的对象。这些对象代表静态摩擦模型,没有Striebeck术语,没有库仑术语,没有耗散项。

图6:单位阶跃响应的四个估计摩擦模型。

我们最后显示的属性,如估计参数的标准差,损失函数,等等,完整的摩擦模型。

礼物(nlgr);
nlgr =连续时间非线性静态模型定义为“friction_m”(MATLAB文件):y (t) = H (t, u (t) p1) + e (t)与1输入(s), 0状态(s), 1个输出(s),自由参数(s)和6(6)输入:u(1)滑动速度(t) (m / s)输出:y(1)摩擦力(t) [N]参数:值p1 (1) p1 0.249402(估计)[0,正]p1(2) 106.637(估计)[0,正]p1(3) 9.97835(估计)[0,正]p1(4) 0.0999916(估计)[0,正]p1(5) 87.6992(估计)[0,正]p1(6) 0.0100019(估计)[0,正]名称:静态摩擦模型状态:终止条件:改变参数小于指定的公差。迭代次数:9、功能评估:10估计使用解算器:FixedStepDiscrete;搜索:lsqnonlin时域数据“静态摩擦系统”。适合估算数据:99.68%消防工程:2.428 e-07, MSE: 2.414 e-07模型的“报告”属性的更多信息。

结论

这个例子展示了如何执行IDNLGREY静态系统的建模。这样的过程基本上是一样的动态系统的建模。