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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker的端口映射_docker swarm 网络

    docker的端口映射_docker swarm 网络docker网络端口映射

    2022年10月7日
    0
  • latex大括号错位显示_LaTeX表格

    latex大括号错位显示_LaTeX表格amsmath中\smash妙用样例-大括号错位显示。原始大括号显示\[\text{机器学习}\begin{cases}\text{~~监督学习~}{\begin{cases}\text{回归算法}\\\text{分类算法}{\begin{cases}\text{生成模型}\\\text{判别模型}\end{cases}}

    2022年10月11日
    0
  • mysql数据库忘记密码时如何修改(本地)「建议收藏」

    mysql数据库忘记密码时如何修改(本地)「建议收藏」mysql数据库忘记密码时如何修改(本地)

    2022年4月24日
    55
  • c语言 obj_obj转json

    c语言 obj_obj转json我是前言看开源代码时,总会看到一些大神级别的代码,给人眼前一亮的感觉,多数都是被淡忘的C语言语法,总结下objc写码中遇到的各类非主流代码技巧和一些妙用:[娱乐向]objc最短的方法声明[C]结构体的初始化[C]三元条件表达式的两元使用[C]数组的下标初始化[objc]可变参数类型的block[objc]readonly属性支持扩展的写法[C]小括号内联复合表达式[娱乐向]奇葩的C

    2022年10月18日
    0
  • spring官方文档 中文_Spring软件

    spring官方文档 中文_Spring软件本文档是对spring官方文档的解读,原文档参见Spring官方文档,本人只是翻译和整理,由于水平有限,部分解读可能不正确,欢迎提出更好的意见和建议或者与我一起完成本次挑战!网页版移步我的临时网页Git传送门1Spring综述1.1jdk环境依赖从SpringFramework5.1开始,Spring需要JDK8+(JavaSE8+),并提供对JDK11LTS的开箱…

    2022年10月20日
    0
  • Angularjs 服务

    Angularjs 服务AngularJS服务(Service):www.runoob.com/angularjs/angularjs-services.htmlAngularJS内建了30多个服务。官网搜索service吧https://docs.angularjs.org/api/ng/service/$window$http是AngularJS应用中最常用的服务。服务向服务器发送请求,应用响应服…

    2022年7月25日
    5

发表回复

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

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