经典/启发式/改进启发式算法应用于机器人路径规划

在这里插入图片描述
在这里插入图片描述

路径规划是移动机器人导航规划中的一个十分重要且关键的研究课题。

移动的机器人总是在动态、复杂和不可控的环境中工作,比如对核电站的检查和变电站的检查。然而,复杂的动态工作环境要求移动的机器人能够调整其运动路线,以自主完成任务。使机器人能够实现自主移动的最关键因素之一是路径规划。

移动机器人路径规划技术,就是机器人在遵循一些优化指标(比如时间最短、路程最优和能耗最低等)前提下,在运行环境中规划出从起始点到目标点不发生碰撞的最优路径。

目前,移动的机器人路径规划的三大难题是环境建模、算法收敛速度和易陷入局部最优解。其中环境建模可以通过2D的栅格地图解决;而收敛速度和避免局部最优则涉及优化算法的设计或其他算法集成。

路径规划方法可以分为以下2种:

经典方法(如A*、Dijkstra算法),这类方法求解速度较快,但若存在多个最小值时,其不能保证得到最优解。

元启发式方法(即依托各类新型优化算法),此类方法简单灵活,能够跳出局部最优,受到许多学者的青睐。

本文作者将通过经典、元启发式算法求解机器人路径规划,并引入作者的原创改进算法进行对比分析。

00 文章目录

1 环境建模

2 优化算法

3 实验结果

4 源码获取​

01 环境建模

本文将移动机器人的环境设置为二维平面空间,使用栅格法建立环境模型。栅格法是地图建模中的一种经典方法,能直观地表达环境空间信息且信息数据易存储。在栅格地图中,障碍物的位置和大小是已知的,并且障碍物的大小和位置在机器人的运动过程中不会改变。

下图展示了2个二维栅格环境

在这里插入图片描述

在这里插入图片描述

分别表征了简单和复杂的工作环境栅格地图中,障碍物栅格为深色区域,可行栅格为浅色区域,每个栅格的8 个直接相邻的栅格为可直接通行栅格,机器人可在其中的可行栅格中根据一定规则选取下一前行栅格,相邻栅格间的距离用栅格中点之间的欧几里得距离表示。

在这里插入图片描述

[图:张军,张婷,于士坤.应用蚁群算法的全局路径规划改进[J].新乡学院学报,2023,40(06):25-28+51.]

假设机器人从起始点总共经过 M 步到达目标点,则目标函数为移动机器人的无碰路径长度 L,并使其长度达到最短:
在这里插入图片描述

式中,d(m)为欧式距离。

02 优化算法

本文中作者采用

经典算法:A*

启发式算法:WOA、PSO、GWO以及作者的原创改进算法AAMCWOA。

其具体原理这里不再阐述。

03 实验结果

在简单栅格地图中,运行程序结果如下:
在这里插入图片描述

其路径长度及运行时间如下:
在这里插入图片描述

在复杂栅格地图中,运行程序结果如下:
在这里插入图片描述

其路径长度及运行时间如下:
在这里插入图片描述

可以看到通过启发式算法较之经典方法进行路径规划,能有效跳出局部最优,但其计算复杂度较大。

04 源码获取

1.经典的A*算法应用于栅格路径规划获取:

见GZH:KAU的云实验台

其文件如下:

在这里插入图片描述

2.A*、GWO、WOA、PSO算法应用于栅格(简单/复杂)路径规划获取:

见GZH:KAU的云实验台

支持主程序一键运行,能够生成各算法运行结果(路径长度、运行时间)的excel表格

在这里插入图片描述

在这里插入图片描述

3.A*、GWO、WOA、PSO、AAMCWOA算法应用于栅格(简单/复杂)路径规划获取:

见GZH:KAU的云实验台

支持主程序一键运行,能够生成各算法运行结果(路径长度、运行时间)的excel表格

在这里插入图片描述

在这里插入图片描述

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看 (ง•̀_•́)ง(不点也行)

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

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

相关文章

流媒体协议

◆ RTP(Real-time Transport Protocol),实时传输协议。 ◆ RTCP(Real-time Transport Control Protocol),实时传输控制协议。 ◆ RTSP(Real Time Streaming Protocol),实时流协议。 ◆ RTMP(Real Time Messaging Protocol),实时…

【论文解读】GPT Understands, Too

一.论文 1.1 P-tuning 区别于之前的工作,这篇工作认为promote可以在句子中的任意位置起到作用,可以将它们插入上下文或目标中 上图中,左图是不使用任何操作,右图是选择在居首和目标前插入promote的embedding,插入pro…

2023最新软件测试20个基础面试题及答案

什么是软件测试? 答案:软件测试是指在预定的环境中运行程序,为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 软件测试的目的是什么? 答案:软件测试的主要目的是保证软件的质量,并尽可能大…

打破内卷宿命,电商只能出海,必须出海!

历史社会学家黄宗智把中国华北小农经济中的“过密化增长”、边际收益递减等现象称之为“内卷”:即在有限空间内的激烈零和式竞争现象;内卷产生的根源是有限且封闭的空间,竞争规则是“排他性”的零和博弈。 空间有限下的零和博弈,正…

强引用、软引用、弱引用、虚引用的区别

Java中的引用有四种,分为强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,这4种引用强度依次逐…

【C++11】lambda表达式 | 包装器

文章目录 一、 lambda表达式lambda表达式的引入lambda表达式的语法lambda表达式与函数对象lambda表达式的捕捉列表 二、包装器function包装器bind包装器 一、 lambda表达式 lambda表达式的引入 在C98中,为了替代函数指针,C设计出了仿函数,也…

zookeeper学习记录

本文Java代码地址: https://gitee.com/blackjie_1/ljUp/tree/master/zookeeperDemo 个人博客网站:什么是快乐 基于docker 安装 拉取zookeeper 3.4.10 docker pull zookeeper:3.4.10启动服务端 docker run -d -p 2181:2181 -v /root/docker/zookeepe…

现在做跨境电商还需要全球代理IP吗?全球代理IP哪家靠谱?

随着全球互联网的发展,电商平台的发展和跨境贸易的便利化,跨境电商在过去几年中也一直呈现增长趋势,吸引了越来越多的企业和个体创业者入行。 然而,行业竞争也在不断加剧,跨境电商面临更多的越来越多的挑战&#xff0…

c语言中,/100和/100.0的区别是什么?

c语言中,/100和/100.0的区别是什么? 应该是整数除法和浮点数除法的区别吧。/100 时,结果只会保留整数部分,余数会丢弃。 最近很多小伙伴找我,说想要一些c语言的资料,然后我根据自己从业十年经验&#xff0…

哈夫曼编码详细证明步骤

关于哈夫曼编码,想必大家都很清楚,这里来讲解一下他的详细证明方法。代码的话就不给了网上一大堆,我再给也没什么意思,这里主要讲明白正确性的证明。我将采取两种方法进行证明,一种常规的方法,还有一种采取…

完整时间线!李开复Yi大模型套壳争议;第二届AI故事大赛;AI算命GPTs;LLM应用全栈开发笔记;GPT-5提上日程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 李开复「零一万物」大模型陷套壳争议,事件时间线完整梳理 https://huggingface.co/01-ai/Yi-34B/discussions/11#65531458…

振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(1)

注解目录 1、倾斜传感器的那些基础干货 1.1 典型应用场景 (危楼、边坡、古建筑都是对倾斜敏感的。) 1.2 倾斜传感器的原理 1.2.1 滚珠式倾斜开关 1.2.2 加速度式倾斜传感器 1)直接输出倾角 2)加速度计算倾角 3)倾角精度的提高 (如果…

Kettle工具使用小结1

1.背景 客户数据库限定为tidb数据库,相关业务数据均存储在内。因为tidb数据库是分布式的,且不支持存储过程、job等功能,需要通过外部工具进行脚本批量处理,所以这里引入kettle进行脚本批量执行和作业调度。 2.环境信息 &#xf…

SpringBoot配置数据库密码加密的方法

由于系统安全的考虑,配置文件中不能出现明文密码的问题,本文就给大家详细介绍下springboot配置数据库密码加密的方法,下面话不多说了,来一起看看详细的介绍吧,需要的朋友可以参考下 1.导入依赖 <!--数据库密码加密--> <dependency><groupId>com.github.uli…

探索arkui(2)--- 布局(列表)--- 2(支持分组/实现响应滚动位置)

前端开发布局是指前端开发人员宣布他们开发的新网站或应用程序正式上线的活动。在前端开发布局中&#xff0c;开发人员通常会展示新网站或应用程序的设计、功能和用户体验&#xff0c;并向公众宣传新产品的特点和优势。前端开发布局通常是前端开发领域的重要事件&#xff0c;吸…

Leetcode88 合并两个有序数组

合并两个有序数组 题解1 正向(记得插1删1)题解2 逆向 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减…

WEB 自动化神器 TestCafe(一)—安装和入门篇

今天小编给大家带来WEB 自动化神器 TestCafe(一) —安装和入门篇 一、TestCafe 介绍&#xff1a; TestCafe 是一款基于 Node.js 的端到端 Web 自动化测试框架&#xff0c;支持 TypeScript 或 JavaScript 来编写测试用例&#xff0c;运行用例&#xff0c;并生成自动化测试报告。…

传输层——— UDP协议

文章目录 一.传输层1.再谈端口号2.端口号范围划分3.认识知名端口号4.两个问题5.netstat与iostat6.pidof 二.UDP协议1.UDP协议格式2.UDP协议的特点3.面向数据报4.UDP的缓冲区5.UDP使用注意事项6.基于UDP的应用层协议 一.传输层 在学习HTTP等应用层协议时&#xff0c;为了便于理…

计算机网络的发展

目录 一、计算机网络发展的四个阶段 1、第一阶段&#xff1a;面向终端的计算机网络&#xff08;20世纪50年代&#xff09; 2、第二阶段&#xff1a;计算机—计算机网络&#xff08;20世纪60年代&#xff09; 3、第三阶段&#xff1a;开放式标准化网络&#xff08;20世纪70年…

vue3别名配置(vite)

1、配置别名的优点&#xff1a; 在VUE项目中import导入文件时&#xff0c;可以写相对路径. 2、在vite.config.js中配置 a. 首先引入path import path from "path"/* */ b.在resolve添加别名&#xff0c;例如&#xff1a; alias:{"~":path.resolve(__di…