赞
踩
基于梯度的规划器广泛用于四旋翼的局部路径规划,其中欧几里德距离场 (ESDF) 对于评估梯度大小和方向至关重要。然而,计算这样一个字段有很多冗余,因为轨迹优化过程只覆盖了 ESDF 更新范围的非常有限的子空间。在本文中,提出了一种基于无 ESDF 梯度的规划框架,显著减少了计算时间。主要改进是惩罚函数中的碰撞项是通过将碰撞轨迹与无碰撞引导路径进行比较来制定的。只有当轨迹碰到新的障碍物时,才会存储生成的障碍物信息,使规划器只提取必要的障碍物信息。然后,如果违反动态可行性,我们会延长时间分配,引入各向异性曲线拟合算法,在保持原始形状的同时调整轨迹的高阶导数。
如图,优化过程中的轨迹只覆盖了 ESDF 更新范围的非常有限的空间
E S D F ESDF ESDF 更新的空间就是被粉色墙面包围的空间
但是轨迹优化期间覆盖的空间(如上图紫色的部分)
所以轨迹仅覆盖 E S D F ESDF ESDF 更新范围的有限空间,在实践中,虽然一些手工规则可以决定一个很小的 ESDF 范围,但它们缺乏理论上的合理性,并且仍然会导致不必要的计算
伪代码解析:
综上,为了防止轨迹被拉出当前障碍物前,为了避免在前几次迭代过程中轨迹从当前障碍物逃逸之前产生重复的 { p , v } \{p, v\} {p,v} 对,迭代过程中反复生成 { p , v } \{p,v\} {p,v} 对,判断是否为新障碍物的标准是:如果控制点 Q i Q_i Qi 处于障碍物中时,并且对于当前得到的所有障碍物 j j j 满足 d i j > 0 d_{ij} >0 dij>0 ,则该障碍物为新发现的障碍物,从而只计算影响轨迹的障碍物信息,减少运行时间。
为了将必要的*环境意识融入当地的规划中,需要明确地构建一个目标函数(设计基于梯度的轨迹优化器),使轨道远离障碍。 E S D F ESDF ESDF 提供了这种至关重要的碰撞信息,但代价是沉重的计算负担。此外,如图 2 2 2 所示,由于 E S D F ESDF ESDF 反馈的错误信息不足,基于 E S D F ESDF ESDF 的规划者很容易陷入局部最小值,无法逃脱障碍。为了避免这种情况,额外的前端总是需要提供一个无碰撞的初始轨迹。由于明确设计的斥力对于不同的任务和环境都是相当有效的,所以上述方法在提供避免碰撞的重要信息方面优于 E S D F ESDF ESDF 。
微分平坦特性,在做轨迹规划的过程中不可能对 U A V UAV UAV 12 12 12 维的全维度空间进行规划,这是非常复杂的,但可以找到一个平坦输出的空间,这个空间只有四个维度的变量,位置 x , y , z x,y,z x,y,z和偏航角 Ψ Ψ Ψ,剩下所有的状态都能用这四个变量和其有限阶导数的代数组合所表示,因此在做无人机轨迹规划的时候只需要对这四个变量进行规划就可以了。
可以看出问题建模中应用的惩罚函数全部是多项式和,这有利于降低求解最优化问题的复杂度。(轻量化算法)
使用球状度量(好像在老师的某篇文章中也提到过,具体的我忘了)来使在同一球体表面的位移产生相同的惩罚。(关于径向位移和轴向位移应该在具体算法中了解,目前我认为轴向位移为该点的切线方向,而径向方向为该切线的垂线方向,两者计算公式如下:)
d
a
=
(
Φ
f
−
Φ
s
)
⋅
Φ
˙
s
∥
Φ
˙
s
∥
d
r
=
∥
(
Φ
f
−
Φ
s
)
×
Φ
˙
s
∥
Φ
˙
s
∥
∥
dadr=(Φf−Φs)⋅∥
∥Φ˙s∥
∥Φ˙s=∥
∥(Φf−Φs)×∥
∥Φ˙s∥
∥Φ˙s∥
∥
用于度量
Φ
f
(
α
T
′
)
Φ_f(αT′)
Φf(αT′) 惩罚大小的椭圆体是一个以
Φ
f
(
α
T
′
)
Φ_f(αT′)
Φf(αT′) 为中心的椭圆,其半长轴长度为
a
a
a、其半短轴长度为
b
b
b。则轴向位移
d
a
d_a
da 和径向位移
d
r
d_r
dr 为:
d
a
(
α
T
′
)
=
(
Φ
f
(
α
T
′
)
−
Φ
s
(
α
T
)
)
⋅
Φ
s
˙
(
α
T
)
∥
Φ
s
˙
(
α
T
)
∥
d
r
(
α
T
′
)
=
∥
(
Φ
f
(
α
T
′
)
−
Φ
s
(
α
T
)
)
×
Φ
s
˙
(
α
T
)
∥
Φ
s
˙
(
α
T
)
∥
∥
da(αT′)=(Φf(αT′)−Φs(αT))⋅∥
∥Φs˙(αT)∥
∥Φs˙(αT)dr(αT′)=∥
∥(Φf(αT′)−Φs(αT))×∥
∥Φs˙(αT)∥
∥Φs˙(αT)∥
∥
则拟合项可以表示为:
J
f
=
∫
0
1
[
d
a
(
α
T
′
)
2
a
2
+
d
r
(
α
T
′
)
2
b
2
]
d
α
J_f=\int_0^1\left[\frac{d_a\left(\alpha T^{\prime}\right)^2}{a^2}+\frac{d_r\left(\alpha T^{\prime}\right)^2}{b^2}\right] \mathrm{d} \alpha
Jf=∫01[a2da(αT′)2+b2dr(αT′)2]dα
其中 a a a 和 b b b 分别是椭圆的半长轴和半短轴,径向位移对应的半短轴 b b b 使径向位移的惩罚权重增大以防止防止碰撞
上式拟合项被离散化为有限个数的点 Φ f ( α Δ t ′ ) Φ_f(αΔt′) Φf(αΔt′) 和 Φ s ( α Δ t ) Φ_s(αΔt) Φs(αΔt)
其中, K ∈ R \mathrm{K} \in \mathbb{R} K∈R, 0 ≤ k ≤ [ T / △ t ] 0 \leq k \leq [T/△t] 0≤k≤[T/△t]
设置B样条曲线的阶数 p b = 3 p_b=3 pb=3,控制点的个数 N c = 25 N_c = 25 Nc=25个左右,具体由规划预期距离(大约 7 m 7m 7m)和初始的邻近点间距(大约 0.3 m 0.3m 0.3m)决定。这些参数根据经验通过平衡了问题的复杂度和自由度而得到
因为根据 B B B 样条曲线的性质,一个控制点只影响周围的轨迹,所以算法的时间复杂度为 O ( N c ) O(N_c) O(Nc)
L − B F G S L-BFGS L−BFGS 的复杂性在相同的相对公差上也是线性的( T h e The The c o m p l e x i t y complexity complexity o f of of L − B F G S L-BFGS L−BFGS i s is is a l s o also also l i n e a r linear linear o n on on t h e the the s a m e same same r e l a t i v e relative relative t o l e r a n c e tolerance tolerance)
在无碰撞路径搜索中,我们采用
A
A
A 星(
A
∗
A*
A∗)算法进行轨迹优化,而它生成的轨迹
Γ
Γ
Γ 常常贴着障碍物。因此,我们可以直接在
A
A
A 星算法生成的轨迹
Γ
Γ
Γ 上选择定位点(
a
n
c
h
o
r
anchor
anchor
p
o
i
n
t
point
point)
p
p
p 而不用搜索障碍物的表面(这里才真正解释出了一开始所说采用
A
A
A 星算法的作用)。对于图
3
b
3b
3b 中定义的向量
R
i
R_i
Ri,通过均匀
b
b
b 样条参数化的性质,可以推导出:
R
i
=
Q
i
+
1
−
Q
i
−
1
2
Δ
t
\mathbf{R}_i=\frac{\mathbf{Q}_{i+1}-\mathbf{Q}_{i-1}}{2 \Delta t}
Ri=2ΔtQi+1−Qi−1
这里的 R i R_i Ri是下图中确定 { p , v } \{p,v\} {p,v} 对的关键
读到这里,我们再看看论文中的图 3 : 3: 3:
第一步:根据生成一条满足终端约束但不考虑障碍物的 B B B 样条曲线 Φ Φ Φ,依靠 A A A 星算法生成的轨迹 Γ Γ Γ
第二步:根据上述的 R i R_i Ri 公式通过 B B B 样条曲线的控制点计算出向量 R i R_i Ri,再做出垂直于 R i R_i Ri 的平面 Ψ Ψ Ψ,平面 Ψ Ψ Ψ 与依靠 A A A 星算法生成的轨迹 Γ Γ Γ 相交于定位点( a n c h o r anchor anchor p o i n t point point) p p p,连接对应的定位点( a n c h o r anchor anchor p o i n t point point) p p p 与控制点 Q Q Q,才得到直线 l l l,而向量 v v v 是向量 l l l 对应的由起点控制点 Q Q Q 到终点定位点 p p p 对应的单位向量。( v v v 可能是生成以后不会再变化的)。到这里才生成了 { p , v } \{p,v\} {p,v} 对
Q : Q: Q:关于 { p , v } \{p,v\} {p,v} 对过程中,为什么将定位点 p p p 定位到 A A A 星算法生成的贴着障碍物的轨迹上,而不直接定位在障碍物表面?
A : A: A:首先 A ∗ A* A∗ 算法生成的轨迹肯定是安全无碰撞的轨迹,其次直接定位到障碍物表面的话,因为这是仿真,难免会产生误差,使得与现实世界所得结果不符,再者使用 A ∗ A* A∗ 算法生成的轨迹定位的算力比直接定位在障碍物表面的要低,所以不管是为了留有稳定的裕量还是为了降低计算的算力,还是选择使用 A ∗ A* A∗ 算法进行定位。
该方法仍然存在一些缺陷,即 A ∗ A* A∗ 算法搜索引入的局部最小值和统一时间重新分配引入的保守轨迹。因此,我们将致力于执行拓扑规划,以逃避局部最小值,并重新制定问题,以生成接近最优的轨迹。规划器为静态环境设计,无需处理缓慢移动的障碍物(低于 0.5 m / s 0.5m/s 0.5m/s)。在未来,我们将通过移动对象检测和拓扑规划来研究动态环境导航。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。