开放空间规划算法解析及实现--自主泊车为例

整体介绍

对于没有参考线的非结构化场景,如泊车、倒车入库、靠边停车

task::

(1)确定可行驶区域

(2) 粗糙轨迹生成

第一步生成可行轨迹的点,因为混合A*生成的轨迹存在曲率突变,不能直接使用。

第二步对轨迹进行进一步平滑,满足控制需求。

(3)对轨迹进行分割

根据前进还是后退,对轨迹进行分割,根据自车位置来判断进行哪一条轨迹以及是否需要更换轨迹

 (4)障碍物碰撞Fallback_Decider

如果检测与障碍物碰撞的轨迹需要fallback,重新规划一条

 基于混合A*的路径规划

【A*需要对环境提前已知,基于高精地图,这本身就是已知的,所以环境就是已知环境】

A*:

搜索算法,将可行使的环境进行栅格化【栅格化!!!】,迭代搜索8个方位,对呀!!!栅格化呀,就是一个个的点???SUMO里面A*搜索也是A*搜索呀,所以那个生成的net.xml文件是一个栅格地图??---》》》去看SUMO里面那个带的A*算法的py文件证实研究一下,如果是这样的话,那可以参考一下A*别的py文件怎么画的图 ,SUMO中获取到了信息【这个信息的获取也没获取整明白哎!!!】

 g(n) ::  从起点到当前节点的cost;h(n)::启发函数,从当前节点n到终点节点的预估cost

  A*算法走出的路径时折线,曲率突变点,路径不满足运动学约束,根据车辆运动学模型,实际车辆航向和后轴中心方向是一致的,所以将车辆运动轨迹等效成车辆后轴中心根据不同转弯半径的

的弧线组成,通过前轮转角可以算出后轴中心的转弯半径,所以对前轮转角进行采样,从而变成下图所示,方位不止8个方位,搜索维度也从2维升为3维(x,y,theta航向角)

 

 

 上述因为状态空间是连续的【???】,而搜索的点是离散的,固定的点不同的航向。

 ReedSheep : : 固定直线连接圆弧的方法,但是其无法考虑障碍物,所以混合A*算法将障碍物路径过滤掉,

 GenerateDPMap函数通过动态规划算法计算启发式函数。

 上图结果图,在直线和圆弧的交界处拐点曲率突变需要平滑::

 

 

 

 在凸优化中有约束的极值问题通常是不好研究的,所以通常将有条件的极值问题转换为无条件的极值问题进行研究。

 

 

 

 

 

 

Apollo对算法的改进:

之前采样时间是固定时间,所以是 t 时间到达终点,变时间采样乘以一个固定时间系数 t(k) ,可以缩短到达终点的时间, 

 

 

 基于DL_IAPS的规划算法

OBCA算法通过凸优化的强对偶性很好解决开放空间无碰撞约束,但是算法求解效率和鲁棒性较差,

 

改进点是OBCA是将整个轨迹进行平滑,但是DL_IAPS是分段进行平滑,保证平滑后的路径不会与障碍物碰撞, 并满足曲率最大的要求

 

 

 算法实践

 

 

 绘制过程图::

 

 改变可视化区域的边界点。改了以后规划失败了,改回去了。修改了下面的sphi  ---起始航向角

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值