• wallehachi
    了解作者
  • matlab
    开发工具
  • 6KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 14
    下载次数
  • 2016-03-15 16:44
    上传日期
控制系统课程设计倒立摆matlab仿真代码,分别用传递函数法和状态空间法对倒立摆进行数学建模,使用PID控制算法,最优控制算法分别进行控制仿真
inverted-pendulum.zip
  • 倒立摆
  • lqr1.m
    1.1KB
  • trans.m
    1KB
  • state.m
    1.5KB
  • polyadd.m
    329B
  • pid2.m
    914B
  • pid1.m
    1.3KB
  • test.m
    2.5KB
  • test2.m
    1.1KB
内容介绍
clear all; close all; clc; M = 1.096; %小车质量 m = 0.109; %摆杆质量 b =0.1; %小车摩擦系数 I = 0.0034; %摆杆惯量 g = 9.8; % 重力加速度 L = 0.25; %摆杆转动轴心到杆质心的长度 T = 0.005; %采样时间 % M = 0.5; %小车质量 % m = 0.2; %摆杆质量 % b =0.1; %小车摩擦系数 % I = 0.006; %摆杆惯量 % g = 9.8; % 重力加速度 % L = 0.3; %摆杆转动轴心到杆质心的长度 % T = 0.005; %采样时间 %---------------------begin--------------------------- % %传递函数法 % %整理得到的传递函 % %输入:u--被控对象的输入力 % %输出:phi--摆杆摆角(摆杆与垂直向上方向的夹角) % % PHI(s) (m*L/q)*s^2 % % G1(s) = ---------- = ---------------------------------------------------------- % % U(s) s^4+[b*(I+m*L^2)/q]*s^3-[(M+m)*m*g*L/q]*s^2-[b*m*g*L/q]*s q = (M+m)*(I+m*L^2)-(m*L)^2; %传递函数中分母系数的分母 num = [m*L/q 0 0] den = [1 b*(I+m*L^2)/q -(M+m)*m*g*L/q -b*m*g*L/q 0] %计算显示传递函数的极点p [r, p, k]=residue(num,den); s = p %求传递函数的脉冲响应并显示 t = 0:T:5; impulse(num,den,t); axis([0 3 0 100]); hold on; legend('摆角'); %求传递函数的阶跃响应并显示 figure; step(num,den,t); axis([0 10 0 100]); %---------------------end--------------------------- %---------------------begin--------------------------- %状态空间法 %整理得到的状态空间方程 %输入: %输出: % X'= A*X + B*u % Y = C*X + D*u % 其中: % |x' | |0 1 0 0||x| | 0 | % |x'' | = |0 -(I+m*L^2)*b/p m^2*g*L^2/p 0||x'| + |(I+m*L^2)/p|u % |phi' | |0 0 0 1||phi| | 0 | % |phi''| |0 -m*L*b/p m*g*L*(M+m)/p 0||phi'| | m*L/p | % |x | |x | % |x| |1 0 0 0||x' | |x' | |0| % Y = |phi| = |0 0 1 0||phi | + |phi | + |0|u % |phi'| |phi'| p = I*(M+m)+M*m*L^2; %状态空间方程中系数矩阵的分母 A = [0 1 0 0; 0 -(I+m*L^2)*b/p m^2*g*L^2/p 0; 0 0 0 1; 0 -m*L*b/p m*g*L*(M+m)/p 0] B = [ 0; (I+m*L^2)/p; 0; m*L/p ] C = [1 0 0 0; 0 0 1 0 ] D = [0; 0] %求开环系统的阶跃响应并显示 t = 0:T:5; U = ones(size(t)); [Y,X] = lsim(A,B,C,D,U,t); hold on; plot(t,Y(:,1),'r'); hold on; plot(t,Y(:,2),'c'); % axis([0 3 0 100]); %---------------------end---------------------------
评论
    相关推荐
    • 倒立摆.zip
      设计控制算法让倒立摆稳定,
    • 倒立摆系统设计.zip
      这是用matlab编写的倒立摆系统的模型仿真
    • 二级倒立摆.rar
      模糊控制实现二级倒立摆,已验证可实现。希望能给大家带来帮助
    • 倒立摆控制
      倒立摆系统的模糊控制和LQR控制,对两种方法进行对比
    • 倒立摆.zip
      倒立摆,Inverted Pendulum ,是典型的多变量、高阶次 ,非线性、强耦合、自然不稳定系统。倒立摆系统的稳定控制控制理论中的典型问题 ,在倒立摆控制过程中能有效反映控制理论中的许多关键问题 ,如非线性问题...
    • inverted-pendulum:倒立摆问题的强化学习解决方案的调查
      给定特定的倒立摆系统,解决问题就等于选择使用哪种传感器,可以选择制定近似于所涉及物理的确定性或随机模型,最重要的是找出有效的控制策略。 它是控制理论和动力学中的经典问题,可以作为开发实时控制算法的良好...
    • pid控制器设计代码matlab-Robust-Control-of-a-Inverted-Pendulum:可靠的倒立摆控制
      可靠的倒立摆控制 在这里,作为一个交流项目的一部分,在MATLAB中创建并仿真了许多控制器,例如PID,模糊逻辑和鲁棒控制器以及模糊逻辑控制器。要运行仿真,请首先提取zip文件的所有组件,以查看zip文件的仿真。 PID...
    • 倒立摆控制matlab程序
      一级倒立摆控制matlab程序:倒立摆的线性状态反馈控制
    • 倒立摆最优二次型控制matlab代码
      倒立摆最优二次型控制matlab代码,.m文件,含最优控制器设计,动画仿真。基本的实现代码,可以在此基础上完成自己所需的功能。
    • 倒立摆1.zip
      关于倒立摆在无人车方面的应用及代码源码,很完整