逐行讲解hybrid astar路径规划 混合a星泊车路径规划 带你从头开始写hybridas...
路径规划器(自定义版本),负责主搜索逻辑;状态校验器,用于判断车辆位姿是否与障碍物碰撞;库内揉库路径生成器,处理车辆在狭窄车位内的多次前进-后退调整;场景测试脚本,构建不同泊车环境并调用规划器。整个系统以SE(2) 状态空间(x, y, θ)为基础,结合栅格地图(binaryOccupancyMap)进行环境建模,并通过Reeds-Shepp 曲线实现高效的终点直连(Analytic Expans
逐行讲解hybrid astar路径规划 混合a星泊车路径规划 带你从头开始写hybridastar算法,逐行源码分析matlab版hybridastar算法

Hybrid A*(混合A星)算法是一种专为非完整约束车辆(如汽车)设计的路径规划方法,广泛应用于自动泊车、自动驾驶低速场景等领域。本文基于一套完整的 MATLAB 实现代码,深入剖析该算法在垂直车位、斜向车位和平行车位等多种泊车场景下的工作流程、核心机制与工程实现细节。
一、整体架构概述
该实现采用模块化设计,主要包含以下组件:
- 路径规划器:
plannerMyHybridAStar(自定义版本),负责主搜索逻辑; - 状态校验器:
VehicleMapStateValidator,用于判断车辆位姿是否与障碍物碰撞; - 库内揉库路径生成器:
GetSlotPath,处理车辆在狭窄车位内的多次前进-后退调整; - 场景测试脚本:
mapscenarioX.m,构建不同泊车环境并调用规划器。
整个系统以 SE(2) 状态空间(x, y, θ)为基础,结合 栅格地图(binaryOccupancyMap)进行环境建模,并通过 Reeds-Shepp 曲线实现高效的终点直连(Analytic Expansion)。
二、核心功能模块详解
1. 状态校验器:确保路径无碰撞
VehicleMapStateValidator 继承自 nav.StateValidator,其核心在于 isStateValidPolygon 方法。该方法不再将车辆简化为一个点,而是构建一个 10顶点多边形(近似车辆轮廓),通过坐标变换将其置于当前位姿下,再逐一检查每个顶点是否位于障碍物区域。

这种基于 多边形碰撞检测 的策略显著提升了路径安全性,尤其适用于车身较长、转弯半径较大的车辆模型。
2. 自定义 Hybrid A* 规划器:融合离散搜索与连续轨迹
plannerMyHybridAStar 是本系统的核心。其工作流程如下:
(1)初始化与参数设置
- 最小转弯半径(MinTurningRadius = 5 m)
- 运动基元长度(MotionPrimitiveLength = 0.5~1.5 m,依场景调整)
- 基元数量(NumMotionPrimitives = 3,含左转、右转、直行)
- 方向切换惩罚(DirectionSwitchingCost = 100)
(2)运动基元生成
每一步从当前节点扩展出若干 运动基元(motion primitives):
- 圆弧运动:基于最小转弯半径生成左/右转路径;
- 直线运动:前进或后退一段距离。
所有基元均以固定长度生成,确保搜索步长可控。
(3)启发式函数设计
采用 混合启发式:
- 2D 启发:欧氏距离;
- 3D 启发:考虑航向角偏差的 Reeds-Shepp 最短路径长度。
最终启发值取两者最大值,保证 可采纳性(admissibility)的同时提升搜索效率。
(4)分析性扩展(Analytic Expansion)
在每次迭代中(或按固定间隔),尝试从当前节点 直接连接目标点,使用 Reeds-Shepp 曲线生成无碰撞的光滑路径。若成功,则立即终止搜索,大幅减少计算量。
三、库内揉库策略:解决狭窄车位泊入难题
对于平行小车位等空间受限场景,单纯依靠 Hybrid A* 往往无法直接规划出完整路径。为此,系统引入 GetSlotPath 模块,实现 库内揉库路径生成。

其策略如下:
- 初始后退:从目标车位中心沿车位方向后退至库底;
- 循环“前进左转 + 后退右转”:
- 利用 FLPath(Forward-Left)和 BRPath(Backward-Right)函数,分别计算车辆在前进左转和后退右转过程中与库边界(前、后、侧安全线)的 碰撞点;
- 根据车辆几何(长、宽、后悬)和转弯半径,动态计算 最大外扩圆弧半径,确保车身不越界;
- 每次转向后更新当前位置与航向,直至车辆完全“摆正”并可直行进入车位。
该模块输出一段 高精度揉库轨迹,作为 Hybrid A* 的“虚拟终点”,从而将复杂泊车问题分解为 “到达揉库起点” + “执行揉库动作” 两个阶段。
四、多场景验证与适应性
系统通过 6 个典型场景验证算法鲁棒性:
| 场景 | 类型 | 特点 |
|---|---|---|
| scenario_1 | 垂直车位 | 标准环境,无障碍干扰 |
| scenario_2 | 垂直车位狭窄通道 | 增加上方障碍,考验横向避障 |
| scenario_3/4 | 斜向车位(75°/105°) | 非正交车位,需精确航向对齐 |
| scenario_5 | 平行大车位 | 空间充足,可一次泊入 |
| scenario_6 | 平行小车位 | 必须调用 GetSlotPath 进行揉库 |
所有场景均能成功规划出 无碰撞、满足车辆运动学约束、方向切换合理 的路径,并通过可视化展示车辆轮廓、轨迹点及运动方向(前进为红点,后退为蓝点)。
五、工程实现亮点
- 高效状态管理:使用
visitedCellsFront/Back分别记录前进/后退访问过的栅格,避免重复扩展; - 路径重构机制:通过
NodeMap.traceBack回溯节点,并结合PrimitivesData和LinesData重建完整运动序列; - 插值输出:根据
InterpolationDistance对原始轨迹进行密集采样,输出平滑路径供控制器使用; - 模块解耦:规划器、校验器、揉库模块相互独立,便于替换或升级(如接入 RRT、D Lite 等)。
六、总结
本套 Hybrid A* 实现不仅完整复现了经典算法框架,更针对 自动泊车 这一特定任务进行了深度优化。通过 精确的车辆模型碰撞检测、高效的分析性扩展 以及 智能的库内揉库策略,成功解决了多种复杂泊车场景下的路径规划难题。其设计思路与工程实践对自动驾驶低速路径规划系统具有重要参考价值。





魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)