基于BINN算法的CCPP全路径覆盖算法

news2024/11/27 8:21:08

1.CCPP整体算法文档

1.1 ccpp基础介绍

全路径覆盖算法(CCPP: Complete Coverage Path Planning)作为扫地机器人较为关键的组成部分,其问题的本质是:在栅格地图中,全覆盖路径规划问题就演变为寻找机器人的下一个移动位置,只有准确找出了该位置,才能使机器人自主规划出一条切实可行的无碰撞且重复率低的移动路径。

CCPP需解决的关键问题

  • 遍历工作区域内除障碍物以外的全部区域
  • 在遍历过程中有效避开所有障碍物
  • 在遍历过程中要尽量避免路径重复,缩短移动距离

CCPP技术指标

  • 区域覆盖率
  • 路径重复率
  • 总行程

路径规划方法分类(根据实现方法)

  • 传统经典算法
    • 基于图的方法
    • 基于栅格的方法
    • 势场法
    • 数学编程法
  • 智能方法
    • 横糊方法
    • 神经网络方法
    • 遗传算法

路径搜索要求

  • 路径表达:以环境模型中的结点序列组成或由直线段序列组成
  • 路径平滑:根据机器人运动学或动力学约束,形成机器人可跟踪执行的运动轨迹
    • 运动学约束:路径轨迹的一阶导数应连续
    • 动力学约束:路径轨迹的二阶导数应连续

1.2 ccpp输入输出

ccpp

包名文件名输入输出功能
ccppmain.cpp//创建rosnode,并调用ccpp_ros
ccpp_ros.cpp/路径点集获取地图信息以及机器人当前位置,通过调用binn,将返回的结果发布
binn.cpp地图信息&起始点信息路径点集通过binn算法+A*算法获取全路径规划中关键点集,并将返回的结果保存为vector数组
AStar.cpp运动起点&终点路径点集通过实际地图信息、当前机器人所在位置以及目标位置判断出一条可行路径

1.3 ccpp所用代码库

目前ccpp环境搭建是基于ros环境的,同时基于Opencv去进行分析

环境功能版本
ROS负责机器人信息交互的通讯平台ROS melodic
Opencv负责处理pgm图像信息Opencv 3.5

1.3ccpp处理流程

1.4 ccpp代码思路

​ 该部分主要是对上文中的binn.cpp以及AStar.cpp的代码思路解析

  1. 获取以pgm格式保存的场景地图

  2. 根据机器人当前的位置获取自身所在地图的位置信息

  3. 将地图信息已数组的形式进行保存

  4. 更新当前栅格的浓度信息,并从八个方向进行浓度探测

  5. 判断当前位姿是否为可记录回溯点,如果是,则保存并等待回溯。

  6. 选择最优方向前进,并重复第四、五步

  7. 如果八个方向均走过,则进入回溯,并寻找下一个需要清扫的区域

  8. A*算法求得最优的路径点集

  9. 继续执行上述4-8步,直到回溯点集全部清空

ccpp使用教程

目前ccpp仍处于调试阶段,并未生成动态链接库嵌入到整体行为树中。所以目前在system_tests中开辟一个ccpp_test.launch来方便调试。只需要运行:

roslaunch system_tests ccpp_test.launch

ccpp处理结果

全路径覆盖结果图
在这里插入图片描述

全路径覆盖关键路径图
在这里插入图片描述

纯路径规划示意图

在这里插入图片描述

2. 核心代码

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java计算机毕业设计ssm职工社保信息管理系统t22xh(附源码、数据库)

java计算机毕业设计ssm职工社保信息管理系统t22xh(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

建设银行互联网经营战略优化方案设计

目 录一、绪论 1 (一)项目背景 1 (二)项目意义 1 (三)项目内容和方法 1 二、互联网金融与我国商业银行概述 3 (一)互联网金融的内涵 3 (二)互联网金融的功…

【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )

需要全部代码请点赞关注收藏后评论区留言私信~~~ 下面通过WordCount,WordMean等几个例子讲解MapReduce的实际应用,编程环境都是以Hadoop MapReduce为基础 一、WordCount WordCount用于计算文件中每个单词出现的次数,非常适合采用MapReduce进…

描述统计 | 学习笔记 (全)

一.导论 统计学是通过收集,整理,分析,描述数据等手段,以达到推断所测对象的本质,甚至预测对象未来的一门综合性科学。其目的是探索数据的内在数量规律性,以达到对客观事物的科学认识 统计的本业是消化数据…

一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料

英文名称:ICG-CBT 保存条件:-20℃ 产品类别:化学试剂 结构式: 产品描述:(ICG)是一种近红外I区荧光染料[1],是药品监督管理局(FDA)批准的体内应用染料。其激发和发射波长分别在785 nm、810 nm…

【C++初阶7-stringOJ】上手用一下

前言 本期通过几道OJ题,上手用用string。 1. 把字符串转换成整数 描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0 数据范围:字符串长度满足0 ≤ n ≤100 进阶&am…

【读书笔记】万物原理——打开客观世界与主观情感的大门

被尹烨老师推荐种草的,以为是一本讲生命科学的科普书,看上了又以为是说量子物理等高端科学研究的,最后被互补性理论惊到了。这哪里只是一本打开认知客观世界的大门,还让我重识内心。那些看不见摸不着的情感,比如同情心…

数字孪生十大问题有哪些?通俗解释指的是什么?

数字孪生(Digital Twins)之火热,已经成为了一个不争的事实。数字孪生的概念,起源于制造业,现在已广泛应用到了智慧城市、智慧交通、智慧农业、智慧医疗、智能家居等行业。数字孪生十大问题有哪些?指的是什么…

018 | 服饰颜色与族群名称对颜色认知的影响 | 大学生创新训练项目申请书 | 极致技术工厂

研究目的 本项目以瑶、壮、汉三个民族、六个族群为研究对象,通过七个实验探索服饰颜色与族群名称对颜色认知的影响。重点提出以下两个问题: (1)服饰颜色是否影响少数民族个体的颜色偏好? (2)服…

刷完 300 道 LeetCode 题后,我膨胀到要飘起来了!纯正 Java 版

算法题就好像科举考试时代背的八股文,是知识改变命运的代表作。你不刷,不管是校招还是社招,就很过算法题这一关。 我整理的这份 LeetCode 刷题笔记足足 300 道,对算法薄弱和需要提高算法的同学很有帮助。 随便打开一道题解感受下…

【云原生】监视Docker桌面的容器内存和CPU使用情况

目录 一、如何监视Docker桌面的容器内存和CPU使用情况 1、stats命令 2、Docker 统计命令stats是如何工作的 2.1、命令与描述 2.2、OPTIONS 2.3、例子 2.4、格式化 3、满足资源使用扩展 4、如何安装“资源使用情况”扩展插件? 5、总结 一、如何监视Docker桌…

SQL记录

DateDiff函数 定义和用法 DATEDIFF() 函数返回两个日期之间的天数。 语法 DATEDIFF(date1,date2) date1 和 date2 参数是合法的日期或日期/时间表达式。 注释:只有值的日期部分参与计算。 实例 下面是 SELECT 语句: SELECT DATEDIFF(‘2008-11-30’,‘2…

WinRar去除弹窗广告的学习和研究

不可否认WinRar是一款优秀的解压缩软件,尤其是在Windows中使用还是较频繁的。 但是使用时弹出: 这就有点难受了。 那么怎么解决呢?好吧,以学习和研究为目的开始折腾...... 经过对WinRar不同版本的试用,原来这个弹窗是…

ubuntu修改网易云音乐分辨率显示

问题 网易云音乐不能随着系统显示的缩放比自动调整,分辨率较高的显示器上界面显示特别小。只能通过如下的办法解决: ubuntu修改网易云音乐分辨率显示,也就是修改显示 DPI 。 方法 sudo vim /usr/share/applications/netease-cloud-music.d…

12月12日

centos7查找java在哪,which java确认环境变量是否生效,可以输出一下:echo $JAVA_HOME同一个github账号上的所有的项目只需配置一次私钥和公钥,私钥和公钥的作用是你本机ip和这个账户所在github约定的一个对接方式,配置…

微服务框架 SpringCloud微服务架构 分布式事务 38 动手实践 38.5 实现AT 模式

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式事务 文章目录微服务框架分布式事务38 动手实践38.5 实现AT 模式38.5.1 实现 AT 模式38 动手实践 38.5 实现AT 模式 38.5.1 实现 AT…

docker部署mysql问题汇总

部署命令 注意conf文件在实际容器中的位置,有的版本是直接在/etc目录下,可以先创建一个容器进去看看 docker run --restartalways --privilegedtrue \ -v $PWD/mysql/data/:/var/lib/mysql \ -v $PWD/mysql/logs/:/var/log/mysql \ -v $PWD/mysql/con…

Shell脚本学习指南(七)——产生脚本

文章目录前言路径查找软件构建自动化前言 本篇,我们将进一步处理更复杂的工作。我们认为这里举出的例子都是一般用得到的工具,它们每一个都截然不同,且在大多数UNIX工具集里也没有。 在篇中的程序,包括命令行参数分析、在远程主…

电气数据|IEEE118(含风能太阳能)

1 概述 在本科或者研究生写论文时,经常需要用到很多数据,所以数据显得尤为重要。 下面这段文字,为了字数需要,所以可以忽略。 现代这种“探索、征服”的心态,从世界地图的演变可以看得一目了然。早在历史进到现代之前…

猿如意中的【PyCharm社区版】工具详情介绍

猿如意中的【PyCharm社区版】工具详情介绍,手把手教你使用猿如意下载、安装和配置【PyCharm社区版】,希望能帮助到有需要的童鞋。 文章目录前言一、猿如意介绍二、PyCharm社区版开发工具简介1.【PyCharm专业版】和【PyCharm社区版】的功能区别2.【PyChar…