基于BINN算法的CCPP全路径覆盖算法
1.CCPP整体算法文档
1.1 ccpp基础介绍
全路径覆盖算法(CCPP: Complete Coverage Path Planning)作为扫地机器人较为关键的组成部分,其问题的本质是:在栅格地图中,全覆盖路径规划问题就演变为寻找机器人的下一个移动位置,只有准确找出了该位置,才能使机器人自主规划出一条切实可行的无碰撞且重复率低的移动路径。
CCPP需解决的关键问题:
- 遍历工作区域内除障碍物以外的全部区域
- 在遍历过程中有效避开所有障碍物
- 在遍历过程中要尽量避免路径重复,缩短移动距离
CCPP技术指标:
- 区域覆盖率
- 路径重复率
- 总行程
路径规划方法分类(根据实现方法)
- 传统经典算法
- 基于图的方法
- 基于栅格的方法
- 势场法
- 数学编程法
- 智能方法
- 横糊方法
- 神经网络方法
- 遗传算法
路径搜索要求
- 路径表达:以环境模型中的结点序列组成或由直线段序列组成
- 路径平滑:根据机器人运动学或动力学约束,形成机器人可跟踪执行的运动轨迹
- 运动学约束:路径轨迹的一阶导数应连续
- 动力学约束:路径轨迹的二阶导数应连续
1.2 ccpp输入输出
ccpp
包名 | 文件名 | 输入 | 输出 | 功能 |
---|---|---|---|---|
ccpp | main.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的代码思路解析
获取以pgm格式保存的场景地图
根据机器人当前的位置获取自身所在地图的位置信息
将地图信息已数组的形式进行保存
更新当前栅格的浓度信息,并从八个方向进行浓度探测
判断当前位姿是否为可记录回溯点,如果是,则保存并等待回溯。
选择最优方向前进,并重复第四、五步
如果八个方向均走过,则进入回溯,并寻找下一个需要清扫的区域
A*算法求得最优的路径点集
继续执行上述4-8步,直到回溯点集全部清空
ccpp使用教程
目前ccpp仍处于调试阶段,并未生成动态链接库嵌入到整体行为树中。所以目前在system_tests
中开辟一个ccpp_test.launch
来方便调试。只需要运行:
roslaunch system_tests ccpp_test.launch
ccpp处理结果
全路径覆盖结果图
全路径覆盖关键路径图
纯路径规划示意图
2. 核心代码
…详情请参照古月居
基于BINN算法的CCPP全路径覆盖算法相关推荐
- 【项目】无人清扫车路径规划:基于ATSP的Lanelet2结构化道路覆盖算法
实习期间一直在做清扫车项目的全局路径规划,在此记录一下. 本文针对Lanelet2框架下的结构化道路全覆盖问题,将其抽象为ATSP问题,进行求解.最终效果为,实现了在全部车道覆盖至少一次的前提下,最短 ...
- java多叉树全路径_算法实战——多叉树全路径遍历
本文为原创作品,首发于微信公众号:[坂本先生],如需转载请在文首明显位置标明"转载于微信公众号:[坂本先生]",否则追究其法律责任. 微信文章地址:实战算法--多叉树全路径遍历 前 ...
- 《MATLAB智能算法30个案例》:第23章 基于蚁群算法的二维路径规划算法
<MATLAB智能算法30个案例>:第23章 基于蚁群算法的二维路径规划算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
- 多机器人路径规划的代码_知荐 | 地平线机器人算法工程师总结六大路径规划算法...
来源 | 知乎 知圈 | 进"高精度地图社群",请加微信15221054164,备注地图 目录 1 自主机器人近距离操作运动规划体系········1.1 单个自主机器人的规划体系 ...
- RRT、RRT-connect、RRT*等算法、A*等等路径规划算法
1 原始RRT算法运行结果:python,这里以2D_rrt及其衍生相关算法为例(边做边更新) CV搬运工们,先上github连接:(点个赞呗)(不想要拿github包的后面有现成代码)GitHub ...
- 栅格法路径算法C语言,基于地图栅格与QPSO算法结合的机器人路径规划方法与流程...
本发明属于机器人路径规划领域,提出一种基于地图栅格与QPSO结合的机器人路径规划方法. 背景技术: 移动机器人路径规划是寻找一条无碰撞的可行路径问题的方法.近些年,群智能优化算法逐渐成为移动机器人路径 ...
- 同伦算法matlab程序,一种新的基于Matlab环境的同伦路径跟踪算法
MATLAB 第28卷第5期2007年5月 东北大学学报(自然科学版) V01.28.No.5 JournalofNortheasternUniversity(NaturalScience) May ...
- 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】
一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...
- 【BA三维路径规划】基于matlab改进的蝙蝠算法农用无人机三维路径规划【含Matlab源码 1514期】
一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...
最新文章
- C++中std::reverse和std::reverse_copy的使用
- Java第一天学习笔记整理
- linux命令vgdisplay提示权限不足,linux常用命令总结
- Git clone之后你的硬盘上究竟发生了什么?
- 松下a6伺服x4接线图_2021中山东凤松下温控器回收价高同行
- (转)Awk使用案例总结(运维必会)
- 【python】装饰器的练习题
- SAP License:客户特别总帐统驭科目某天余额取数逻辑
- 零基础带你学习MySQL—Select语句以及注意事项(十)
- js Maximum call stack size exceeded
- 计算机专业中英文,计算机专业词汇中英文对照
- ubuntu 20.04命令行模式_Ubuntu18.04LTS升级到20.04LTS
- 076 hashlib模块和hmac模块
- Thinkpad x230 win7/xp 双系统安装全过程
- mimetype知识点备忘
- 以太网电缆作为“传输天线”,黑客可从气隙系统窃取数据
- IDC:微软Windows将于2007年失去统治地位
- 发明专利费用减缓需要哪些资料?
- 2020年起重机司机(限桥式起重机)考试及起重机司机(限桥式起重机)答案解析
- 查看域名是否支持IPv6
热门文章
- Flink_企业级风控平台架构建设_01
- SVN管理文件的步骤
- Linux操作系统渗透测试
- 6. 利用word的替换功能可以完成很多工作——word高级替换技巧
- 【论文写作】LaTeX排版工具 | 写给初学者的一篇容易上手的文档
- 模拟电子入门需要掌握的点(上)
- 图像的低频,中频,高频信息含义?
- 网站如何防止DDOS攻击?
- openwrt 19.07报错:module ‘luci.cbi‘ not found
- CF1151F Sonya and Informatics