有手就行?基于MATLAB的倒车仿真系统及改进
Posted kasami_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有手就行?基于MATLAB的倒车仿真系统及改进相关的知识,希望对你有一定的参考价值。
sltbu的讲解和简单改进
毕设或者项目需要倒车仿真展示却束手无策?本文将向你简单介绍sltbu并对其进行一定的改进。读者也可以根据我们的方案往你所预想的方向进行改进。
本文建议基础:基本阅读能力,键盘敲打能力。如果你需要按你的需求更改则还需要一定的m语言的能力和对simulink有一定熟悉程度。
软件配备:MATLAB
1. 简介
sltbu属于MATLAB的Fuzzy工具箱,是一个汽车倒车的模糊控制器。
2. 内部各模块简单介绍
Variable Initialization:参数初始化
Controller1、2:控制函数
Fuzzy Logic Controller:模糊控制器
(三个输入分别为距离、角度1、角度2,根据距离远近选择不同的角度,输出为控制角度)
Truck Kinematics:汽车运动模型
Animation & Human Controller:动画与显示
3. 原有系统存在问题
一是倒车速度恒定,当车距离车位较近但角度较偏时,无法及时调整角度从而停正车。二是由于该系统只允许倒车,当车尾朝向蓝线且距离较近时,不可避免地触线导致系统暂停,我们称这为死区。
4. 解决方案
我与王同学给出的解决方案主要是针对Truck Kinematics(汽车运动模型)进行改进。
这是我们改后的图示。
为了解决问题1,我们选择根据距离远近而改变速度大小实现。通过将后轮中心坐标(x,y)导回前面,算的实时距离并因此为根据选择速度计算公式。
if dis > 50
speed = sqrt(x*x+y*y);
else
if dis>25
speed = exp(sqrt(x*x+y*y)/50);
else
speed = exp(sqrt(x*x+y*y)/100);
end
end
为了解决问题2,我们首先引入全局变量count。设置Data Store Memory,初始值为0。当判断y>4时,即在死区外,count跳转为1,并在这一次倒车中不再跳转回0 。当count=1时,执行上述改进后的倒车。当count=0时,将前进以离开死区,离开死区后再进行倒车。
function u=fcn(x,y,z)
%#codegen
global count;
dis=sqrt(x*x+y*y);
speed=dis;
if y>4
count=1;
end
if count==1
if dis > 50
speed = sqrt(x*x+y*y);
else
if dis>25
speed = exp(sqrt(x*x+y*y)/50);
else
speed = exp(sqrt(x*x+y*y)/100);
end
end
u=z*(-speed/8);
else
u=z*0.1/4;
end
源码地址: https://github.com/Liangyz2019/sltbu-pro
演示视频:https://www.bilibili.com/video/BV1yo4y1174W
“本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/kasami_/article/details/117290645。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。”
以上是关于有手就行?基于MATLAB的倒车仿真系统及改进的主要内容,如果未能解决你的问题,请参考以下文章