三维 A* 搜索算法(Rviz可视化)

本项目使用的 A* 源码 来自:HKUST-Aerial-Robotics/Fast-Planner

本项目开源在:https://github.com/bhu619/3D-AStar-Planner如果项目对你有帮助,希望能帮我点个 Star~!感谢您!

起因是我在复现 Fast-Planner 的时候发现代码中的 Geometric path planning (几何 A* algorithm)部分不完整,无法直接使用,于是我把项目中的 AStar 源码拿出来自己写了一个模拟 A*搜索的代码。

算法效果

遇到的问题

1. 为什么搜索的距离稍微给大,就无法搜索到路径了?

哪怕 z 轴无变化,同样找不到路径。在A*搜索过程中,邻居节点扩张范围主要受到 搜索分辨率resolution_、节点内存池的大小path_node_pool_[allocate_num_]以及启发式函数权重lambda_heu_ 等多重因素的限制。这些限制综合作用,使得搜索过程不至于无限制地向整个空间扩张,从而在可用资源(时间和内存)内找到可行路径或者在无法到达目标时及时结束搜索。

起点:[1.0, 1.0, 1.0]

终点:[1.8, 1.8, 4.0]

起点:[1.0, 1.0, 1.0]

终点:[1.8, 1.8, 4.5]

起点:[1.0, 1.0, 1.0]

终点:[1.8, 1.8, 5.0]

已经找不到点了

为了找到路径无法搜索的原因,我把 A* 搜索过程中的扩张的邻居节点在 Rviz 中可视化了。

可以看到,当目标点设为 [2.9, 1.1, 8.4] 的时候,节点池耗尽了,且邻居节点的扩张远没有到终点位置。

造成此现象有两个原因:

  1. 节点池分配的大小不够。
  2. 搜索分辨率过低。

增大节点池大小

增大节点池大小为10000000 时,终端显示分配的节点数为 110680,貌似最大的节点数就是 100000 左右了。

增大搜索分辨率

search_resolution 从 0.1 变为 0.2 时:

search_resolution 变为 0.3 时,0.3 的时候已经能够搜索整个地图空间了 (10 * 10 * 10):

search_resolution 变为 0.4 时:

目前的地图大小,搜索分辨率设置为0.3就足够使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红茶川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值