系统建模
题目: 假设:
1. 自行车车轮的转动惯量,质量和宽度忽略不计。滚动过程无侧向和横向滑动; 2. 自行车平衡时以匀速率前进,车体在前进中遇到小扰动而偏离平衡位置; 3. 将连接前后轮的三脚架视为其质量集中在其质心,同时把前后轮胎视为质心
在车轮圆心的圆环;
4. 自行车在水平面内运动,后轮的滚动速度为常量。
行驶中的自行车可以近似为倒立摆模型,自行车在运行过程中的各视图如图1和图2所示。
Fmg 图1  车体正视图
图2 车体右侧视图和俯视图
图中各符号参数及相应值如下:
表1 各符号参数及相应值
物理意义 车体质量 后轮着地点到车体质心距离 前轮着地点到车体质心距离 质心高度 车把转动惯量 车体转动惯量 受扰动后车体偏离垂直方向角度 后轮速度 转弯速度 自行车转弯轨迹中心 表示符号 m 值 18kg 0.81m 1.17m 0.7m 0.153kg•m2 12.0 kg•m2     b a h Ih I  v0 v o 车后轮转弯时的曲率半径 质心运动路径瞬时曲率半径 车体质心的夹角 前轮中心的夹角 输入量 输出量 r0       r     假定无侧滑由俯视图车体的运行轨迹由前后距离和车把的转角决定
br0tanrsinar0tan
  是可控制量
v0r0v0atanvrddt
实际情况中前后轮及质心速度不同,此处假定三者相等,由于瞬间曲率半径远大于前后轮着地点距离a,r0r,质心速度v满足
vrddtbv0tanasinba
vyvsinv0tan车体转弯时,作用于质心的离心力
Fmv2rcosm2dvydtbv02m(v0tanad
)acosdt重力分量:mgsin
ddt22ImghsinFhcos
问题:
1) 建立自行车运动方程,输入量为,输出量为。
2) 在建好的模型基础上,建立状态空间方程,x1,x2。利用MATLAB
画出向量场,指出系统的平衡点。
3) 在平衡点附近,近似得到线性化之后的模型,写出系统的传递函数。 4) 利用李雅普诺夫第二方法分析系统的平衡点特性。
5) 利用离散化公式,将系统离散化并化为最小二乘形式rH。 6) 假定路面具有未知摩擦力f,设计此时的最小二乘格式。 7)
f5时,用
MATLAB编程,辨识得到f的估计值,递推算法实现。
ck(BkA)0,分析稳定性条8) 假定搬动车把的控制率为k,件,求出维持系统平衡的最小速度v0,解释为什么较快速度下易维持平衡。
(1)建立模型
根据假设条件,对自行车车体进行受力分析,可以得到自行车受到的离心力F,
Fm(v0tana2bv02dacosdt)                (1.1)
取与偏离方向相反的方向为正方向,得运动方程如下
Iddt22Fhcosmghsin                    (1.2)
将(1.1) 带入 (1.2) 有
v0tana2bv02dacosdtgtanId22mhcosdt             (1.3)
将b=0.81,a=1.17,Ih=0.153,I=12.0,m=18kg,h=0.7带入(1.3)得
0.85v0tan0.692v02dcosdt10tan0.96dcosdt22            (1.4)
上式即为自行车的运动方程,其中输入量为,输出量为。
(2)确定平衡点
在数学模型基础上,建立状态空间方程如下
.x1x2     (2.1) .v0d210.42sinx1x20.cosx1v0tan0.72cosx12cosdt
当输入量为零时,状态方程可化简如下
.xx21..x210.42sinx1                      (2.2)
利用matlab仿真向量场 程序代码为:
x0=-3.6:.5:3.7; y0=-3.7:.5:3.7;
[x1,x2]=meshgrid(x0,y0);
d=sqrt((x2.^2)+(-10.42*sin(x1)).^2); u=x2./d;
v=(-10.42*sin(x1))./d; hold on
quiver(x1,x2,u,v,0.5,'b');
向量场仿真结果为:
图1
系统的平衡点为漩涡的中心,共有3处。根据方程求解可知系统的平衡点分别为(0,0)、0,由实际情况可知,自行车平衡点只能取0,即平衡点只有一个(0,0)。
(3)在平衡点处,因为
由
cos1,sin,tan,cos1                    得到
ddt22mghI总mhv20I总amhbvI总a0ddt                      (3.1)
进行拉普拉斯变换得传递函数为:
G(s)mhbvsmhv002                   (3.2)
(s)(s)2I总asmghI总(4)构造正定函数
22  V1(x)x1x2                         (4.1)
V1(x)2x   )       (4.2) x22x2x22x(1x10.42 s 1xi n11在平衡点处,近似等于18.84x1x2
...
,故当x1,x2异号时V(x)为正,系统不稳定;
.1当他们同号时.V1(x)为负,系统稳定。
(5)因为
dd22mv0h0dtdt2mghmhvIaIaI                                 所以离散化后得
(k+2)2(k+1)(k)2(k)]T211.06(k)0.v0(k)0.72v0[(k+1)T   取T=0.2可进一步得
(k+2)2(k+1)0.5576(k)+(0.0356v20-0.144v0)(k)0.144v0(k+1)   (k)2(k1)0.5576(k2)+(0.0356v20-0.144v0)(k2)0.144v0(k-1)令
H[(k1),k(2),k(1k), (                            [2,0.5576,v020.144v35vT0,0.00   0  . 1 4  4   ]    则
(k)H                        (6)当有常摩擦力f时,其运动方程如下
2Iddt2Fhcosmghsinfhcos              将F带入(6.1)有
22mv0tandambv0acos2dtmgtanIdhcosdt2f  将其线性化,得
2mv0bv0dId2amadtmghdt2f           带入相关数据,则(6.3)可化简为
(5.1)
5.2)
5.3)
(5.4)
5.5)
5.6)
5.7)
(6.1)
(6.2)
(6.3)
(  (  (((
0.085v0.069v020ddt0.096ddt22f             (6.4)
再将其离散化,可得
(k)0.096(k2)0.085v0(k)0.069v0(k1)0.006f    (6.5)
2进而,有
(nk)0.096(nk2)0.085v0(nk)0.069v0(nk1)0.006fe(nk)2(6.6)
令
k[(nk2),(nk),(nk1),1]           (6.7) TT[0.096,0.085v0,0.069v0,0.006f]
2             (6.8)
则
1T2TNTN(n1)(n)(nN2)(n1)(n2)(nN1)1(n1)1       (6.9) (nN1)1(n)yNy(n1)y(n2)                        (6.10)
y(nN)则此时的最小二乘格式为
T1TN(NN)NyN                   (6.11) 
(7)用递归最小二乘法辨识得到f估计值,程序流程图如下
θ(k)给被辨识参数θ和p赋初值输入n组初始数据计算K(k)分离参数计算θ(k)
画出被辨识参数的各次递推估计值的图形计算P(k)画出被辨识参数的相对误差的图计算被辨识参数的相对变化量停N参数收敛满足要求Y图2
令f5用matlab编程辨识得到f的估计值(递推方法实现) 已知f5N 代入数据得:
(k)(k1),(k2),(k1),(k2),0.00922,0.6257,1.4355,2.109,5
T递推算法的matlab的程序见附录 运行结果如下:
0.03 0.02  0.01  0  -0.01 -0.02  -0.030
Parameter Identification with Recursive Least Squares Method543Identification Precision5000-500210-1-2000-2-3-2500051015-1000-150051015051015      输入序列图               递推最小二乘参数辨识图                辨识精度图
(8)由题知
vrkddt                       (8.1)
所以
vrk进而可得
vCkv(BkA)v0
....ddt22                      (8.2)
(8.3)
进行拉氏变换得
sv(s)Cksv(s)(BkA)v(s)02              (8.4)
由劳斯判据可知
kAB                           (8.5)
ddtAdBdt所以
ddtkddt,vrk,v              (8.6)
即维持系统平衡的最小速度为
AdBdt
又由F知,当v越大时,离心力越大,因此以较快速度行驶易维持平衡。
附录1
递推算法辨识f的程序
clear                            %清理工作间变量 L=15;                           % M序列的周期
f=5;
y1=1;y2=1;y3=1;y4=0;             %四个移位寄存器的输出初始值 for i=1:L;                        %开始循环,长度为L
x1=xor(y3,y4);               %第一个移位寄存器的输入是第三个与第四个移位寄存器的输出的“或”
x2=y1;      %第二个移位寄存器的输入是第一个移位寄存器的输出     x3=y2;      %第三个移位寄存器的输入是第二个移位寄存器的输出     x4=y3;      %第四个移位寄存器的输入是第三个移位寄存器的输出
y(i)=y4;     %取出第四个移位寄存器的幅值为\"0\"和\"1\"的输出信号,即M序列  if y(i)>0.5,u(i)=-0.03; %如果M序列的值为\"1\辨识的输入信号取“-0.03”     else u(i)=0.03;   %如果M序列的值为\"0\辨识的输入信号取“0.03”     end            %小循环结束
y1=x1;y2=x2;y3=x3;y4=x4;         %为下一次的输入信号做准备 end                             %大循环结束,产生输入信号u  figure(1);                        %第一个图形
stem(u),grid on              %显示出输入信号径线图并给图形加上网格 z(2)=0;z(1)=0;               %设z的前两个初始值为零                                            %v=randn(15,1); for k=3:15;                  %循环变量从3到15
z(k)=2*z(k-1)+0.6257*z(k-2)+1.4355*u(k-1)+2.109*u(k-2)-0.0092*f;          %输出采样信号     end
%RLS递推最小二乘辨识
c0=[0.001 0.001 0.001 0.001 0.001]';  %直接给出被辨识参数的初始值,即一个充分小的实向量
p0=10^6*eye(5,5);            %直接给出初始状态P0,即一个充分大的实数单位矩阵 E=0.000000005;              %取相对误差E=0.000000005 c=[c0,zeros(5,14)];          %被辨识参数矩阵的初始值及大小 e=zeros(5,15);              %相对误差的初始值及大小 for k=3:15;                %开始求K  h1=[-z(k-1),-z(k-2),u(k-1),u(k-2) -0.0092]';
x=h1'*p0*h1+1;
x1=inv(x);                     %开始求K(k)
k1=p0*h1*x1;                  %求出K的值     d1=z(k)-h1'*c0; c1=c0+k1*d1;     %求被辨识参数c
e1=c1-c0;           %求参数当前值与上一次的值的差值
e2=e1./c0;           %求参数的相对变化
e(:,k)=e2;      %把当前相对变化的列向量加入误差矩阵的最后一列            c0=c1;         %新获得的参数作为下一次递推的旧参数
c(:,k)=c1;      %把辨识参数c 列向量加入辨识参数矩阵的最后一列      p1=p0-k1*k1'*[h1'*p0*h1+1];      %求出 p(k)的值     p0=p1;                         %给下次用
if e2<=E break;           %如果参数收敛情况满足要求,终止计算     end                     %小循环结束 end                         %大循环结束
c,e                  %显示被辨识参数及其误差(收敛)情况 %分离参数 a1=c(1,:);  a2=c(2,:); b1=c(3,:); b2=c(4,:);  ff=c(5,:) ea1=e(1,:);  ea2=e(2,:);  eb1=e(3,:); eb2=e(4,:);
eff=e(5,:);
figure(2);                     %第二个图形
i=1:15;                       %横坐标从1到15
plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':' ,i,ff,'b')   %画出a1,a2,b1,b2的各次辨识结果 title('Parameter Identification with Recursive Least Squares Method') %图形标题 figure(3);                     %第三个图形
i=1:15;                       %横坐标从1到15
plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:',i,eff,'b') %画出a1,a2,b1,b2的各次辨识结果的收敛情况
title('Identification Precision')       %图形标题