自动泊车的路径动态规划问题研究附Matlab代码

简介: 自动泊车的路径动态规划问题研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

汽车工业经过100多年的发展,汽车技术已向着智能化发展,这将人类从枯燥的汽车驾驶生活中解救出来,也符合未来汽车的发展趋势。自动泊车系统是其中的一个方面。研究自动泊车系统,可以减少驾驶人员的操作负担,降低了驾驶人员的疲劳感及泊车过程中的碰撞和刮擦事故的发生,提高驾驶安全性,具有一定的实际意义。本文致力于研究自动平行泊车系统的控制方法,并通过仿真验证了该方法可以实现平行泊车。针对车辆低速倒车这一运动过程,建立了车辆数学模型。根据分析车辆数学模型,得到能够满足多数情况下的泊车路径。由于自动泊车过程可分解为寻找最佳泊车位置及从最佳泊车位置倒入停车位两个过程,针对这两个过程,分析了无障碍式及有障碍式的泊车路径。

⛄ 部分代码

function guictrl(task)


% ========================================

%   PROGRAM AIM :

%         COMPLEMENTRY TO Navigate.m FILE

% ========================================

%   HOW TO RUN :

%         WILL RUN THROUGH Navigate.m

% ========================================

%   SATVIR SINGH SIDHU, ARUN KHOSLA, JASBIR SINGH SAINI

%   MAY 2009

%   COPYRIGHT RESERVED

% ========================================

sys = get(gcf, 'UserData');

FigNum = watchon;

XLoc = findobj(gcf, 'Tag', 'XLoc');

YLoc = findobj(gcf, 'Tag', 'YLoc');

VAng = findobj(gcf, 'Tag', 'VAng');

TAng = findobj(gcf, 'Tag', 'TAng');

Velo = findobj(gcf, 'Tag', 'Velo');

Fou = findobj(gcf, 'Tag', 'Fou');

data.L = 30;

data.W = 13;

data.X = str2num(get(XLoc, 'String'));         % X-Coordinate of Reference Point

data.Y = str2num(get(YLoc, 'String'));         % Y-Coordinate of Reference Point

data.V = str2num(get(VAng, 'String'));        % Vehicle Angle

data.T = str2num(get(TAng, 'String'));         % Front Tyre Angle

data.v = str2num(get(Velo, 'String'));          % Vehicle Velocity

data.F = str2num(get(Fou, 'String'));           % Footprint of Uncertainty


VRef = findobj(gcf, 'Tag', 'VRef');

FTyr = findobj(gcf, 'Tag', 'FTyr');

RTyr = findobj(gcf, 'Tag', 'RTyr');

VBnd = findobj(gcf, 'Tag', 'VBnd');


% [VRef FTyr RTyr VBnd]

dsp = [get(VRef, 'Value') get(FTyr, 'Value') get(RTyr, 'Value') get(VBnd, 'Value')];

watchoff;


if task(1) == '#'

   % CLOSE BUTTON PRESSED

   if strcmp(task, '#Clos')

       delete(gcf)


       % HELP BUTTON PRESSED

   elseif strcmp(task, '#SPlots')

       FigNum = watchon;

       NVS = findobj(gcf, 'Tag', 'NSpace');    % Handle for Navigation Space

       hgsave(NVS, 'NVplots');

       watchoff;


       % CLEAR BUTTON PRESSED

   elseif strcmp(task, '#Clr')

       cla


       % X LOCATION CHANGED

   elseif strcmp(task, '#Xloc')

       FigNum = watchon;

       XLoc = findobj(gcf, 'Tag', 'XLoc');

       Xloc = str2num(get(XLoc, 'String'));

       if Xloc<0

           Xloc = 0;

           set(XLoc, 'String', num2str(Xloc));

       elseif Xloc>200

           Xloc = 200;

           set(XLoc, 'String', num2str(Xloc));

       end

       data.X = Xloc

       vehicle(data, dsp);

       watchoff;


       % Y LOCATION CHANGED

   elseif strcmp(task, '#Yloc')

       FigNum = watchon;

       YLoc = findobj(gcf, 'Tag', 'YLoc');

       Yloc = str2num(get(YLoc, 'String'));

       if Yloc<0

           Yloc = 0;

           set(YLoc, 'String', num2str(Xloc));

       elseif Yloc>200

           Yloc = 200;

           set(YLoc, 'String', num2str(Xloc));

       end

       data.Y = Yloc

       vehicle(data, dsp);

       watchoff;


       % VEHICLE ANGLE CHANGED

   elseif strcmp(task, '#Vang')

       FigNum = watchon;

       VAng = findobj(gcf, 'Tag', 'VAng');

       V = str2num(get(VAng, 'String'));

       if V<-90

           V = -90;

           set(VAng, 'String', num2str(V));

       elseif V>270

           V = 270;

           set(VAng, 'String', num2str(V));

       end

       data.V = V

       vehicle(data, dsp);

       watchoff;


       % TYRE ANGLE CHANGED

   elseif strcmp(task, '#Tang')

       FigNum = watchon;

       TAng = findobj(gcf, 'Tag', 'TAng');

       T = str2num(get(TAng, 'String'));

       if T<-35

           T = -35;

           set(TAng, 'String', num2str(T));

       elseif T>35

           T = 35;

           set(TAng, 'String', num2str(T));

       end

       data.T = T

       vehicle(data, dsp);

       watchoff;


       % VEHICLE VELOCITY CHANGED

   elseif strcmp(task, '#Vel')

       FigNum = watchon;

       Velo = findobj(gcf, 'Tag', 'Velo');

       v = str2num(get(Velo, 'String'));

       data.v = v;

       watchoff;


       % TRACE VEHICLE REFERENCE = Y/N

   elseif strcmp(task, '#VRef')

       FigNum = watchon;

       VRef = findobj(gcf, 'Tag', 'VRef');

       VR = get(VRef, 'Value');

       watchoff;


       % TRACE FRONT TYRES = Y/N

   elseif strcmp(task, '#FTyr')

       FigNum = watchon;

       FTyr = findobj(gcf, 'Tag', 'FTyr');

       FT = get(FTyr, 'Value');

       watchoff;


       % TRACE REAR TYRES = Y/N

   elseif strcmp(task, '#RTyr')

       FigNum = watchon;

       RTyr = findobj(gcf, 'Tag', 'RTyr');

       RT = get(RTyr, 'Value');

       watchoff;


       % TRACE VEHICLE BOUNDARY = Y/N

   elseif strcmp(task, '#VBnd')

       FigNum = watchon;

       VBnd = findobj(gcf, 'Tag', 'VBnd');

       VB = get(VBnd, 'Value');

       watchoff;


       % FOU MATRIX

   elseif strcmp(task, '#Fou')

       FigNum = watchon;

       Fou = findobj(gcf, 'Tag', 'Fou');

       data.F = str2num(get(Fou, 'String'));

       if length(data.F) ~= (length(sys.Input)+length(sys.Output))

           Str = '0';

           for i = 2:(length(sys.Input)+length(sys.Output))

               Str = strcat(Str, ' 0');

           end

           set(Fou, 'String', strcat('[', Str, ']'));

       end

       watchoff;

   end

   % START NAVIGATION

else strcmp(task, 'Sim')

   F = data.F;

   sys2 = ST1toIT2(sys, F);

%     ========================

   sys2.Name='SecondFLS';           % CHANGING THE FILENAME

   assignin('base', 'it2fls', sys2);   % SENDING IT2 FLS STRUCTURE INTO WORKSPACE

   wrgfs(sys2);                                  % WRITING GFS FILE

%     ========================

   for i=1:1000

       TF = 5; % For LPA

%         TF = 1; % For CCA

       data.T = TF*runIT2([data.X data.V], sys2);

       ndata = LPAlgo(data);

%         ndata = CCAlgo(data);

       if ndata.Y>=200

           break;

       end

       data = ndata;

        pause(0.0001);        

   end

end

⛄ 运行结果

⛄ 参考文献

[1]曲龙. 基于MATLAB的自动泊车系统仿真研究[D]. 沈阳理工大学, 2013.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
编解码 算法 安全
【总结整理】【路径规划】- 浅谈路径规划算法
# 0 序 本文将从两个大块浅谈一下路径规划算法,第一部分是规划算法本身,第二部分是地图。 ---- howe # 1 前言   移动一个简单的物体(object)看起来很容易,而路径搜索却比较复杂。那为什么涉及到路径搜索就产生麻烦了呢?考虑以下情况: ![image.png](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/
20742 4
【总结整理】【路径规划】- 浅谈路径规划算法
|
12月前
GDPR的发展历程
【10月更文挑战第7天】GDPR的发展历程
588 7
|
10月前
|
数据可视化 Python
使用OpenPyXL在Excel中创建折线图:数据可视化入门
本文介绍了如何使用Python的`openpyxl`库在Excel中创建折线图,包括安装库、加载Excel文件、定义数据范围、设置图表属性(如标题、轴标签)及保存文件等步骤,适合数据可视化初学者。
394 15
|
机器学习/深度学习 数据可视化 计算机视觉
可视化VIT中的注意力
ViT中最主要的就是注意力机制,所以可视化注意力就成为了解ViT的重要步骤,所以我们这里介绍如何可视化ViT中的注意力
1086 0
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
321 2
|
存储 PyTorch 语音技术
Transformers 4.37 中文文档(七十七)(2)
Transformers 4.37 中文文档(七十七)
133 0
A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.0 as it may crash. To support
本文讨论了在NumPy 2.0.0版本更新后可能出现的兼容性问题,并提供了通过降级NumPy版本至1.x的解决方法,以支持尚未更新的模块或库。
|
监控 网络协议 JavaScript
WebSocket技术详解与应用指南
WebSocket是全双工TCP协议,解决HTTP的单向通信问题,允许服务器主动推送信息。本文档介绍了WebSocket的基本概念、工作原理(基于HTTP握手,通过帧进行数据通信)、应用场景(实时聊天、在线游戏、数据监控等)和实现方法(客户端使用JavaScript API,服务器端有多种编程语言库支持)。学习WebSocket能提升Web应用的实时性和交互性。
2058 1
|
存储 Shell Linux
【Shell 命令集合 系统管理 】Linux 修改用户组的属性 groupmod命令 使用指南
【Shell 命令集合 系统管理 】Linux 修改用户组的属性 groupmod命令 使用指南
358 0
【Shell 命令集合 系统管理 】Linux 修改用户组的属性 groupmod命令 使用指南
|
机器学习/深度学习 数据采集 算法
Python实现xgboost分类模型(XGBClassifier算法)项目实战
Python实现xgboost分类模型(XGBClassifier算法)项目实战