[PathPlanning]State Lattice Planner

State Lattice Planner是一种轨迹规划算法,它首先采样生成状态栅格地图,然后通过搜索方法确定机器人路径。算法适用于有限运动约束的对象,但可能导致360度运动能力受限。核心思路包括状态空间采样、反向计算和路径优化。道路模型、路径模型和稳定路径模型是算法的重要组成部分,路径搜索算法如A*和D*用于找到最优路径。此外,采用并行计算和查找表加速求解过程。
摘要由CSDN通过智能技术生成

StateLatticePlanner核心思路是先采样生成状态栅格地图,最后利用search方法生成自车运行轨迹。该planner有以下两种特性:

  1. LatticePlanner本质上是对轨迹离散化采样,并不能得到全局最优轨迹。
  2. LatticePlanner适用于运动有一定约束的对象。对于能够执行360度运动机器人而言,LatticePlanner会限制其运动能力。

StateLattice和Grids的主要区别是栅格节点包含自车的状态信息,借用维基百科对lattice graph的定义:

A lattice graph, mesh graph, or grid graph is a graph whose drawing, embedded in some Euclidean space R n \mathbb {R} ^{n} Rn, forms a regular tiling.

StateLattices考虑到每个顶点机器人的动力学模型,用来生成采样点之间的可行路径,而Grids只是简单的对空间维度进行等间距离散采样,由此采样得到的路径可能不符合机器人的运动模型。本质上两者的联系都是对连续的空间进行离散化,然后利用图搜索的算法生成机器人的运动轨迹。

状态栅格采样算法

StateLattice生成算法主要包括控制空间采样和状态空间采样。控制空间中的采样没有目的性,离散控制量得到的运动路径是不合格的,会使机器人运动到合理的运动环境之外,得到的局部轨迹仅仅有一部分可以使用;状态空间中的采样可以保证局部轨迹可用。

首先考虑包含5个变量的单车模型 q ( t ) = [ x ( t ) , y ( t ) , θ ( t ) , κ ( t ) , v ( t ) ] q(t) = [x(t), y(t), \theta(t), \kappa(t), v(t)] q(t)=[x(t),y(t),θ(t),κ(t),v(t)],其中, x ( t ) , y ( t ) x(t),y(t) x(t),y(t)为全局位置坐标, θ ( t ) \theta(t) θ(t)为车辆航向角, κ ( t ) \kappa(t) κ(t)为路径曲率, v ( t ) v(t) v(t)为纵向速度,其运动学方程可以表述为:

x ( t ) ˙ = v ( t ) cos ⁡ θ ( t ) x ( t ) ˙ = v ( t ) sin ⁡ θ ( t ) θ ˙ ( t ) = κ ( t ) v ( t ) κ ˙ ( t ) = u ( t ) (1) \begin{aligned} \dot{x(t)} &= v(t)\cos\theta(t) \\ \dot{x(t)} &= v(t)\sin\theta(t) \\ \dot{\theta}(t) &= \kappa(t)v(t) \\ \dot{\kappa}(t) &= u(t) \\ \tag{1} \end{aligned} x(t)˙x(t)˙θ˙(t)κ˙(t)=v(t)cosθ(t)=v(t)sinθ(t)=κ(t)v(t)=u(t)(1)

其中, u ( t ) u(t) u(t)可以理解为转向速度。该模型的输入包含 u ( t ) u(t) u(t) v ( t ) v(t) v(t),简单表示为 u = [ u ( t ) , v ( t ) ] u=[u(t), v(t)] u=[u(t),v(t)]

  • 控制空间采样是对给定的被控对象的控制输入 u u u在时间 t t t上进行离散采样,进而前向积分得到被控对象从任意初始状态 s 0 s_0 s0过度到终止状态 s f s_f sf。因此,该方法很容易实现,下文不再介绍。

  • 状态空间采样是对给定被控对象目标状态进行离散采样,反向计算区间拟合的参数。该方法可以建模成边界值问题(Boundary Value Problem, BVP)的求解,可以利用shooting method求解中间过程。

反向计算

反向计算方法是解决状态空间采样点之间的路径连接的方法。假设车辆初始状态为 q ( s 0 ) = [ x ( s 0 ) , y ( s 0 ) , θ ( s 0 ) , κ ( s 0 ) ] q(s_0)=[x(s_0),y(s_0),\theta(s_0),\kappa(s_0)] q(s0)=[x(s0),y(s0),θ(s0),κ(s0)],终点状态为 q ( s f ) = [ x ( s f ) , y ( s f ) , θ ( s f ) , κ ( s f ) ] q(s_f)=[x(s_f),y(s_f),\theta(s_f),\kappa(s_f)] q(sf)=[x(sf),y(sf),θ(sf),κ(sf)]

公式(1)中车辆模型描述了自车运动状态和时间之间的关系。转换到frenet下,可以描述为自车状态与路径长度的关系:

x ( s ) = ∫ 0 s cos ⁡ θ ( s ) d s y ( s ) = ∫ o s sin ⁡ θ ( s ) d s θ ( s ) = ∫ 0 s κ ( s ) d s κ ( s ) = u ( s ) (2) \begin{aligned} x(s) &= \int_0^s\cos\theta(s)ds \\ y(s) &= \int_o^s\sin\theta(s)ds \\ \theta(s) &= \int_0^s\kappa(s)ds \\ \kappa(s) &= u(s) \\ \tag{2} \end{aligned} x(s)y(s)θ(s)κ(s)=0scosθ(s)ds=ossinθ(s)ds=0sκ(s)ds=u(s)(2)

不难发现,输入项 u = [ u ( s ) ] u=[u(s)] u=[u(s)]只包含转向速度,与速度无关。

道路模型

道路通过其中心线定义,通常也可以定位行为的参考线,可以表示为四维向量:
q ( s ) = [ x ( s ) , y ( s ) , θ ( s ) , κ ( s ) ] (3) q(s)=[x(s), y(s), \theta(s), \kappa(s)] \tag{3} q(s)=[x(s),y(s),θ(s),

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值