路径规划:基于QT的Astar算法演示器

项目说明

这是我自主研发的小软件,用于《算法设计与优化》的课设作业:无人机路径搜索和优化算法。这篇文章早在2023年底的时候已经发布了,之所以再发一遍是因为演示部分一直没更新,今天抽空把演示部分补上了,重新发布。

开发环境

基于 Qt 框架,使用 C++ 开发

OS:Windows

IDE:QT Creator

主界面布局

如何使用?

  • 下载安装

源码放在GitHub上,下载即可使用

  1. 直接通过链接进入下载源码,相信看本篇文章的同学都会使用GitHub,我不再细说。

  2. 当然也可以本地新建文件夹,然后使用命令克隆源码:

    1
    git clone git@github.com:JJLibra/Astar.git
  3. 考虑到GitHub访问比较慢,甚至无法访问,我把网盘链接也附上(提取码:16ca),但只有最新版本的代码:

下载源码以后,建议安装 QT Creator 打开 Astar.pro 项目工程文件,即可编辑做二次开发

  • Windows 中打包为可执行文件

推荐使用 Enigma Virtual Box 打包,可以参考这篇博客

功能介绍

  • 界面设计
  1. 自定义地图宽高
  2. 地图单元格大小可调
  3. 自定义起点、终点、障碍物
  4. 底部状态栏,便于调试
  5. 顶部工具栏可隐藏
  6. 显示最优路径的同时将探索点用不同颜色显示在地图中
  7. 绘制地图可以 .Amap 文件保存到本地文件夹
  8. 可将保存的 .Amap 文件载入地图
  9. 性能分析,数据可视化处理
  10. 生成随机地图(生成逻辑待优化,目前还不能确保生成的地图一定存在可行路径)
  11. 可导入本地图片作为地图背景,一种伪栅格化操作
  12. “关于我们”页面
  13. 一点拙劣的 QSS 美化
  • 算法设计
  1. 深度优先搜索算法
  2. 广度优先搜索算法
  3. Dijkstra 算法
  4. 最佳优先搜索算法
  5. 传统 A 星算法
  6. 双向 A 星算法
  7. 优化 A 星算法
    • 三种距离计算定义预估距离 h
      • 切比雪夫距离
      • 曼哈顿距离
      • 欧几里得距离
    • 整体动态加权 dynamic
    • 自定义拐角权值 penalty
    • 自定义安全距离模式 alpha
  8. 三种增量式搜索算法(还不够完善,不建议使用)

程序演示

由于流量有限,GIF的画质可能不是很高,实际运行情况会更好看的🙏

  • 设置地图

本项目可以自由设置地图的长宽,单元格有四种状态选择:

  • 优化Astar算法演示 & 绘制贝塞尔曲线

下面是其中一种优化A星算法的演示,并且本项目采用贝塞尔曲线作为无人机最后的路径轨迹:

  • 生成随机地图 & 重置地图数据

本项目还支持生成随机地图(生成逻辑比较简单,利用伪随机数生成,大家可以优化一下这里的生成逻辑)和一键重置地图参数:

  • 保存地图

考虑到项目的展示环节,不可能现场画地图,所以本项目支持将地图保存到本地:

  • 打开地图 & 深度优先演示

支持打开保存的.Amap文件,下面还演示了深度优先算法,视频中忘记录深搜最短,实际按下深搜最短可以获得所有深搜路径中的最短路径(深搜实现没有问题,只是操作时需要注意,一步步来,否则容易出bug):

  • 打开和清除背景图片

本来还想要开发实际地图栅格化的功能,但是太麻烦了,时间不太够,就直接开发了这个导入图片作为背景,然后描绘出地图(提供一种思路:利用百度或者高德等第三方API获取地图数据):

  • 其他功能

上面只是演示了部分算法和功能,本项目还有不少小细节(关于页、可视化性能分析、操作提示框、页脚状态栏、进入的淡入淡出…):

其他说明

由于项目用于学校的课设,所以一些 ico 图标都与 NWPU 相关。如果有同学需要比较原始的版本,可以通过QQ:2565474095 联系我,免费提供代码。当然,如果有什么问题,我会尽我所能回答。另外,项目开发时有很多不规范的地方,小细节有不少但是bug也不少,bug改着改着代码有点史山…大家多多包涵。

还有一件重要的事,下载源码的同学千万别忘了给个免费的star哦,感谢大家~