有手就行?基于MATLAB的倒车仿真系统及改进

Posted kasami_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有手就行?基于MATLAB的倒车仿真系统及改进相关的知识,希望对你有一定的参考价值。

sltbu的讲解和简单改进

毕设或者项目需要倒车仿真展示却束手无策?本文将向你简单介绍sltbu并对其进行一定的改进。读者也可以根据我们的方案往你所预想的方向进行改进。

本文建议基础:基本阅读能力,键盘敲打能力。如果你需要按你的需求更改则还需要一定的m语言的能力和对simulink有一定熟悉程度。

软件配备:MATLAB

1. 简介

sltbu属于MATLAB的Fuzzy工具箱,是一个汽车倒车的模糊控制器。
打开sltbu

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的倒车仿真系统及改进的主要内容,如果未能解决你的问题,请参考以下文章

[有手就行]filebeat零基础安装教程

[有手就行]filebeat零基础安装教程

超超超详细mysql下载安装攻略(有手就行)

vscode配置c++环境竟然是有手就行 !¿?!

多态?那不有手就行

C语言入门,有手就行老铁