路径规划:基于QT的Astar算法演示器
路径规划:基于QT的Astar算法演示器
xxfer项目说明
这是我自主研发的小软件,用于《算法设计与优化》的课设作业:无人机路径搜索和优化算法。这篇文章早在2023年底的时候已经发布了,之所以再发一遍是因为演示部分一直没更新,今天抽空把演示部分补上了,重新发布。
开发环境
基于 Qt 框架,使用 C++ 开发
OS:Windows
IDE:QT Creator
主界面布局
如何使用?
- 下载安装
源码放在GitHub上,下载即可使用
直接通过链接进入下载源码,相信看本篇文章的同学都会使用GitHub,我不再细说。
当然也可以本地新建文件夹,然后使用命令克隆源码:
1
git clone git@github.com:JJLibra/Astar.git
考虑到GitHub访问比较慢,甚至无法访问,我把网盘链接也附上(提取码:16ca),但只有最新版本的代码:
下载源码以后,建议安装 QT Creator 打开 Astar.pro 项目工程文件,即可编辑做二次开发
- Windows 中打包为可执行文件
推荐使用 Enigma Virtual Box 打包,可以参考这篇博客
功能介绍
- 界面设计
- 自定义地图宽高
- 地图单元格大小可调
- 自定义起点、终点、障碍物
- 底部状态栏,便于调试
- 顶部工具栏可隐藏
- 显示最优路径的同时将探索点用不同颜色显示在地图中
- 绘制地图可以 .Amap 文件保存到本地文件夹
- 可将保存的 .Amap 文件载入地图
- 性能分析,数据可视化处理
- 生成随机地图(生成逻辑待优化,目前还不能确保生成的地图一定存在可行路径)
- 可导入本地图片作为地图背景,一种伪栅格化操作
- “关于我们”页面
- 一点拙劣的 QSS 美化
- 算法设计
- 深度优先搜索算法
- 广度优先搜索算法
- Dijkstra 算法
- 最佳优先搜索算法
- 传统 A 星算法
- 双向 A 星算法
- 优化 A 星算法
- 三种距离计算定义预估距离 h
- 切比雪夫距离
- 曼哈顿距离
- 欧几里得距离
- 整体动态加权 dynamic
- 自定义拐角权值 penalty
- 自定义安全距离模式 alpha
- 三种距离计算定义预估距离 h
- 三种增量式搜索算法(还不够完善,不建议使用)
程序演示
- 设置地图
本项目可以自由设置地图的长宽,单元格有四种状态选择:
- 优化Astar算法演示 & 绘制贝塞尔曲线
下面是其中一种优化A星算法的演示,并且本项目采用贝塞尔曲线作为无人机最后的路径轨迹:
- 生成随机地图 & 重置地图数据
本项目还支持生成随机地图(生成逻辑比较简单,利用伪随机数生成,大家可以优化一下这里的生成逻辑)和一键重置地图参数:
- 保存地图
考虑到项目的展示环节,不可能现场画地图,所以本项目支持将地图保存到本地:
- 打开地图 & 深度优先演示
支持打开保存的.Amap文件,下面还演示了深度优先算法,视频中忘记录深搜最短
,实际按下深搜最短
可以获得所有深搜路径中的最短路径(深搜实现没有问题,只是操作时需要注意,一步步来,否则容易出bug):
- 打开和清除背景图片
本来还想要开发实际地图栅格化的功能,但是太麻烦了,时间不太够,就直接开发了这个导入图片作为背景,然后描绘出地图(提供一种思路:利用百度或者高德等第三方API获取地图数据):
- 其他功能
上面只是演示了部分算法和功能,本项目还有不少小细节(关于页、可视化性能分析、操作提示框、页脚状态栏、进入的淡入淡出…):
其他说明
由于项目用于学校的课设,所以一些 ico 图标都与 NWPU 相关。如果有同学需要比较原始的版本,可以通过QQ:2565474095 联系我,免费提供代码。当然,如果有什么问题,我会尽我所能回答。另外,项目开发时有很多不规范的地方,小细节有不少但是bug也不少,bug改着改着代码有点史山…大家多多包涵。
还有一件重要的事,下载源码的同学千万别忘了给个免费的star哦,感谢大家~