210 likes | 526 Views
系统辨识. 2011-2012 学年第二学期第一讲. 王国利 信息科学与技术学院 中山大学. 课程安排. 时间和学时安排 - 课时 : 18 X 3 学时 - 讲课 : 2 X 15 周 ( 周五 4-5 节 , C104 ) - 实践 : 2 X 7 周 ( 双周二 8-9 节双 , 实验教学中心 B201) - 课件 : http://human-robot.sysu.edu.cn/course/sysid12.htm - 答疑 : isswgl@mail.sysu.edu.cn 成绩评定 - 参与教学 : 10%
E N D
系统辨识 2011-2012学年第二学期第一讲 王国利 信息科学与技术学院 中山大学
课程安排 时间和学时安排 - 课时: 18 X 3 学时 - 讲课: 2 X 15周(周五4-5节, C104) - 实践: 2 X 7周(双周二8-9节双, 实验教学中心B201) - 课件: http://human-robot.sysu.edu.cn/course/sysid12.htm - 答疑: isswgl@mail.sysu.edu.cn 成绩评定 - 参与教学: 10% - 课程实践: 30% - 课程考试: 60%
系统辨识是什么? 任务和目的 借助 实验数据 建立动态系统的 数学模型
系统的知识 信号与系统 以飞机为例 强风/ 涡流 副翼/ 升降舵 姿态/ 位置
SISO系统 连续系统离散化 采样周期:h
动态系统模型 差分方程 动态: 变量过去和当前的值影响到未来的值 y(t) – 1.5y(t –T)+ 0.7y(t – 2T)= 0.9u(t – 2T)+ 0.5u(t – 3T) y(t) = 1.5y(t –T)- 0.7y(t – 2T)+ 0.9u(t – 2T)+ 0.5u(t – 3T) 参数: 1.5, -0.7, 0.9, 0.5 时滞: 输出T, 2T两项,输入2T, 3T两项 阶数: 输出和输入的时滞项数
模型性质 脉冲响应形式 y(k) =i=0,kg(i)u(k− i)+v(k) {g(i)}: 系统的脉冲响应序列 阶跃响应 y(k) =i=0,kg(i)+v(k) 频域响应: 正旋信号输出的幅值增益和相位偏移 分别对应Bode图
线性模型 频域形式 Z-变换: F(z) =i=0,∞f(i)z−i Y(z) =G(z)U(z)+H(z)V(z) G: 系统传递函数 H: 干扰传递函数 状态方程 x(t+1)=Ax(t)+Bu(t)+Ke(t) y(t)=Cx(t)+Du(t)+e(t)
若干信号的统计量 均值和方差 {s(k)} = {s(0), s(1), ...s(N)} 均值 协方差
做一个练习 任务:在MATLAB环境下,生成两个随机序列{S(k)} 和{R(k)} ,长度1000 >> S = 3*randn(1000,1)+10; >> R = 6*randn(1000,1)+20; >> mS = mean(S) >> mR = mean(R) >> covS = cov(S) >> covR = cov(R) >> Z = [S R]; >>covZ = cov(Z)
模型与系统 控制设计 预测 (e.g. 天气预报) 信号处理(e.g. 消除回声) 系统仿真 (e.g. 模拟核爆) 故障诊断 (e.g. 危险物质泄漏检测)
辨识的基本思想 基本环节 候选模型集 辨识准测 辨识算法
实例 干扰的困扰 G(s)=1/(0.25s2+0.33s + 1) 噪声方差为 0.001
MATLAB初识 DC Motor Control R = 2.0; % Ohms L = 0.5; % Henrys Km = 0.1; Kb = 0.1; % torque and back emf constants Kf = 0.2; % Nms J = 0.02; % kg.m^2/s^2 基尔霍夫定律 (Ls+R)ia+kb=va 牛顿第二定律 (Js+kf)=kmia,
MATLAB初识(续) 阶跃响应 >> h1 = tf(Km,[L R]); % armature >> h2 = tf(1,[J Kf]); % eqn of motion >> dcm = ss(h2) * [h1 , 1]; % w = h2 * (h1*Va + Td) >> dcm = feedback(dcm,Kb,1,1); % close back emf loop >>stepplot(dcm(1))
MATLAB初识(续) 前馈控制 >> Kff = 1/dcgain(dcm(1)) >> t= 0:0.1:15; >> Td = -0.1 * (t>5 & t<10); % load disturbance >> u = [ones(size(t)) ; Td]; % w_ref=1 and Td >> cl_ff = dcm * diag([Kff,1]); % add feedforward gain >> set(cl_ff,'InputName',{'w_ref','Td'},'OutputName','w'); >> h = lsimplot(cl_ff,u,t); >> title('Setpoint tracking and disturbance rejection') >> legend('cl\_ff') % Annotate plot >> line([5,5],[.2,.3]); line([10,10],[.2,.3]); >> text(7.5,.25,{'disturbance','T_d = -0.1Nm'},... 'vertic','middle','horiz','center','color','r');
MATLAB初识(续) 前馈的控制结果
MATLAB初识(续) 反馈控制 >> h = rlocusplot(tf(1,[1 0]) * dcm(1)); >> setoptions(h,'FreqUnits','rad/sec'); >> set(gca,'Xlim',[-15 5],'Ylim',[-15 15]);
MATLAB初识(续) >> K = 5; >> C = tf(K,[1 0]); % compensator K/s >> cl_rloc = feedback(dcm * append(C,1),1,1,1); >> h = lsimplot(cl_ff,cl_rloc,u,t); >> set(cl_rloc,'InputName',{'w_ref','Td'},'OutputName','w'); >> title('Setpoint tracking and disturbance rejection') >> legend('feedforward','feedback w/ rlocus','Location','NorthWest')
MATLAB初识(续) 反馈的控制结果