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

news/2024/4/19 17:02:24/文章来源:https://blog.csdn.net/matlab_dingdang/article/details/127629595

✅作者简介:热爱科研的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电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_410397.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【附源码】计算机毕业设计java支持协作知识建构的Python程序设计课程学习活动平台设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

iPhone通讯录如何完整导入到新手机

概要&#xff1a;iPhone通讯录如何完整导入到新手机&#xff1f;在此部分中&#xff0c;我们将示范几个从iPhone转移通讯录到另一台iPhone的选项。其中&#xff0c;第一种更为推荐&#xff0c;因为更灵活且更容易操作。当然您也可以根据自身情况选择喜欢的方法。 iPhone14已经发…

【HDLBits刷题笔记】12 More Circuits

Rule90 第一次见这东西有点莫名其妙,但是其实看懂了之后就是左移和右移相异或,注意这里使用的是逻辑右移,会自动补零,不能使用算数左移<<<。module top_module(input clk,input load,input [511:0] data,output reg[511:0] q ); always@(posedge clk)beginif(load…

QT调用OpenCV绘制直线、矩形、椭圆、圆、不规则曲线、文本

开发环境&#xff1a;QT5.14.2OpenCV4.5 提前准备&#xff1a;准备编译好的OpenCV开发环境(如自行编译的mingw版的opencv库&#xff0c;本地路径D:\opencv\qt_build64)&#xff0c;准备一张测试图片&#xff08;如&#xff1a;d:\test.jpg&#xff09;。 项目结构&#xff1a…

零零信安-DD数据泄露报警日报【第31期】

01 概述 2022.10.26共发现匿名网络资讯信息70,642条&#xff1b;最近7天共发现匿名网络资讯信息472,185条&#xff0c;同比增长-42%&#xff1b;最近30天共发现匿名网络资讯信息2,498,093 条。 D&D评论&#xff1a; 国际上&#xff0c;近日监测到国外公司源代码泄漏事件增加…

Web响应式(二)

内容:媒体查询 媒体查询语法 组合媒体查询一、媒体查询 媒体查询,可以根据设备的能力应用特定的CSS样式。比如,可以根据视口宽度、屏幕宽高比和朝向(水平还是垂直)等,只用几行CSS代码就改变内容的显示方式。 二、媒体查询语法 媒体查询类型大全媒体查询属性大全:例子: …

理解vim工作的几个关键字

理解vim工作的几个关键字 下面我们再来认识一下 vim ,理清下面的 vim 的几个名词,这样方便我们以后更好的去使用和进阶vim : 缓冲区(Buffer), 窗口 (Window ) , 标签(Tab) , 标记(Mark ), 寄存器(Register) , 插件(Plugin) , vim 脚本(VimScript)。 缓冲区(buffer) 什…

【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《LeetCode》 &#x1f516;题目链接&#xff1a;移除元素、删除有序数组中的重复项、合并两个有序数组 目录一、移除元素示例 1&#xff1a;示例 2&#xff1a;理解思路1&#xff1a;代码…

Linux——页面置换算法(OPT、FIFO、LRU的实现与比较)

目录 1、 实验题目 2、实验要求 &#xff08;1&#xff09;指令的地址按下述原则生成 &#xff08;2&#xff09;具体的实施方法 &#xff08;3&#xff09;将指令序列变换为页地址流 3、算法实现参考代码&#xff1a; 4、运行结果 5、算法比较 1、 实验题目 设计一个虚…

使用Git Bash Here代码上传本地项目到GitLab

使用Git Bash Here代码上传本地项目到GitLab,上传到到GitHub等其它项目管理也类似。 一、第一次用代码上传项目 1.使用Git Bash Here打开代码输入框&#xff0c;创建克隆目录&#xff1a; git clone xxx/androidprojects.git 2. 把项目放到创建的目录下&#xff0c;并代码进…

Side Window Filtering 论文笔记

引言 Side Window Filtering是上了数字图像处理这门课后看的第二篇论文&#xff0c;这是一篇2019年发表的论文&#xff0c;提出的技术方法也相对比较新。由于我对CV方面涉猎不多&#xff0c;所以看的时候比较懵&#xff0c;似懂而非懂&#xff0c;于是打算做点笔记&#xff0c…

珠宝加工厂:我的成本下降空间在哪里?

摘要&#xff1a;珠宝加工厂&#xff0c;如何通过IoT边缘技术&#xff0c;OT/IT数据融合&#xff0c;实现成本的下降、效率的提升本文分享自华为云社区《玩转物联网IoT边缘服务系列二-珠宝加工的成本下降空间在哪里&#xff1f;》&#xff0c;作者&#xff1a;eleven1111 。 本…

小程序配置详解

小程序新生成时的目录 有4中不同的文件类型 .json 后缀的 JSON 配置文件.wxml 后缀的 WXML 模板文件.wxss 后缀的 WXSS 样式文件.js 后缀的 JS 脚本逻辑文件json app.json 是对当前小程序的全局配置&#xff0c;包括了小程序的所有页面路径、界面表现、网络超时时间、底部 ta…

elasticsearch、kibana、Ik分词器基于docker的单点部署

一、创建网络 由于需要让es和kibana容器互联&#xff0c;因此需要先创建一个网络。 但当也可以使用docker-compose的方式来完成一键互联&#xff0c;那样的话就不需要创建网络。 docker network create es-network二、安装elasticsearch 2.1 dockerHub直接拉取镜像的方式 …

AWS 使用Lambda实现钉钉机器人报警

aws 支持邮件和短信的报警通知&#xff0c;考虑时效性问题和结合公司的使用情况&#xff0c;需要接入钉钉机器人的告警提醒&#xff0c;为了使用钉钉机器人的告警&#xff0c;我们利用LambdaSNS&#xff0c;利用Lambda接受SNS的警告信息&#xff0c;然后通过python发送到钉钉机…

Git快速入门

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 Git前言一、版本控制1.1、常见的版本控制工具二、版本控制分类2.1、本地版本控制2.2、集中版本控制 SVN2.3、分布式版本控制…

从0到1实现python基于RPC协议的接口自动化测试

01、什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用协议是一个用于建立适当框架的协议。从本质上讲&#xff0c;它使一台机器上的程序能够调用另一台机器上的子程序&#xff0c;而不会意识到它是远程的。 RPC 是一种软件通信协议&#xff0c;一个程…

记一次VMOS Pro破解记录

vmos pro是在安卓上运行的安卓模拟器&#xff0c;自带root&#xff0c;免root运行Xposed&#xff0c;免root运行Magisk等&#xff0c;支持修改分辨率&#xff0c;支持谷歌GMS服务&#xff0c;后台可持续运行. 背景 意外发现这么一款好玩的虚拟机但使用起来有诸多限制&#xff…

科研快报|全长扩增子测序揭示口腔微生态变化可用作阿尔兹海默症识别指标

背景介绍 阿尔茨海默病&#xff08;AD&#xff09;是一种神经退行性疾病&#xff0c;通常影响老年人。由于老年人患牙根龋和缺牙的发病率较高&#xff0c;这些牙齿问题中涉及的细菌可能会恶化他们的认知功能。口腔中微生物群的改变可能通过从口腔迁移到大脑而诱发神经炎症。然…

Spring IOC 核心流程介绍

前言 接下来我们编写入口代码&#xff0c;跟代码梳理一下Spring IOC一些重要的方法节点。IOC有12个比较重要的方法&#xff0c;把这12个方法学习一下&#xff0c;整个Spring IOC基本就差不多了。 编写Spring IOC入口 1、创建需要被管理的类 接口类&#xff1a; package se…