一、模糊控制机器人路径规划简介

在未知环境下,针对传统模糊控制算法规划路径在某些复杂的障碍物环境中出现的死锁问题,设计了障碍逃脱策略,即当机器人进入陷阱区并在目标点方向不可行时,寻找可行方向并设置方向点,由方向点暂代目标点继续前行,沿方向点走出障碍物陷阱区后,则恢复原目标点。对于障碍逃脱策略无法走出的障碍物环境,进一步设计了转向策略,使机器人能成功走出陷阱区域,到达目标点。基于 MATLAB 仿真平台对所设计算法在不同环境下进行了测试和比较。结果验证了所设计算法的可行性和有效性。

二、部分源代码

function [Distance,Flag]=GetMinDistance(DectLineK, DectLineB, DectLineF,PgoalXnew,PgoalYnew)
%Distance 为最短距离,Flag表征其有效性 0 无  1有 2异常
%依据测量线斜率情况及走向 选择出交涉区域的障碍,及夹角取向
global CirX;
global CirY;
global CirR;
global ProbotX;
global ProbotY;if DectLineF ==1 if ProbotY < PgoalYnew  %竖直向上运动Ydown=PgoalYnew;Yup  =PgoalY;elseYdown=PgoalYnew;Yup  =ProbotY;  end      IndexX= ((ProbotX-CirR) < CirX) & (CirX < (ProbotX+CirR));IndexY= (Ydown < CirY) & (CirY < Yup);IndexALL=IndexX & IndexY;elseif DectLineF == 2if ProbotX < PgoalXnew  %水平向右运动Xleft = ProbotX;Xright= PgoalXnew;elseXleft = PgoalXnew;Xright= ProbotX;  endIndexX= (Xleft < CirX) & (CirX < Xright);IndexY= ((ProbotY-CirR) < CirX) & (CirX < (ProbotY+CirR));IndexALL=IndexX & IndexY;    elseAngelDectLine=atan(DectLineK);if DectLineK > 0            if ProbotX < PgoalXnew  %正斜率向上运动Xleft = ProbotX;Yleft = ProbotY;Xright= PgoalXnew;                Yright= PgoalYnew; else                 %正斜率向下运动Xleft = PgoalXnew;Yleft = PgoalYnew;Xright= ProbotX;                Yright= ProbotY;    end   LineBleft = Yleft + Xleft/DectLineK;LineBright= Yright + Xright/DectLineK;Btemp=CirR/cos(AngelDectLine);Xtemp=CirR*sin(AngelDectLine);             LineBup  = DectLineB +Btemp;LineBdown= DectLineB -Btemp;X1=Xleft-Xtemp;X2=Xleft+Xtemp;X3=Xright-Xtemp;X4=Xright+Xtemp;IndexX1= (X1 < CirX) & (CirX < X2);IndexX2= (X2 < CirX) & (CirX < X3); IndexX3= (X3 < CirX) & (CirX < X4);Ytemp=CirX/DectLineK;Y1=LineBleft-Ytemp;  %与斜率垂直的左右两条直线Y2=LineBright-Ytemp;Ytemp=CirX*DectLineK;Y3=LineBup  +Ytemp; %与斜率平行的上下两条直线Y4=LineBdown+Ytemp;IndexY1= (Y1 < CirY) & (CirY < Y3);IndexY2= (Y4 < CirY) & (CirY < Y3);IndexY3= (Y4 < CirY) & (CirY < Y2);IndexALL=(IndexX1 & IndexY1)|(IndexX2 & IndexY2)|(IndexX3 & IndexY3);  else if ProbotX < PgoalXnew  %负斜率向 下运动Xleft = ProbotX;Yleft = ProbotY;Xright= PgoalXnew;                Yright= PgoalYnew;  else                 %负斜率向 上运动Xleft = PgoalXnew;Yleft = PgoalYnew;Xright= ProbotX;                 Yright= ProbotY;  end    LineBleft = Yleft + Xleft/DectLineK;LineBright= Yright + Xright/DectLineK;Btemp=CirR/cos(AngelDectLine);   %平行线的截矩Xtemp=CirR*sin(-AngelDectLine);  %注意加负号           LineBup  = DectLineB +Btemp;LineBdown= DectLineB -Btemp;X1=Xleft-Xtemp;X2=Xleft+Xtemp;X3=Xright-Xtemp;X4=Xright+Xtemp;IndexX1= (X1 < CirX) & (CirX < X2);IndexX2= (X2 < CirX) & (CirX < X3); IndexX3= (X3 < CirX) & (CirX < X4);Ytemp=CirX/DectLineK;Y1=LineBleft-Ytemp;  %与斜率垂直的左右两条直线Y2=LineBright-Ytemp;Ytemp=CirX*DectLineK;Y3=LineBup  +Ytemp; %与斜率平行的上下两条直线Y4=LineBdown+Ytemp;IndexY1= (Y4 < CirY) & (CirY < Y1);IndexY2= (Y4 < CirY) & (CirY < Y3);IndexY3= (Y2 < CirY) & (CirY < Y3);IndexALL=(IndexX1 & IndexY1)|(IndexX2 & IndexY2)|(IndexX3 & IndexY3);              end        end%如果没有找出,机器可直达目标,穿越障碍成功,结束探测CheckX=CirX(IndexALL);   if isempty(CheckX) Distance =0;Flag=0;return;end    CirXt=CirX(IndexALL);   %此时可能有多个CirYt=CirY(IndexALL); CirRt=CirR(IndexALL);     if DProbotToBar < 0 %出现严重异常Distance =0;Flag=2;elseDistance =DProbotToBar;Flag=1;              end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]郭娜,李彩虹,王迪,张宁,宋莉.基于模糊控制的移动机器人局部路径规划[J].山东理工大学学报(自 然 科 学 版)

【路径规划】基于matlab模糊控制机器人路径规划【含Matlab源码 1643期】相关推荐

  1. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  2. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  7. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  10. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 2022-2028年中国电子陶瓷行业深度调研及投资前景预测报告
  2. 设计模式篇之——策略设计模式
  3. 怎么设置ppt页面的长度和宽度_将PPT里的字弄很小,PPT就有逼格吗?
  4. mybatis使用时遇到的一些问题------模糊查询、处理大于号小于号、相关函数替换空值...
  5. C++string类常用函数 c++中的string常用函数用法总结
  6. php短信接代码,php短信接口代码
  7. gridview绑定数据mysql_【gridview控件】怎么绑定数据库并显示?
  8. [20210425]什么?号称世界上最难的数独居然没有坚持到2秒
  9. 原生JS实现canvas移动端电子签名板/画板
  10. 头歌 Java IO 答案 增加章节java学习-Java输入输出之字节缓冲IO流之复制文件
  11. java 委托 代理 区别_区分委托,组合和聚合(Java OOdevise)
  12. MySQL快速解决“is marked as crashed and should be repaired“故障
  13. 【年度榜单】2020大数据产业创新技术突破丨数据猿·金猿榜
  14. 城市太美、生活步调太悠闲
  15. 算法 64式 17、排列组合算法整理
  16. 载波聚合mac_Lte-a终端测试仪表在载波聚合下mac层数据调度方法
  17. 学生管理系统(总结)
  18. 大龄青年能转行IT吗?30岁老哥现身说法
  19. python好玩游戏的物品清单_Python学习笔记函数之小结好玩游戏的物品清单
  20. 物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

热门文章

  1. Java-JVM第一篇认识JVM
  2. Spring学习手札(二)面向切面编程AOP
  3. ios swift学习日记4-字符串和字符
  4. MS SQL的某一数据库成了Single User模式
  5. C/C++文件操作经验总结
  6. foreach 和 list.foreach 初步测试
  7. 20200716每日一句
  8. 面向对象设计 腾讯代码案例 学习人家的模式和格式
  9. 20191117每日一句 EVERYBODY DIES, BUT NOT EVERYBODY LIVES
  10. web of science上查找相关会议和期刊的论文