基于智能算法的无人机路径规划研究(Matlab代码实现)
创始人
2024-04-12 13:58:19
0

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

针对自主车辆换道时对换道轨迹平稳性和效率性的要求, 设计了一种基于五次多项式模型的换道轨迹规划方法。建立车辆的五次多项式换道轨迹模型, 并为其增加调节参数。以换道轨迹的平均曲率最小和长度最短为目标设计目标函数, 同时考虑换道过程中的舒适性和平稳性, 以车辆的横向速度、横向加速度和横摆角速度为约束条件, 最后采用序列二次规划算法对参数进行优化求解。对换道轨迹进行跟踪仿真试验, 仿真结果证明, 轨迹规划的结果满足实际状况下的车辆换道要求, 验证了换道轨迹的合理性。

自主车辆技术是个集通信、检测、控制和计算机等技术为一体的综合技术,通过对自主车辆技术的研究和开发,可以提升道路交通的安全性,对构建安全交通系统具有重要的科学理论意义和实际应用价值。车道变换行为是日常行车中最常见的驾驶行为之一,车辆换道轨迹的规划是自主车辆能否安全而又高效地完成换道任务的关键,因此对换道轨迹规划的研究逐渐成为自主车辆技术研究的重点。
目前车辆换道轨迹的规划方法主要分为基于搜索的方法和基于几何的方法。基于搜索的轨迹规划方法源自机器人学,这种方法首先需要对周围环境进行描述,建立自主车辆的工作空间,之后根据约束条件及需要完成的目标,对轨迹进行搜索获得符合要求的轨迹簇,并选出最优轨迹。孙浩等提出了一种同时满足行驶安全与全局性能最优的动态轨迹规划方法,首先在识别周围交通环境的基础上,以简单车辆动力学模型为轨迹发生器建立了车辆行驶的安全搜索空间,之后根据任务目标得出最优轨迹。但是基于搜索的轨迹规划方法大多实时性较差,在自主车辆这种实时性要求较高的场合优势并不明显。基于几何的轨迹规划通常采用参数化的曲线来描述轨迹,这种方法较为直观、精确,且运算量较小,因此是目前采用的较为广泛的轨迹规划方法。Choi等利用Bezier曲线对自主车辆路径进行轨迹规划,得到的换道轨迹平滑,过渡平稳且曲率连续,但是并未对Bezier曲线控制点的选取进行分析,也没有考虑车辆的横向加速度限制。李玮等将四段式车道变换理论为基础,引入B样条理论对传统换道轨迹进行二次规划, 给定了车辆换道轨迹的性能评价函数,可以较好地克服传统换道轨迹模型的缺陷,但是仅从轨迹特性上出发,并未考虑横摆角速度等车辆动力学特性。杨志刚等通过分析传统换道模型的缺陷,提出了一种正弦函数结合等速偏移函数的换道模型,该模型具有平滑性较好的特点,但是该模型以固定车速进行分析,并未考虑不同车速对换道轨迹的影响。Shim等提出了一种基于六次多项式的轨迹规划方法,但是阶次过高,未知系数较多,计算繁琐,收敛速度较慢。

📚2 运行结果

 

部分代码:

clear;
clc;
figure(1);
clf;
cmap = [
    0 0 0; % 0 - black - 障碍
    1 1 1; % 1 - white - 空地
    1 0 0; % 2 - red - 已搜索过的地方
    0 0 1; % 3 - blue - 下次搜索备选中心
    0 1 0; % 4 - green - 起始点/终点
    1 1 0];% 5 - yellow -  到目标点的路径
colormap(cmap);
fid = "map.bmp";
tic;
map = int8(imbinarize(imread(fid)));
% image(map);

%% 参数设置
startPt = [5, 5];
endPt = [48, 48];
H = inf(size(map));
H(startPt(1), startPt(2)) = 0;% 初始点置零
curMap = zeros(size(map));
startIndex = rolCol2Index(startPt(1), startPt(2), 50);
endIndex  = rolCol2Index(endPt(1), endPt(2), 50);
map(startIndex) = 4;%标记起点
map(endIndex) = 4;%标记终点
image(map);
% print(1,'-dbmp',sprintf('image/%d',1));
fastClose = 1;% 快速结束(终点是全局最小就停止更新)
%% 主循环 BFS
direction = [
    -1, 0;
    0, 1;
    1, 0;
    0, -1];
queue = [];
queue = [queue; startIndex];%出发点ID入队列

clear;
clc;
figure(1);
clf;
cmap = [
    0 0 0; % 0 - black - 障碍
    1 1 1; % 1 - white - 空地
    1 0 0; % 2 - red - 已搜索过的地方
    0 0 1; % 3 - blue - 下次搜索备选中心
    0 1 0; % 4 - green - 起始点/终点
    1 1 0];% 5 - yellow -  到目标点的路径
colormap(cmap);
fid = "map.bmp";
tic;
map = int8(imbinarize(imread(fid)));
% image(map);

%% 参数设置
startPt = [5, 5];
endPt = [48, 48];
H = inf(size(map));
H(startPt(1), startPt(2)) = 0;% 初始点置零
curMap = zeros(size(map));
startIndex = rolCol2Index(startPt(1), startPt(2), 50);
endIndex  = rolCol2Index(endPt(1), endPt(2), 50);
map(startIndex) = 4;%标记起点
map(endIndex) = 4;%标记终点
image(map);
% print(1,'-dbmp',sprintf('image/%d',1));
fastClose = 1;% 快速结束(终点是全局最小就停止更新)
%% 主循环 BFS
direction = [
    -1, 0;
    0, 1;
    1, 0;
    0, -1];
queue = [];
queue = [queue; startIndex];%出发点ID入队列

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]闫尧, 李春书, 唐风敏. 基于五次多项式模型的自主车辆换道轨迹规划. 机械设计. 2019;36(8):42–7.

[2]Chen C, He Y, Bu C, Han J, Zhang X. Quartic Bézier curve based trajectory generation for autonomous vehicles with curvature and velocity constraints. In: 2014 IEEE International Conference on Robotics and Automation (ICRA). IEEE; 2014. p. 6108–6113.

🌈4 Matlab代码实现

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...