一、方法讲解:

本项目分为三个部分:机器人周围一定范围内基于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米

基于RRT的机器人自主探索建图的更多相关文章

  1. SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图

    摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障 ...

  2. 基于ros2 dashing的建图导航探索

    基于ros2 dashing的建图导航探索 1. 环境准备 安装ros2 dashing, 参考链接: https://index.ros.org/doc/ros2/Installation/Dash ...

  3. 除了ROS ,机器人自主定位导航还能怎么做?

    博客转载自:https://www.leiphone.com/news/201609/10QD7yp7JFV9H9Ni.html 雷锋网(公众号:雷锋网)按:本文作者科技剪刀手,思岚科技技术顾问. 随 ...

  4. cartographer环境建立以及建图测试(详细级)

  5. 机器人自主移动的秘密:实际应用中,SLAM究竟是如何实现的?(二)

    博客转载自:https://www.leiphone.com/news/201612/FRzmoEI8Iud6CmT2.html 雷锋网(公众号:雷锋网)按:本文作者SLAMTEC(思岚科技公号sla ...

  6. 基于 Mathematica 的机器人仿真环境(机械臂篇)[转]

    完美的教程,没有之一,收藏学习. 目的 本文手把手教你在 Mathematica 软件中搭建机器人的仿真环境,具体包括以下内容(所使用的版本是 Mathematica 11.1,更早的版本可能缺少某些 ...

  7. 【BZOJ-2879】美食节 最小费用最大流 + 动态建图

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1366  Solved: 737[Submit][Status] ...

  8. 使用hector-slam和Kinect V1建图

    一.建图实际操作 下载源码测试源码,depthimage_to_laserscan,参考https://blog.csdn.net/u010925447/article/details/5649468 ...

  9. 通过gmapping和伪造的odom,完成Kinect建图

    传感器信息: 环境深度信息:sensor_msgs/laserScan -----> RGBD三维点云数据:通过ros功能包depthimage to laserscan完成深度相机数据转换成激 ...

随机推荐

  1. docker-compose 构建mongodb并导入基础数据示例

    使用docker-compose构建mongodb服务并导入基础数据示例. 1.文件目录结构 ——mongo/ |——docker-compose.yml |——mongo-Dockerfile |— ...

  2. linux环境下nginx配置

    1.反向代理配置 #  nginx/conf/nginx.conf

  3. 安装破解IDEA(个人使用)

    安装的过程,许多的教程都会有,我在这里附上一两个链接吧:https://blog.csdn.net/newabcc/article/details/80601933 他这里也有破解过程,但是比较麻烦, ...

  4. 关于Pycharm基本操作笔记

    创建 project(工程,译音:破拽科特) 1.Create New project(创建一个新的工程,译音:科瑞特 纽 破摘科特) 2.pure python(纯派森,译音:皮忧儿 派森) 3.l ...

  5. Spark Streaming 交互 Kafka的两种方式

    一.Spark Streaming连Kafka(重点) 方式一:Receiver方式连:走磁盘 使用High Level API(高阶API)实现Offset自动管理,灵活性差,处理数据时,如果某一时 ...

  6. JavaSE 第二次学习随笔(一)

    Java是一种区分大小写的强类型准动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化,类型的检查是在运行时做的,优点为方便阅读,清晰明了,缺点 ...

  7. POJ 1286 Pólya定理

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9162   Accepted: 3786 ...

  8. python——int()函数

    1. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢? 小数取整会采用比较暴力的截断方式,即向下取整.(注:5.5向上取整为6,向下取整为5) 2. 我们人类思维是习惯于“四舍五入” ...

  9. react+redux状态管理实现排序 合并多个reducer文件

    这个demo只有一个reducer 所以合并reducer这个demo用不到 ,但是我写出来这样大家以后可以用到,很好用,管理多个reducer,因为只要用到redux就不会只有一个reducer所以 ...

  10. Docker容器 - 容器时间跟宿主机时间同步

    在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致. 转载自:https://www.cnblogs.com/kevingrac ...