基于粒子群优化算法的移动机器人全局路径规划-附代码

文章目录

  • 基于粒子群优化算法的移动机器人全局路径规划-附代码
    • 1.问题描述与建模
    • 2.基于粒子群算法的路径规划
    • 3. 实验结果
    • 4.参考文献
    • 5.Matlab代码

摘要:本文主要介绍一种基于粒子群优化算法的移动机器人全局路径规划算法。

1.问题描述与建模

对于移动机器人, 路径规划就是寻找其在环境中移动时所必须经过的点的集合. 如图1 所示, 在全局坐标系O-XY 中, S 为机器人的出发点, G 为终点.图中黑色实心填充的物体表示障碍. 机器人的路径规划即为寻找一个点的集合
P={S,p1,p2,..,Pm,G}(1)P = \{S,p_1,p_2,..,Pm,G\} \tag{1} P={S,p1​,p2​,..,Pm,G}(1)
其中(p1,p2,..,pm)(p_1,p_2,..,p_m)(p1​,p2​,..,pm​)为全局地图中一个点的序列,即规划目标. 对点pjp_jpj​的要求是: pjp_jpj​为非障碍点, pjp_jpj​与相邻点的连线上不存在障碍点.

图1.路径产生过程

在全局地图中建立一个新的坐标系, 以 SG 作为 X ′轴, 垂直于 X′且经过 S 点的直线作为 Y′轴,X′, Y′轴的方向如图 1所示. 对应的坐标变换为:
[x′y′]=[cosα−sinαsinαcosα][xy]+[xsys]\left[\begin{matrix}x'\\ y'\end{matrix}\right] = \left[\begin{matrix}cos\alpha&-sin\alpha\\ sin\alpha&cos\alpha\end{matrix}\right]\left[\begin{matrix}x\\ y\end{matrix}\right] + \left[\begin{matrix}xs\\ ys\end{matrix}\right] [x′y′​]=[cosαsinα​−sinαcosα​][xy​]+[xsys​]
其中: (x,y),(x′,y′)(x, y) , ( x′, y′)(x,y),(x′,y′) 分别为地图中某一点在不同坐标系 O−XYO-X YO−XY 和 S−X′Y′S-X ′Y′S−X′Y′下的坐标, AAA为坐标轴XXX 与X′X′X′的夹角, (xS,yS)( x S , y S )(xS,yS) 为 SSS 点在坐标系 O−XYO-X YO−XY 下的坐标。

将线段SGSGSG进行(m+1)( m + 1)(m+1) 等分, 在每一个等分点作垂线, 得到平行直线族(l1,l2,⋯,lm)( l_1 , l_2 , ⋯, l_m )(l1​,l2​,⋯,lm​) , 它们与路径PPP的交点即为目标点序列(p1,p2,⋯,pm)( p_1 , p_2 , ⋯, p_m )(p1​,p2​,⋯,pm​) . 定义 SSS 为p0p_0p0​ , GGG为 pm+1p_{m+ 1}pm+1​ , 路径 PPP 的长度 LPLPLP 为:
LP=Lsp1+∑j=1m−1Lpjpj+1+LpmG=∑j=0mLpjpj+1(2)LP=Lsp_1+\sum_{j=1}^{m-1}Lp_jp_{j+1}+Lp_mG=\sum_{j=0}^mLp_jp_{j+1}\tag{2} LP=Lsp1​+j=1∑m−1​Lpj​pj+1​+Lpm​G=j=0∑m​Lpj​pj+1​(2)
其中Lpjpj+1Lp_jp_{j+1}Lpj​pj+1​ 表示点pjp_jpj​ 与点pj+1p_{j+1}pj+1​间的距离. 最终优化算法的目标函数即为求一条不存在障碍物的路径使得LP的值最小。

2.基于粒子群算法的路径规划

粒子群算法原理这里不在阐述,网上资料很多。粒子群的适应度函数为:
fitness=argmin{LP}(2)fitness = argmin\{LP\} \tag{2} fitness=argmin{LP}(2)
约束条件为,路径不能经过障碍物。

3. 实验结果

粒子群相关参数设定如下:

%% 粒子群参数设定
%速度范围设定
Vmax = 2;
Vmin = - 2;
dim = lineNum-1;%变量维度,段数-1
fobj = @(x) fun(x,PointStart,PointEnd,ks,bs);%适应度函数
lb = 1; %变量下边界
ub = boundary-1;%变量上边界
SearchAgents_no = 30;%种群数量
Max_iteration = 1000;%最大迭代次数

设置不同的分段数如5,10,15。如结果如下图所示:


粒子算法的收敛曲线如下图所示:

4.参考文献

[1]孙波,陈卫东,席裕庚.基于粒子群优化算法的移动机器人全局路径规划[J].控制与决策,2005(09):1052-1055+1060.

5.Matlab代码

基于粒子群优化算法的移动机器人全局路径规划
个人资料介绍

基于粒子群优化算法的移动机器人全局路径规划-附代码相关推荐

  1. 基于基于粒子群优化算法的微电网调度(Matlab代码实现)

    目录 ⛳️1 写在前面 ⛳️2 基于基于粒子群优化算法的微电网调度(Matlab代码实现)

  2. 基于粒子群优化的BP神经网络(分类应用) - 附代码

    基于粒子群优化的BP神经网络(分类应用) - 附代码 文章目录 基于粒子群优化的BP神经网络(分类应用) - 附代码 1.鸢尾花iris数据介绍 2.数据集整理 3.粒子群优化BP神经网络 3.1 B ...

  3. 【物理应用】基于粒子群优化算法实现瞬变电磁法视电阻率反演附matlab代码

    1 内容介绍 煤矿井下矿井瞬变电磁法(MTEM)探测中,电磁场呈全空间分布,全空间瞬变电磁反演是复杂的非线性问题,目前反演计算中全空间响应主要由半空间响应乘以全空间响应系数来得到,导致反演结果中顶板和 ...

  4. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  5. 粒子群优化算法分布式电源选址定容 matlab源代码,分析了分布式电源接入配电网前后对网络损耗的影响,在此基础上提出采用混合模拟退火算法的改进粒子群优化算法进行分布式电源选址和定代码按照高水平文章复现

    (1)粒子群优化算法分布式电源选址定容 如图12 matlab源代码,代码按照高水平文章复现,保证正确 分析了分布式电源接入配电网前后对网络损耗的影响,在此基础上提出采用混合模拟退火算法的改进粒子群优 ...

  6. 基于粒子群优化算法的最优机器人路径规划(Matlab代码实现)

    目录 1 概述 2 运行结果 3 Matlab代码实现 1 概述 近年来,智能机器人逐渐应用于医疗.服务.航空等众多领域.路径规划作为机器人实现智能自主规划的关键技术,受到众多学者的广泛关注2'.其具 ...

  7. 基于粒子群优化算法的最小二乘支持向量机预测模型构建(MATLAB实现)

    先去下载matlab的lssvm工具箱,网上可以搜到.这里不细说 先用PSO算法进行参数寻优,也就是gamma和sig2两个参数,LS-SVM的原理不细说. pso.m clc; clear all; ...

  8. 基于粒子群优化算法的微型燃气轮机冷热电联供系统优化调度(Matlab代码实现)

  9. 基于粒子群优化算法的冷热电联供型综合能源系统运行优化(Matlab代码实现)

  10. 基于粒子群优化算法的无人机路径规划与轨迹算法的实现(Matlab代码实现)

最新文章

  1. 洛谷P2219 [HAOI2007]修筑绿化带(单调队列)
  2. 开发技巧-使用SQL与Navicat快速导出一个自定义的MYSQL数据库字段表格(数据字典)为Word或Excel
  3. HELP! I’m an Object Factory!
  4. spring jms 事务_Spring JMS:处理事务中的消息
  5. 2020年中国服务机器人行业研究报告
  6. 信息学奥赛一本通 2073:【例2.16 】三角形面积
  7. vector用法 java_java.util.vector中的vector的详细用法
  8. Markdown生成左边框目录
  9. Web UI设计师的CSS优化工具 25+
  10. [LeetCode] One Edit Distance 一个编辑距离
  11. 7-24 求集合数据的均方差 (15 分)
  12. mysql非阻塞通信协议_NIO 的非阻塞式网络通信
  13. 黑马程序员ssm总结[大全版本,有对应pdf+源码](spring->springmvc-->springboot-->maven高级->cloud微服务)
  14. 测试计划和测试方案有什么区别?
  15. 直流调速系统概述工作原理实训教学
  16. UE4_屏幕位置与世界位置的相互转化
  17. vc++2010学习版注册码分享
  18. 从六个方面讲解抢购软件需要具备的条件
  19. vue 项目使用 webpack 构建自动获取电脑ip地址
  20. 云计算基础知识培训讲义

热门文章

  1. 卸载软件 Geek Uninstaller
  2. android 调出键盘表情_Android--如何优雅的切换表情和键盘(原理)
  3. (每日一题 day 002 - 模拟) 166. 分数到小数
  4. linux pppoe 共享上网,Linux操作系统下如何PPPOE拨号共享上网?
  5. Linux内核安全包括哪些内容,Linux内核安全更新怎么样 解决了哪些问题
  6. mysql权限怎么修改_mysql修改权限
  7. apache的es的原理_Elasticsearch Lucene 数据写入原理 | ES 核心篇
  8. jmeter使用_jmeter概念及使用
  9. matlab 马丢函数,振幅调制产生马丢光束的方法与流程
  10. SLAM_SLAM问题求解框架