matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]

matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]clc;closeall;clearA=[0100;00-1.1760;0001;0018.2930];%设置倒立摆小车控制系统参数B=[0;1;0;-1.667];C=[1000;0010];G=[42.851.04;471.8322.39;0.9443.15;19.17464.64];K=[-9.1841-10.7148-63.8735-15.4258];sim(‘CAR.mdl’);%运行倒立摆小车控制系…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

clc;close all;clear
A = [0 1 0 0;0 0 -1.176 0;0 0 0 1;0 0 18.293 0];%设置倒立摆小车控制系统参数
B = [0; 1 ;0;-1.667];
C =[1 0 0 0;0 0 1 0];
G = [42.85 1.04;471.83 22.39;0.94 43.15;19.17 464.64];
K = [-9.1841 -10.7148 -63.8735 -15.4258];
sim(‘CAR.mdl’);      %运行倒立摆小车控制系统simulink模型’CAR.mdl’

H_CAR = 0.4;         %小车车体高度,单位:m
H_WHEEL = 0.08;      %小车轮子直径,单位:m
L = 1.2;             %倒立摆杆长度,单位:m
N = length(yout.signals.values);%仿真得到的采样数据点个数
LINEWIDTH = 6.0;     %画倒立摆杆的线粗
CARWIDTH = 3.0;      %画车体的线粗
ARROWWIDTH = 2.5;    %画车体行车方向箭头的线粗
%% 
for i=1:N        %FOR循环画出倒立摆小车控制过程的动画   

    y_line = y+L*sin(theta);
    z_line = L*cos(theta)+H_CAR;

%   plot([(y-0.3),(y-0.3),(y+0.3),(y+0.3),(y-0.3)],[H_WHEEL,H_CAR,H_CAR,H_WHEEL,H_WHEEL],’b’,’LineWidth’,CARWIDTH);%画车体
    plot([(y+0.04),(y+0.3),(y+0.3),(y-0.3),(y-0.3),(y-0.04)],[H_CAR,H_CAR,H_WHEEL,H_WHEEL,H_CAR,H_CAR],’b’,’LineWidth’,CARWIDTH);%画车体
    hold on
    plot([y,y],[H_CAR,H_CAR+L+0.2],’–k’,’LineWidth’,0.5);%画垂直虚线
    hold on
    
    %画车体中间的半圆
    r = 0.04; 
    hseta = 0:0.001:pi; 
    yh = y+r*cos(hseta); 
    zh = H_CAR+r*sin(hseta); 
    plot(yh,zh,’b’,’LineWidth’,CARWIDTH); 
    hold on;
    
    %画两个车轮
    yl_circle = y-0.2;
    yr_circle = y+0.2;
    z_circle = H_WHEEL/2;
    r = H_WHEEL/2;
    seta = 0:0.001:2*pi; 
    yyl = yl_circle+r*cos(seta); 
    yyr = yr_circle+r*cos(seta); 
    zz = z_circle+r*sin(seta); 
    plot(yyl,zz,yyr,zz,’b’,’LineWidth’,CARWIDTH); 
    hold on;
    
    plot([y,y_line],[H_CAR,z_line],’r’,’LineWidth’,LINEWIDTH);%画单摆杆
    hold on
    alpha=0:pi/20:2*pi;    %角度[0,2*pi] 
    R=0.05;                   %半径 
    x1=y_line+R*cos(alpha); 
    y1=z_line+R*sin(alpha); 
    plot(x1,y1,’-‘) 
    hold on
    fill(x1,y1,’r’);         %用红色填充
    %plot([y_line],[z_line],’r’,’LineWidth’,LINEWIDTH);%画单摆杆
    hold on
    if i>1 && i<N   %画出表示行车方向的箭头
        if yout.signals.values(i,1) > yout.signals.values(i-1,1)
          plot([(y-0.08),(y+0.08)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y+0.08),(y+0.08)-0.05*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.05*sin(pi/6)],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y+0.08),(y+0.08)-0.05*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.05*sin(pi/6)],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on 
        elseif yout.signals.values(i,1) < yout.signals.values(i-1,1)
          plot([(y-0.08),(y+0.08)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y-0.08),(y-0.08)+0.05*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.05*sin(pi/6)],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y-0.08),(y-0.08)+0.05*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.05*sin(pi/6)],’m’,’LineWidth’,ARROWWIDTH);%画
          hold on   
        end
    end
    plot([(y-1.65),(y+1.65)],[0,0],’b’,’LineWidth’,6)
    hold on   
    plot([(y-1.75),(y-1.65)],[0.1,0],’b’,’LineWidth’,6)
    hold on
    plot([(y+1.75),(y+1.65)],[0.1,0],’b’,’LineWidth’,6)
    hold on   
    plot([(y-1.75),(y-0.3)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2],’g’,’LineWidth’,14)
    hold on
    plot([(y+1.75),(y+0.3)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2],’g’,’LineWidth’,14)
    hold on
    
    if i>1 && i<N   %画出表示行车方向的箭头
        if yout.signals.values(i,1) > yout.signals.values(i-1,1)
            
          plot([(y+1),(y+1.1)-0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y+1),(y+1.1)-0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on 

          plot([(y-1.1),(y-1)-0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y-1.1),(y-1)-0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on   
          
        elseif yout.signals.values(i,1) < yout.signals.values(i-1,1)
            
          plot([(y+1),(y+1.1)+0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y+1),(y+1.1)+0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on   
          
          plot([(y-1),(y-1)+0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2+0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on 
          plot([(y-1),(y-1)+0.2*cos(pi/6)],[(H_CAR+H_WHEEL)/2,(H_CAR+H_WHEEL)/2-0.2*sin(pi/6)],’g’,’LineWidth’,ARROWWIDTH);%画
          hold on   
        end
    end
    
    
    xlabel(‘y(t) / m’), ylabel(‘z(t) / m’),title(‘倒立摆小车二维动态效果图’);
    % ylim([0 2])
    axis equal;  %保持坐标比例协调
    pause(0.5);
   

end
 

matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]

 matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171031.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • S3C2440移植uboot之编译烧写uboot

    S3C2440移植uboot之编译烧写uboot移植环境主机:VMWare–ubuntu16.04开发板:S3C24402440编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2012.04.01.tar.bz2获取uboot进入https://www.denx.de/wiki/U-Boot下载uboot一直往下拉选择如下将下载好的压缩包解压到任意文件夹,并创建sourceinsig…

    2022年6月12日
    37
  • linux永久关闭防火墙命令需要重新加载环境变量吗_linux常用命令关闭防火墙

    linux永久关闭防火墙命令需要重新加载环境变量吗_linux常用命令关闭防火墙第一步:systemctlstopfirewalld.service(暂时关闭防火墙服务,系统重启后防火墙还会打开)第二步:systemctldisablefirewalld.service(通过关闭防火墙服务,开机自动启动,来做到永久关闭防火墙服务)如何查看防火墙状态呢?systemctlstatusfirewalld.service如图所示,就代表关闭成功了…

    2025年9月20日
    5
  • pytest报错_git是什么

    pytest报错_git是什么前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月31日
    7
  • CSS3之opacity属性的简单使用

    CSS3之opacity属性的简单使用什么是opacity?opacity属性设置元素的不透明级别。 怎么使用?&lt;!DOCTYPEhtml&gt;&lt;htmllang="en"&gt;&lt;head&gt;&lt;metacharset="UTF-8"&gt;&lt;title&gt; CSS3之opacity属性的简单使用&lt;/title&gt

    2022年5月9日
    60
  • postman设置环境变量,实现一套接口根据选择的环境去请求不同的url[通俗易懂]

    postman设置环境变量,实现一套接口根据选择的环境去请求不同的url

    2022年2月8日
    47
  • 数据库课程设计:教务管理系统Swing+MySql

    数据库课程设计:教务管理系统Swing+MySql文章目录实验报告主要内容3.2需求分析3.2.1简要叙述系统需求调查的方法1.需求分析的调查方法和流程2,需求调查结果的整理各种图1.业务流程图2.数据流图3.数据字典(截取部分)4.功能模块图5.用例图6.概念设计的基本思想和原理方法7.物理模型界面下载链接实验报告主要内容3.2需求分析3.2.1简要叙述系统需求调查的方法1.需求分析的调查方法和流程①调查学校教务系统的组织结构,列出各…

    2022年5月19日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号