混合式A星代码解析_1 概述和框架

1.程序概述

在这里插入图片描述

1.1 程序来源

  • 程序来源:
    Kurzer, Karl写于2015年,算法基于hyridAstar.结合了基于采样和基于搜索的方法的优点.
    github 链接
  • 算法来源:
    程序中涉及到的算法来源于: hybrid A* algorithm developed by Dmitri Dolgov and Sebastian Thrun (Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments DOI: 10.1177/0278364909359210)

1.2 程序的特点

优点:

  • 结合了基于搜索树和基于A星的优点.
  • 拓展了离散空间的状态.状态的数量和距离目标的距离成反比.便于更快搜索到路径
  • 改进了启发式,采用只考虑动作约束的RR启发式和只考虑障碍物的一般启发式的结合,获得了比两者都要好的性能.

缺点:

  • 出来的曲线不是全局最优的,需要进行进一步优化.原文中,作者也做了进一步的优化.
  • 适用于有约束的场合,如果机器人是差速或者全向的,就没必要使用混合式A星,反而会降低速度.

1.3 适用场景

主要适用于阿克曼底盘的机器人.为其提供一个粗略的初始路径.

2.程序框架

这里暂且分析一个程序:manual.laungh,手动规划路径.

<launch>

<!-- Turn on hybrid_astar node -->

<node name="hybrid_astar" pkg="hybrid_astar" type="hybrid_astar" />

<node name="tf_broadcaster" pkg="hybrid_astar" type="tf_broadcaster" />

<node name="map_server" pkg="map_server" type="map_server" args="$(find hybrid_astar)/maps/map.yaml" />

<node name="rviz" pkg="rviz" type="rviz" args="-d $(find hybrid_astar)/launch/config.rviz" />

</launch>

可以看到,程序可以分成4个部分:

  • hybrid_astar
  • tf_broadcaster
  • map_server
  • rviz

打开rqt_graph查看节点之间的关系:
![[混合式A星代码解析 2022-06-17 15.42.55.excalidraw]]
一共有4个节点,
分别的功能为:

节点名对应程序功能
/a_starmain.cpp -> Planner.cpp规划的主程序
/tf_broadcastertf_broadcaster.cpp坐标转换
/map_servernavigation/map_server/src/map_server.cpp提供地图
/rivz可视化
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值