机器人路径规划:基于鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)的机器人路径规划(提供MATLAB代码)

 一、机器人路径规划介绍

移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量应用,人们对机器人的要求也越来越高,尤其表现在对机器人的智能化方面的要求,而机器人自主路径规划是实现机器人智能化的重要步骤,路径规划是指规划机器人从起点位置出发,无碰撞、安全到达指定目标位置的最优路径。目前,常用的移动机器人全局路径规划方法很多,如栅格法和人工势场法。对于栅格法,当空间增大时,所需存储空间剧增,决策速度下降;而人工势场法容易产生局部最优解问题和死锁现象。随着智能控制技术的发展,出现了如遗传算法算法、粒子群优化算法、麻雀搜索算法、灰狼优化算法、鲸鱼优化算法等。

参考文献:

[1]史恩秀,陈敏敏,李俊,等.基于蚁群算法的移动机器人全局路径规划方法研究[J].农业机械学报, 2014, 45(6):5.DOI:CNKI:SUN:NYJX.0.2014-06-009.

[2]朱庆保,张玉兰.基于栅格法的机器人路径规划蚁群算法[J].机器人, 2005, 27(2):5.DOI:10.3321/j.issn:1002-0446.2005.02.008.

[3]曹新亮,王智文,冯晶,等.基于改进蚁群算法的机器人全局路径规划研究[J].计算机工程与科学, 2020, 42(3):7.DOI:CNKI:SUN:JSJK.0.2020-03-027.

二、栅格地图环境搭建

首先建立移动机器人工作环境,设移动机器人的工作空间为二维空间(记为RS),工作环境中的障碍物即为机床。在机器人运动过程中,障碍物为静止且大小不发生变化。按栅格法划分RS,移动机器人在栅格间行走。无障碍物的栅格为可行栅格,有障碍物的栅格为不可行栅格。栅格集包含所有栅格。栅格标识有:直角坐标法和序号法。本文采用序号标识法。

在移动机器人工作空间下按从左到右,从上到下的顺序,依次标记为序号1,2,3,···,n,每一个序号代表一个栅格。为了避免移动机器人与障碍物发生碰撞,可以将障碍物膨胀,障碍物在占原有栅格的同时,再占多个栅格,按 个栅格算。这种划分方法简单实用,能够满足环境模型与真实情况相符。从而使移动机器人在路径规划时畅通无阻。令S={1,2,3,···,N}为栅格序号集。根据上述对应关系,可知g(0,0)的序号为1,g(1,0)序号为2,直至g(X,Y)的序号为n。规划起始位置、目标位置均为任意且都属于S(但不在同一栅格内)。

在实际工作环境中,移动机器人工作环境是复杂多变的,且为三维空间。为了便于研究,本文对环境进行简化建模。栅格法是一种常用的环境表示方法,因其简单方便(二维环境),环境建模的复杂性小,因而本文环境建模采用栅格法。在栅格地图中,工作环境被划分为很多栅格,其中包括有障碍物和无障碍的栅格,在仿真程序中用0表示此栅格无障碍物,机器人可以通过此栅格,用1表示栅格有障碍物,机器人无法通过,需选择其他栅格。栅格的尺寸大小可根据工作环境中的障碍物尺寸以及安全距离进行设置。为了实现程序仿真,需要对栅格进行标识,如下图所示,以20x20的栅格环境为例来说明。

如上图所示,白色栅格表示无障碍物的栅格,黑色栅格则表示有障碍物的栅格,在地图中对每个栅格编号,不同序号的栅格在坐标系中的坐标可用下式来表示:

x=mod(Ni/N)-0.5

y=N-ceil(Ni/N)+0.5

其中,mod为取余运算,ceil表示向后取整,Ni是对应栅格的标号,N表示每 列的栅格数量,取栅格中心位置作为栅格在坐标系中的坐标。这样机器人全局路径规划的问题就转变成了利用算法在栅格地图上寻找由起始点到目标点的有序的栅格子集,这些栅格子集的中心连线便是算法寻找的路径。

参考文献:

[1]史恩秀,陈敏敏,李俊,等.基于蚁群算法的移动机器人全局路径规划方法研究[J].农业机械学报, 2014, 45(6):5.DOI:CNKI:SUN:NYJX.0.2014-06-009.

[2]曹新亮,王智文,冯晶,等.基于改进蚁群算法的机器人全局路径规划研究[J].计算机工程与科学, 2020, 42(3):7.DOI:CNKI:SUN:JSJK.0.2020-03-027.

三、鳑鲏鱼优化算法


鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)由Lida Zareian 等人于2024年提出。鳑鲏鱼在交配中,雄性和雌性物种相互接近,然后将精子和卵子释放到水中,但这种方法有一个很大的缺点。幼鱼暴露在各种外部危害中,很容易成为其他动物的猎物。换句话说,这些卵中只有少数会变成鱼——不幸的是,大多数鱼都是被其他水生动物猎杀的。苦鱼有不同的繁殖机制。这种鱼从牡蛎开始。寻找合适的产卵壳的任务是雄性物种的责任。他们需要找到更大的牡蛎,并有更多的空间来容纳它们的卵。当这些鱼找到一个或多个受害者(牡蛎)时,它们就会与敌人对抗。雄性物种具有攻击性行为的原因是其他一些雄性物种也倾向于将牡蛎用于自己。在战斗模式中,雄鱼的体色变暗,并尽其所能保卫自己的领地。在交配阶段,会发生一种称为性选择的现象。在性选择过程中,雌性物种根据颜色和体力选择雄性鱼。
参考文献:https://blog.csdn.net/weixin_46204734/article/details/136424461

四、鳑鲏鱼优化算法求解机器人路径规划

4.1部分代码

%% 
S = [1 1];   %起点
E = [20 20];  %终点
[ub,dimensions] = size(G);        
dim = dimensions - 2;             
%% 参数设置
Max_iter= 100;    % 最大迭代次数
SearchAgents_no = 50;         % 种群数量
X_min = 1;  
lb=1;
fobj=@(x)fitness(x);
[Best_score,Best_NC,Convergence_curve]=BFO(SearchAgents_no,Max_iter,lb,ub,dim,fobj);

toc
%% 结果分析
global_best = round(Best_NC);
figure(1)
plot(Convergence_curve,'r-','linewidth',2.5)
xlabel('Iteration');
ylabel('Fitness');
legend('BFO')

4.2部分结果

五、完整MATLAB代码

见下方名片

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

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

相关文章

CSDN学习笔记总索引(2024)——我的创作纪念日(1024)

从2021-05-21至2024-03-19,我的CSDN博文学习笔记中,收集并展示浏览阅读,点赞收藏评论等数据,以浏览阅读量排逆序展示。 (笔记模板由python脚本于2024年03月19日 05:49:24创建,本篇笔记适合熟悉Python,对其基…

一维数组数组名的用途

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 一、数组名的用途 一维数组数组名的用途&#xff1a; 1、可以统计整个数组的长度。 2、可以获取数组在内存中的首地址。 二、示例代码 #include <iostream> #include <W…

亚马逊等跨境电商平台自养号测评的五个核心因素

一、安全稳定的环境系统 尽管市场上存在大量现成的系统和软件包&#xff0c;卖个软件或设备给你&#xff0c;这种基本上都没有解决风控的能力&#xff0c;因此&#xff0c;小编推荐大家还是自己掌握相关技术&#xff0c;避免过度依赖于外部资源&#xff0c;目前&#xff0c;也…

C语言救赎之路,有些鸟儿是困不住的!(其4) (逻辑运算符+函数)

什么是运算符&#xff1f;诶~&#xff0c;其实我们一直在用运算符&#xff0c;比如我们的 &#xff0c;-&#xff0c;*&#xff0c;/ 等等都是运算符。今天我们就先来讲讲运算符。这是结合我自己的理解&#xff0c;我认为自己讲的肯定比一些教科书讲的要更清楚一些&#xff0c;…

SpringBoot整合Xxl-Job

一、下载Xxl-Job源代码并导入本地并运行 Github地址:GitHub - xuxueli/xxl-job: A distributed task scheduling framework.&#xff08;分布式任务调度平台XXL-JOB&#xff09; 中文文档地址:分布式任务调度平台XXL-JOB 1.使用Idea或Eclipse导入 2.执行sql脚本(红色标记…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服…

动态规划课堂6-----回文串问题

目录 引言&#xff1a; 例题1&#xff1a;回文子串 例题2&#xff1a;回文串分割IV 例题3&#xff1a;分割回文串II 例题4&#xff1a;最长回文子序列 例题5&#xff1a;让字符串成为回文串的最小插入次数 引言&#xff1a; 回文字符串 是正着读和倒过来读一样的字符串。…

LeetCode 面试经典150题 80.删除有序数组中的重复项II

题目&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…

PTA——1075 链表元素分类、1105 链表合并、1110 区块反转

1075 链表元素分类 解决代码 #include<bits/stdc.h> using namespace std; struct node{int v;int next; }; map<int,node> s; vector<vector<pair<int,int>>> ans(3); vector<pair<int,int>> w; int main(){int st,n,k;cin>>…

鸿蒙Harmony应用开发—ArkTS-转场动画(组件内转场)

组件内转场主要通过transition属性配置转场参数&#xff0c;在组件插入和删除时显示过渡动效&#xff0c;主要用于容器组件中的子组件插入和删除时&#xff0c;提升用户体验。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记…

短视频矩阵系统技术交付

短视频矩阵系统技术交付&#xff0c;短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说&#xff0c;目前基本上已经沉淀3年了&#xff0c;那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后&#xff0c;很多违规的技术开发肯定有筛选到了…

cuda多版本安装

主要参考文章&#xff1a; ubuntu 20.04下多版本cuda&cudnn下载与安装 在ubuntu上安装多个版本的CUDA&#xff0c;并且可以随时切换 1 环境检查 nvidia-smiCUDA Version:12.4表示最高支持cuda 12.4版本 nvcc -V如图所示表示系统目前版本为cuda 12.2 2 多版本cuda下载与…

深入解析Kafka中的动态更新模式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入解析Kafka中的动态更新模式 前言动态更新模式的基础概念动态更新模式的概念&#xff1a;解决的问题和引入的原因&#xff1a; 原理解析与工作流程动态更新模式的工作原理和工作流程&#xff1a;示…

【MySQL】学习和总结使用列子查询查询员工工资信息

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Spring-IOC容器注解方式整合三层架构

注解方式特点 //1. 完全注解方式指的是去掉xml文件&#xff0c;使用配置类 注解实现 //2. xml文件替换成使用Configuration注解标记的类 //3. 标记IoC注解&#xff1a;Component,Service,Controller,Repository //4. 标记DI注解&#xff1a;Autowired Qualifier Resource Va…

基于肤色模型(YCbCr模型)的人面定位统计算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

计算机视觉之三维重建(2)---摄像机标定

文章目录 一、回顾线代1.1 线性方程组的解1.2 齐次线性方程组的解 二、透镜摄像机的标定2.1 标定过程2.2 提取摄像机参数2.3 参数总结 三、径向畸变的摄像机标定3.1 建模3.2 求解 四、变换4.1 2D平面上的欧式变换4.2 2D平面上的相似变换和仿射变换4.3 2D平面上的透射变换4.4 3D…

音视频开发_SDL跨平台多媒体开发库实战

SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个非常流行和强大的跨平台开发库&#xff0c;它主要被用来开发视频游戏和实时多媒体应用程序。它提供了一系列的功能来处理视频、音频、键盘、鼠标、操纵杆、图形硬件加速以及聚焦3D硬件的各种功能。SDL的API通过C编程…

串行通信协议 SPI

SPI&#xff08;Serial Peripheral Interface&#xff09;是一种串行通信协议&#xff0c;常用于连接微控制器、存储器、传感器和其他外围设备。SPI通常由一个主设备&#xff08;通常是微控制器&#xff09;和一个或多个从设备组成。 1、SPI通信一般由四根线组成: SCLK&#x…

Java学习笔记20——枚举类型的创建与使用

在实际编程中&#xff0c;存在着这样的“数据集”&#xff0c;它们的数值在程序中是稳定的并且个数是有限的。例如春、夏、秋、冬四个数据元素组成了四季的“数据集”&#xff0c;一月到十二月组成了十二个月份的“数据集”&#xff0c;周一到周五及周六周日组成了每周七天的“…