一、方法讲解:

    本项目分为三个部分:机器人周围一定范围内基于RRT的全局检测,

                                       根据上一步检测的未知区域点执行sklearn.cluster.MeanShift聚类,获取聚类中心;

                                       根据聚类中心计算各点增益,取最大增益点为目标,调用move_base规划路径和控制机器人行走。

           

二、各部分详解:

         2.1 基于RRT的全局检测:检测未知区域点并发布

                   以机器人为中心,激光采样范围为半径的正方形区域内,采用RRT算法计算未知区域点:如果RRT计算的某点在要计算的地图范围内,并且该点在地图内的状态为空闲区域点,则将该点加入RRT树;如果该点在地图的状态为未知状态区域,则该点不加入RRT树,并将该点发布出去;

        2.2 根据上一步检测的未知区域点执行sklearn.cluster.MeanShift聚类,获取聚类中心:

                该部分订阅全局检测的未知区域点,并利用MeanShift算法获取聚类中心;

       2.3 根据聚类中心计算各点增益,取最大增益点为目标,调用move_base规划路径和控制行走。

              根据设定的信息半径,和上一步的聚类中心,结合聚类中心离机器人的距离,计算各个聚类中心的信息增益,然后取信息增益最大的点作为目标点,调用move_base来向该点移动;新的聚类中心和增益不停被计算,因此在运动过程中目标点可能会改变,或者因为移动地图中原来的目标点变为空闲区域,则新的目标点会被计算。

   

三、效果展示:

       建图算法采用gmapping,激光角度220度.,激光范围14米。

       蓝色线:全局RRT树;

       绿色点:地图状态未知区域点

       绿色线:move_base全局规划

       紫色线:机器人移动轨迹。

例一:

 

 

 例二、

 

仿真环境下:左下角、底部及右下角图建歪了。

仿真模型大小:70米*64米

 

posted on 2017-12-28 15:46  serser  阅读(4173)  评论(2编辑  收藏  举报