多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现


多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。

详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现

自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时需要在避障的同时尽可能地保持队形,选择最优的避障路线以使障碍物对编队稳定性的影响降至最低。

避障算法原理

机器人在实际运动过程中,会借助自身传感器(如激光雷达)对周围环境进行扫描检测,如下图所示
人工势场法算法原理
假设在k时刻机器人可扫描到一定范围内的障碍物坐标xobsx_{obs}(包括其他机器人),障碍物会对机器人jj的速度产生一个斥力影响RRRR满足:
Rj(k)=l=1Mα(xj(k)xobsl)R_j(k)=\sum^M_{l=1}\alpha(x_j(k)-x_{obs}^l)
其中MM为障碍物个数,α=1dj(k)1dMδd\alpha=\frac{\frac{1}{d_j(k)}-\frac{1}{d_M}}{\delta\cdot d},dj(k)=xRxj(k)d_j(k)=\|x_R-x_j(k)\|dMd_M为探测距离,δ\delta为一常数,在此时刻避障响应R(k)R(k)会对机器人的速度控制产生一个影响,此时编队中领航者控制模型如下uN(k)=m+kD(k)+iNiaNirNi(k)+βRN(k)u_N(k)=m+k\cdot D(k)+\sum_{i\in N_i}a_{Ni}r_{Ni}(k)+\beta\cdot R_N(k)其中β\beta为一常数,而跟随者的控制算法为ui(k)=εjNiaij(xj(k)xi(k)rij(k))+βRi(k)u_i(k)=\varepsilon\sum_{j\in N_i}a_{ij}(x_j(k)-x_i(k)-r_{ij}(k))+\beta\cdot R_i(k)这个影响使得机器人在最大限度保持原有编队的基础上能够有效躲避障碍物,并且会随着障碍物距离的变近而变大,从而保证机器人的安全。

避障算法仿真

在前文编队一致性算法的仿真上(ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现)加入上述避障算法,在编队的任务路径上设置障碍物,使障碍物干扰机器人的正常任务,观察机器人编队的运动结果,目的是使编队在躲避障碍物的同时尽可能保持编队稳定性。
MATLAB仿真结果如下所示
编队仿真
从上图可以看出,障碍物(即图中叉号所在)对编队产生了影响,可以看出编队在安全范围内检测到了障碍物后进行避障运算躲开了障碍物,但很快又恢复稳定,编队能继续保持稳定地执行任务。这种避障方法对于编队协同算法的效果受其实时恢复的影响。

MATLAB仿真源码详见多机器人编队及避障算法.zip
ROS下python源码详见
Ros-Formation-and-Obstacle-Avoidance

以上是关于多机器协同编队的人工势场法算法原理讲解。
码字不易,喜欢的话请点赞收藏关注哦,您的支持是博主最大的动力。

博主有两年多ROS的使用经验,目前仍在不停研究中。本系列ROS及SLAM进阶教程将涵盖ROS的进阶功能使用、机器人SLAM及导航的设计及研究等领域,持续不断更新中。如果大家有相关问题或发现作者漏洞欢迎私戳,同时欢迎关注收藏。
同时欢迎关注博主Git:
https://github.com/redglassli

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读