上一篇介绍了遗传算法,本篇接着介绍应用于路径规划的另一种算法——粒子群算法(PSO),主要介绍算法的理论基础以及实现流程等。

本篇目录

  • 1. 算法起源与理论基础
  • 2. 算法实现流程
    • (1)粒子群初始化
    • (2)粒子群适应度计算
    • (3)速度与位置属性更新
  • 3. 路径规划应用示例
    • (1)粒子群初始化
    • (2)适应度计算
    • (3)速度与位置属性更新
    • (4)最佳适应度更新
  • 4. 遗传算法与粒子群算法
  • 5. 总结

1. 算法起源与理论基础

粒子群算法是可应用于路径规划的一种常用算法,最早源于对鸟群捕食行为的研究。当一块区域内只有一块食物时,鸟群不知道食物的具体位置,但知道食物与他们自身的距离有多远。那么,鸟群找到食物的最优策略为:确定距离食物最近的鸟的距离,然后在其附近搜素。

粒子群算法的具体描述为:在空间中首先随机给出一群粒子,每个粒子都有自己的位置与速度属性,根据具体的优化目标,规定粒子的适应度计算函数,通过不断更新粒子的位置与速度属性进行迭代,将整个粒子群的最优适应度逐渐提高,最终得到近似的问题最优解。

2. 算法实现流程

(1)粒子群初始化

首先确定粒子群的粒子个数n,最大迭代次数max,设置粒子的位置和速度范围xlim,vlim,除此以外,需要确定学习因子c_1,c_2以及权重系数w的大小,用于第(3)步中粒子位置与速度属性的更新。

第一步的最后,还需要对种群中每个粒子的速度和位置进行初始化。初始化位置属性时,可采用在问题规定区域内随机生成的方式,初始化速度属性时,在速度限制范围内随机取值,即:

式中,xlim_H与xlim_L分别代表位置范围的上下限,rand为0到1之间的随机数。

(2)粒子群适应度计算

根据问题的优化目标,确定适应度函数。对路径规划问题,可将适应度函数设置为与路径长度负相关的函数,如:

式中,cons为常数影响因子,可自行设置,D为路径长度。
确定适应度函数之后,对粒子群所有个体的适应度进行计算,根据结果对个体历史最优位置X_Pbest进行更新,同时确定当前种群的最佳适应度,并对整个粒子群的历史最优位置X_Gbest 进行更新。

(3)速度与位置属性更新

粒子群算法的速度与位置更新方式是确定的,具体过程如下:

式中,下标为pre,new分别代表更新前,后的粒子属性,c_1,c_2,w,X_Pbest,X_Gbest以及rand同(1),(2)步骤中的定义。
更新后,需要考虑边界条件xlim与vlim,对X_new与V_new进行判断,若更新后的位置与速度属性超出边界,则将边界值作为新的位置/速度属性。
(4)记录最佳适应度值
将本次迭代过程中粒子群的最佳适应度值记录,并对历史最佳适应度值进行更新。
至此,一次迭代过程完成。

整个算法的实现流程如下图:

3. 路径规划应用示例

与上一篇中介绍遗传算法的示例相同,路径规划问题如图:

(1)粒子群初始化

对于此路径规划问题,可以用每个粒子的维度来表示路径中间点的个数,这里设置为dim,同时,规定每个维度由x,y两个坐标构成。
接着,在位置允许范围内,随机生成每个粒子dim个维度的横纵坐标,同时设置粒子的最大速度为V_max。

(2)适应度计算

与上一篇
路径规划算法之——遗传算法
中的流程相似,这里同样考虑到碰撞问题,规定相同的碰撞函数,故适应度函数设置为:

式中:C为碰撞因子,如果碰撞函数检测到路径与障碍物碰撞,则C为0,否则C为1。

(3)速度与位置属性更新

利用上述2.3中的更新式更新每一个粒子的速度与位置属性。

(4)最佳适应度更新

通过计算粒子群中每个个体的适应度值,对个体历史最佳适应度与群体历史最佳适应度进行更新。

最后,判断是否达到最大迭代次数,若不是则返回到步骤(2)继续迭代,若是则计算结束。

4. 遗传算法与粒子群算法

通过上一篇和本篇的介绍,可以发现,遗传算法与粒子群算法这两种算法在某些方面是相通的,这里对他们做一个比较:

可以看出,两者的不同主要体现在个体的迭代方式上,粒子群算法相对遗传算法,迭代方式更简单,因此实现起来更方便。

5. 总结

本篇主要介绍了应用于路径规划中的另外一种算法——粒子群算法,介绍了算法的理论基础,实现流程,应用示例以及与遗传算法的比较。

到这里,算法补充板块就暂告一个段落了,希望对大家有所帮助。之后打算更新一些word与Python方面的内容,或者大家有什么想了解的,我们评论区见呀~

最后,文章原创不易,期待大家的三连哦~
												

六自由度机器人(机械臂)运动学建模及运动规划系列——避障路径规划算法补充:粒子群算法(PSO)相关推荐

  1. 六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划

    本篇目录 一.轨迹规划概述 二.关节空间规划 1. 点对点规划 2. 多节点规划 示例程序 三.笛卡尔空间规划 1. 速度规划 2. 位置规划 3. 姿态插补 4. 基于几何解法的一种简化位置规划方法 ...

  2. 六自由度机器人(机械臂)运动学建模及运动规划系列(二)——运动学分析

    本篇主要介绍六轴机械臂的运动学分析. 运动学分析是工业机器人研究和应用的重要内容,是运动控制的基础,主要研究机器人末端坐标系与基坐标系的转换关系,分为正运动学和逆运动学分析两部分. 另外,对于刚刚学习 ...

  3. 六自由度机器人(机械臂)运动学建模及运动规划系列(三)——机器人建模及运动学分析的Matlab仿真

    在完成机器人的建模以及运动学分析之后,可以利用Matlab中的Robotics工具箱进行仿真. 本篇目录 一.工具箱下载 二.机器人建模仿真 三.机器人运动学计算仿真 四.小结 一.工具箱下载 要在M ...

  4. 六自由度机器人(机械臂)运动学建模及运动规划系列(五)——避障路径规划

    在之前的内容中,我们对机器人的运动轨迹进行了规划,但是,这种规划方法的运动路径是根据简单的轨迹人为组合起来的,具有较大的任意性.在实际的复杂工作环境中,采用人工规划路径的方法,难以保证规划的效率和准确 ...

  5. 六自由度机器人(机械臂)运动学建模及运动规划系列——避障路径规划算法补充:遗传算法

    上一篇介绍了蚁群算法,本篇介绍路径规划的另一种经典算法--遗传算法,主要介绍算法原理,流程以及在路径规划中的应用示例. 目录 1. 理论基础 2. 算法实现流程 3. 路径规划应用示例 4. 总结 1 ...

  6. MATLAB机器人机械臂运动学正逆解、动力学建模仿真与轨迹规划

    MATLAB机器人机械臂运动学正逆解.动力学建模仿真与轨迹规划,雅克比矩阵求解.蒙特卡洛采样画出末端执行器工作空间 基于时间最优的改进粒子群优化算法机械臂轨迹规划设计 ID:4610679190520 ...

  7. 资深老师傅讲解六轴机器人机械臂的特征和优缺点!

    资深老师傅讲解六轴机器人机械臂的特征和优缺点! 六轴关节式机器人机械手臂使用旋转轴(或者叫活关节)进行装载.卸载和后处理工作.它使用一直线轴重新定位,可以做出灵活得像人类一样的动作.其具有六轴自由度, ...

  8. 【机器人学】使用代数法求解3自由度拟人机械臂的逆运动学解

    这篇博客会讨论一下使用解析法求解3自由度拟人机械臂的逆解及分析. 一.机械臂的逆解 机械臂的逆运动学问题就是由给定的末端执行器位置和方向,确定机械臂各个关节变量的值.机械臂的求解方法可以分为两大类:数 ...

  9. 修正逆解文章——六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)

    如下参考链接1的作者大大实现了UR5机械臂的正运动学和逆运动学的Matlab代码.但逆解部分在不同版本的Matlab中运行有错误. 本篇文章是MatlabR2016a下完成的,并说明一下原代码错误的原 ...

最新文章

  1. 把梯度下降算法变成酷炫游戏,这有一份深度学习通俗讲义
  2. Linux rm过滤后的目录6,Linux的部分命令
  3. 关于Gitlab若干权限问题
  4. 深入浅出Node.js (2) - 模块机制
  5. 封装时的权限控制符区别
  6. selinux + sudo +ssh +passwd
  7. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...
  8. 地方旅游产业运行监测与应急指挥平台/旅游资源管理平台/旅游产业监测平台/旅游应急指挥平台/旅游资源统计/旅游线路数据/旅游产业可视化大屏管理系统/餐饮场所数据/游客流量监测/景区数据监测/视频监控
  9. GDB 反向调试(Reverse Debugging)
  10. 透彻理解cmake(含PRIVATE,PUBLIC,INTERFACE的详细解释)
  11. 桌面计算机图标变黑块,win7桌面图标变成有黑色方块怎么办?4个步骤轻松搞定...
  12. 模拟电路仿真LTspice(3):三极管共发射极放大电路
  13. php 修改图片dpi,PHP修改PNG图片DPI
  14. 深圳药厂洁净车间装修SICOLAB深圳药厂GMP洁净车间装修
  15. Python基础教程 | 第三章 字符串
  16. 几何机器学习:如何在基础科学领域成为现实??
  17. Vert.x整合springboot
  18. 关于eclipse SE版本不支持建立web工程的问题
  19. 机器人自动化《RPA国内外平台深度对比》
  20. 疫情期间,大型企业如何保障日常会议的正常进行?

热门文章

  1. keil+stm32+jlink利用swd方式进行printf输出
  2. 华为服务器怎么查看cpu型号,华为2288HV5获取cpu、内存、存储等参数信息
  3. 95页智能工厂数字化、智能化规划、解决方案及建设方案2022
  4. R水文包--结果评价_气候变化指数分析
  5. JAVA简单的键盘输入
  6. codeforces 1203 E Boxers 贪心
  7. 互联网晚报 | 10月8日 星期五 | 《王者荣耀》累计收入破百亿美元;家乐福首家会员店即将开业;国调基金二期正式揭牌...
  8. Python爬取上万条大众点评数据,解读一线快餐品牌背后的秘密
  9. VMware+Server2012+ASP.NET网站配置实验
  10. 高德地图「海量点标记 + 海量标注」卡顿问题 解决方案