matlab控制倒立摆小车并绘制二维动态效果图
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常见用法汇总,包括绘制二维、三维曲线、圆、读取、保存图片/数据、数值精度、绘制圆、绘制角度等
文章目录 写在前面 一 绘制二维曲线 二 绘制三维曲线 plot3. 三 绘制三维离散点 scatter3() 四 保存图片到本地 五 数值精度 六 字符串拼接 七 将数据保存到txt 八 matla ...
- MATLAB plot函数绘制二维曲线
1.plot函数的基本调用 在MATLAB中,在直角坐标系下绘制二维曲线一般使用plot函数. 基本调用格式: plot(x,y) x,y是长度一致的向量,例如: >> x=0:pi/10 ...
- MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统
在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...
- 倒立摆系统matlab程序,用Matlab完成倒立摆系统的分析与综合.docx
用Matlab完成倒立摆系统的分析与综合 现代控制理论用Matlab完成倒立摆系统的分析与综合 2013/5/23 星期四学号:3201100418杨 博用Matlab完成倒立摆系统的分析与综合一.实 ...
- 基于matlab的倒立摆设计,基于matlab的倒立摆设计.doc
基于matlab的倒立摆设计.doc 摘要IAbstract.II第一章绪论11.1倒立摆的研究背景.11.2国内外现状.21.3应解决的问题和技术要求.21.4工作内容.3第二章MATLAB仿真软件 ...
- 【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
需要源码请点赞关注收藏后评论区留言私信~~~ 直接优化策略 直接优化策略强化学习算法中,根据采用的是确定性策略还是随机性策略,又分为确定性策略搜索和随机性策略搜索两类.随机性策略搜索算法有策略梯度法和 ...
- matlab绘制二维曲线图
matlab绘制二维曲线图 今天,我们来讲一个用matlab绘制二维曲线图 下面直接上代码,会对代码一些部分进行一些讲解 %% 定义函数 x = 0:0.01:2*pi; y1 = sin(x); y ...
- 利用matlab绘制二维均匀流线和向量场
利用matlab绘制二维均匀流线和向量场(向量场彩色箭头,颜色随变量变化) 0前言 1 均匀流线的绘制 2 绘制彩色的短线图 3 绘制彩色的均匀流线 4 运动的彩色箭头流线图 0前言 之前一篇文章ma ...
- matlab模糊控制 论文,基于matlab的倒立摆模糊控制毕业论文报告.doc
基于matlab的倒立摆模糊控制毕业论文报告 (此文档为word格式,下载后您可任意编辑修改!) 智能控制理论及应用 课程设计报告 题 目: 基于matlab的倒立摆模糊控制 院 系: 西北民族大学电 ...
最新文章
- 反向词典_根据描述查找词语
- 计算机视觉常用数据集总结:包括MS COCO、ImageNet、VOC、人脸识别、行人检测等...
- CIO客观评价SAP和用友的差异
- MyBatis之PageHelper分页操作
- linux通过c语言编程访问远程mysql
- 前端框架这么火,还有必要学好原生 JavaScript 吗?
- linux RAC 安装失败完全卸载
- RAID 磁盘阵列详解,RAID分类及优缺点
- blender python编程入门
- 如何理解模块、组件和对象
- linux exchange 账号,使用Linux客户端Thunderbird连接Exchange Server
- oracle日期函数,转换函数
- 域名过期 脚本_域名宝已过期! …还是垃圾?
- python分析红楼梦中人物形象_《红楼梦》三大人物形象分析
- YTU-2324-约瑟夫环
- 开发必装最实用工具软件与网站
- NOIP复习篇———动态规划
- 【原创】给CSDN博客加上腾讯微博
- 【JPCS出版】2022年第三届控制理论与应用国际会议(ICoCTA 2022)
- ADSL 错误代码大全