Hybrid A*

2021 年 8 月 25 日

  1. 算法简介

Hybrid A* 是在 A* 算法的基础上考虑移动机器人实际运动约束的算法,最早在 2010

年斯坦福大学提出,并在 DARPA 的城市挑战赛得以应用。传统的 A* 算法有以下缺点:

  • A* 算法适用于离散的情况,机器人的控制空间、轨迹空间都是连续的,所以生成的路径是不光滑的。
  • A* 算法规划出的路径不满足机器人的非完整性约束,例如非全向移动机器人不能横向移动。

而 Hybrid A* 算法作为 A* 算法的一个变种,适用于车辆三维状态空间 (x, y, Θ),通过修改状态更新规则,可以在 A* 离散节点中捕获车辆连续状态,从而保证路径的运动可行性。

  1. 车辆运动学模型

以阿克曼小车运动模型为例,车辆模型简化为二维平面上的刚体结构,任意时刻车辆的状态 q= (x, y, Θ)。车辆坐标的原点位于后轴中心位置,坐标轴与车身平行。v 代表车辆的速度,Φ 表示车轮转角(向左为正,向右为负),L 表示前轮和后轮的距离,如果车轮转角保持不变,车辆就会在原地转圈,半径为 ρ, 如图片1所示:

图 1: 阿克曼小车模型

考虑车辆的前进和倒退,令 dir 代表小车前进方向,则速度表示为 s=dir*v, 即设置小车速度大小一定,而方向与小车朝向有关。将小车朝向角约束在 −π/4 到 π/4 之间,因此小车可以实现前后左右一定范围移动。阿克曼小车运动学模型可表达为公式1

  1. 节点扩展

在 A* 路径搜索中,将空间划分为小网格,使用网格中心作为 A* 路径规划的节点,并在节点中寻找一条避开障碍物的路径,求解路径时只保证了连通性,不保证车辆实际可行。Hybrid A* 分别考虑空间连通性和车辆的朝向转角,通过考虑车辆的运动学约束,Hybrid A* 搜索出的路径节点可以是二维网格中的任意点。节点的扩展过程中,首先父亲节点根据当前车辆状态以及地图障碍物信息,以给定的 steer_list 和 direction_list(转角序列和方向序列)在一定的 move_step 内,求解出一段无碰撞的路径,将此段路径的最后点作为下一个子节点的位置。因此子节点在地图栅格中的位置取决于在运动约束下一段路径最终点落在栅格中的位置。

图 2: A* 搜索路径 图 3: Hybrid A* 搜索路径

节点的总代价 f_cost=g_cost+H*h_cost,其中 g_cost 是由实际运动产生,其代价由四部分组成,朝向(1 和-1)、转向角大小、转向角变化、行驶方向变化。H 是启发函数代价的比例系数,用来调整启发函数代价的影响因子。h_cost 为启发函数代价。采用了两种启发函数,并取两者的最大值作为最终的启发函数代价 [1]。第一个启发函数为”non-holonomic- without-obstacles”,非全向无障碍启发函数,只考虑车辆的非完整性约束而不考虑障碍物, 一般采用当前节点状态 (xs, ys, Θs), 到目标状态 (xt, yt, Θt) 的最短 Reeds shepp 曲线的代价值。第二个启发函数是”holonomic-with-obstacles heuristic”,忽略汽车的非完整约束,使用障碍物地图计算到目标的最短距离,可以避免运动过程中陷入死胡同或者 U 型障碍物,一般采用 A* 搜索出的最短路径代价。

  1. Reeds shepp 曲 线

由于 Hybrid A* 算法中对运动空间 (x, y, Θ) 和车辆的 steer_list、direction_list 都是进行了离散化处理。因此不可以精确到达连续变化的目标姿态。运动轨迹也会不平滑,因此使用 Reeds shepp 曲线。即从扩展的子节点中找到能从此节点到目标节点的无碰撞 Reeds shepp 曲线,并选择代价最小的曲线作为作后路径。如下图所示,其中黄绿色的是由扩展子节点产生的路径,紫色路径是由最终 Reeds shepp 产生的路径。

图 4: Reeds shepp 曲线扩展

  1. 算法流程

整个算法的流程如下:首先定义起始节点和终止节点 (每个节点包括机器人状态、总代价以及父节点),定义障碍物地图。建立 open_dic 和 close_dic 空字典,字典的键代表节点在障碍物地图中唯一的位置,键值为节点。将起始节点存入 open_dic 中。

进入循环,设置开始进行 Reeds shepp 曲线拓展的循环数 N_rs(即每循环 N_rs 次后进行一次查询当前节点状态到目标状态是否存在 Reeds shepp 曲线,将 N_rs 的大少设置为当前节点位置到目标位置欧式距离的四分之一)。从 open_dic 中选出 f_cost 最小的节点作为父节点,如果找到相应的 Redds shepp 曲线则不再扩展节点,并把当前节点作为最终节点,直接选取路径代价最小的 reeds_shepp 曲线,并将曲线的路经点加入到最终的路径序列中。否则继续扩展子节点,与 A 的扩展相邻是栅格不同,Hybrid A* 扩展子节点的过程是根据转角和航向序列产生一系列考虑障碍物和车体形状的无碰撞子节点,如果子节点在close_dic 中,则舍弃,如果不在 close_dic 中,而在 open_dic 中,若子节点的 g_cost 比在 open_dic 中相应节点的 g_cost 小,则更新为子节点。如果既不在 close_dic 中,也不在open_dic 中,则直接将子节点加入到 open_dic 中。

经过循环之后 close_dic 包括从初始节点到最终节点的所父节点,每个父节点都包含一段路径点,最后将所有路径拼接作为 Hybrid A* 规划出的路径。

  1. 结果及总结

让小车分别向四个停车位置进行泊车, 起始点标记为蓝色圆圈,目标点标记为黄色五角星。开始进行 Reeds shepp 曲线拓展的最后节点标记为绿色与圆点。在实际的移动机器运动规划过程中,Hybrid A* 规划出的全局路径往往可以作为前端,经过后端的局部轨迹优化处理后可以产生更加平滑的运动轨迹。

程序参考1

参考文献

[1] Dmitri Dolgov, Sebastian Thrun, Michael Montemerlo, and James Diebel. Practical search techniques in path planning for autonomous driving. AAAI Workshop - Technical

https://github.com/zhm-real/MotionPlanning

Hybrid A*学习相关推荐

  1. Hybrid app 学习资料收集

    Hybrid app 概念 http://baike.baidu.com/view/8488720.htm?fr=aladdin Hybrid App开发实战http://www.infoq.com/ ...

  2. APPCAN学习笔记004---AppCan与Hybrid,appcan概述

    APPCAN学习笔记004---AppCan与Hybrid,appcan概述 技术qq交流群:JavaDream:251572072 本节讲了appcan的开发流程,和开发工具 笔记不做具体介绍了,以 ...

  3. Hybrid Dilated Convolution学习笔记

    Hybrid Dilated Convolution学习笔记 1.膨胀卷积 也叫空洞卷积,是在普通卷积的基础上加了一个空洞率,如下图所示: 上图就是一个空洞率为2的空洞卷积,以3×3为例,算上空洞率为 ...

  4. Hybrid混合开发学习笔记(1)混合应用开发定义和常见问题

    一.什么是混合应用 混合应用是指同时使用前端技术与原生技术开发的 App.通常由前端负责大部分界面开发和业务逻辑,原生负责封装原生功能供前端调用,二者以 WebView 作为媒介建立通信,从而既拥有 ...

  5. 自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)

    自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID) 简介 文章来源 ...

  6. 学习华为特殊端口模式Hybrid(带配置命令)

    目录 Hybrid Hybrid接口工作原理 实验环境: 实验步骤: 一.交换机的配置 1. SW1的配置 2. SW2的配置 二.PC地址配置 三.PC互ping,简述PC互ping流程. Hybr ...

  7. RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法

    RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法 本文假设读者已经熟悉了常规的神经网络,并且了解了BP算法,如果还不了解的,参见UFIDL的教程. - 1.RNN结构 ...

  8. 操作篇 HYbrid的应用和学习

    文章目录 前言 1.1实验环境 1.2实验原理 1.3实验目的 1.4华为hybrid实验拓扑图 二实验过程 2.1 交换机设置 2.2交换机2设置 实验结果 前言 Hybrid是华为.H3C交换机的 ...

  9. Hybrid混合开发学习笔记(2)开发框架

    一.开发框架选型 1.混合应用开发框架横向对比 目前可供选择的混合应用开发框架大致可以分为五类:基础框架.脚手架.原生编译框架.开发平台.自研框架. 基础框架 基础框架是指以 WebView 与原生 ...

最新文章

  1. Android 动画的插值器 (Interpolator属性)
  2. 第二篇、通过蓝牙连接外设
  3. 打造云上金融!网易云信入选「2021 数字化转型最佳案例 Top10」
  4. 【机器学习】sklearn数据集获取、分割、分类和回归
  5. php版本越高越好么,php版本越高越好吗
  6. 获取类路径的方法之一
  7. 生成osm文件_[转载]OSM数据的获取及格式转换
  8. 代理服务器proxy server是什么?有什么作用
  9. 计算机二级 office 英语,计算机二级office题库及答案
  10. acwing1282. 搜索关键词(AC 自动机)
  11. 四边形内接于圆定理_初三专题:圆的内接四边形相关性质定理,你听说过托勒密定理么?...
  12. 《那封08年收到的情书》
  13. 计算机网络ping本机ip,使用ping命令检查本机的TCP / IP协议
  14. Altium Designer 软件介绍
  15. 高一Python入门第三讲 石头剪刀布
  16. mysql tablespace is missing for table_Mysql报错:Tablespace is missing for table ‘db_rsk/XXX”
  17. 全新圣诞节头像框制作生成微信小程序源码下载支持多模板
  18. 【JS】 # js获取当前日期,比较日期大小
  19. 用PHP访问JasperReport
  20. VM虚拟机中的web服务内网穿透的设置,虚拟机连接主机的mysql(主机win10 虚拟机win10)

热门文章

  1. 一个女孩的就业之路(同济大学BBS上两年不沉的帖子) 转自猫扑
  2. 赤池信息准则AIC,BIC
  3. 黑客中级技术--缓冲区溢出攻击(转)
  4. 从.gdf格式的脑电数据中获得脑电数据,通道名称,采用频率。
  5. 常用的专业数据恢复软件有哪些?恢复数据就看这10个!
  6. html5如何写出圆背景,利用HTML5实现Canvas虚幻圆点背景特效
  7. HTML5期末大作业:网购网站设计——品优购(4页) HTML+CSS+JavaScript 大学生网购网页设计模板代码 学生简单购物网站设计成品
  8. JDBC_学习笔记(婷姐教的)
  9. frm考试可以用计算机,FRM考试是否可以带计算器,普通计算器可以吗?
  10. netty自定义封包实现