二级倒立摆LQR控制Matlab

  • W0_713511
    了解作者
  • 342.1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 1
    下载次数
  • 2022-04-21 22:56
    上传日期
二级倒立摆LQR控制,Multibody建立二级倒立摆模型,根据力学方程在Matlab实现线性化,建立状态空间方程,根据LQR计算反馈矩阵,在Simulink中连接模块实现控制和可视化。
二级倒立摆.zip
  • 二级倒立摆.png
    161.2KB
  • Copy_of_InPen_2st.slx
    46.7KB
  • main1.m
    1.5KB
  • 力学等式.png
    115.6KB
  • 二级倒立摆1.png
    32.6KB
  • Copy_of_InPen_2st.slxc
    5.6KB
内容介绍
clear, clc, close all %% 初始条件 M0 = 1;% 小车质量 m1 = 0.2;% 下摆质量 m2 = 0.2;% 上摆质量 L1 = 0.15;% 下摆转动轴心到质心距离 L2 = 0.2;% 上摆转动轴心到质心距离 L = 0.3;% 下摆转动轴心到上摆转动轴心距离 kF = 10;% 小车阻尼系数 kT1 = 0.01;% 下摆杆阻尼系数 kT2 = 0.01;% 上摆杆阻尼系数 J1 = 0.005;% 下摆转动惯量 J2 = 0.005;% 上摆转动惯量 d = 0.03;% 摆杆横截面尺寸 g = 9.806;% 重力加速度 % L = 2*L1;% 下摆转动轴心到上摆转动轴心距离 % G0 = 1; kX = 1; kTh = 1; G0 = 1; kTh = 1; kX = 1; theta1 = 0.05;% 下摆初始角度 theta2 = 0;% 下摆初始角度 %% 状态矩阵 M = [M0+m1+m2 m1*L1+m2*L m2*L2 m1*L1+m2*L J1+m1*L1^2+m2*L^2 m2*L*L2 m2*L2 m2*L*L2 J2+m2*L2^2]; G = [G0; 0; 0]; F = [kF 0 0 0 kT1+kT2 -kT2 0 -kT2 kT2]; N = [0 0 0 0 -(m1*L1+m2*L)*g 0 0 0 -m2*g*L2]; % A21 = -M\N; % A22 = -M\F; % B2 = M\G; T = [1 0 0 0 1 0 0 -1 1]; % inv(T) A21 = -T*(M\N)/T; A22 = -T*(M\F)/T; B2 = T*(M\G); A = [zeros(3) eye(3) A21 A22]; B = [zeros(3,1); B2]; C = diag([kX kTh kTh 1 1 1]); D = zeros(6,1); x0 = [0; theta1; theta2; 0; 0; 0]; rank([B A*B A^2*B A^3*B A^4*B A^5*B]) rank([C C*A C*A^2 C*A^3 C*A^4 C*A^5]) %% lqr R = 0.1; Q = diag([100 300 500 100 300 500]); [K,S,p] = lqr(A,B,Q,R); % p0 = [-3+2i -3-2i -6 -7 -8 -9]; % K = place(A,B,p0); eig(A) eig(A-B*K) open_system('Copy_of_InPen_2st'); sim('Copy_of_InPen_2st')
评论
    相关推荐