流体扰动原理的动、静态避障三维轨迹规划算法实现

思想

在一条河边仔细观察会发现水流流过河中凸起的石头时会从石头旁边平滑地流过,这是流场的作用。受此启发,将这一思想拓展到UAV或者是任何背景的三维或者是二维轨迹规划问题,即可得到本文所讲述的流体扰动原理规划算法。

这一算法实际上属于人工势场算法的一种变形,在没有障碍物的前提下,三维空间中存在一个初始的流场,这个流场指向目标点,使轨迹向目标点汇流。当空间中存在障碍物时,障碍物产生一个扰动流场,扰动流场与初始流场同时作用形成合成流场,合成流场的流线即为规划轨迹。可以将扰动流场算法中的初始流场看做人工势场算法中的引力场,扰动场看做斥力场,两者异曲同工。

初始流场的建立

以汇流作为初始流场,其流速 u ( P ) u(\mathbf{P} ) u(P)定义为:
u ( P ) = − [ C ( x − x d ) d ( P , P d ) , C ( y − y d ) d ( P , P d ) , C ( z − z d ) d ( P , P d ) ] T \boldsymbol{u}(\boldsymbol{P})=-\left[\frac{C\left(x-x_{\mathrm{d}}\right)}{d\left(\boldsymbol{P}, \boldsymbol{P}_{\mathrm{d}}\right)} ,\frac{C\left(y-y_{\mathrm{d}}\right)}{d\left(\boldsymbol{P}, \boldsymbol{P}_{\mathrm{d}}\right)}, \frac{C\left(z-z_{\mathrm{d}}\right)}{d\left(\boldsymbol{P}, \boldsymbol{P}_{\mathrm{d}}\right)}\right]^{\mathrm{T}} u(P)=[d(P,Pd)C(xxd),d(P,Pd)C(yyd),d(P,Pd)C(zzd)]T
其中 C C C为汇流速度, d d d为无人机位置 P \mathbf{P} P与目标位置 P d \mathbf{P_d} Pd的距离:
d ( P , P d ) = ( x − x d ) 2 + g ( y ) − y d ) 2 + ( z − z d ) 2 d\left(\boldsymbol{P}, \boldsymbol{P}_{\mathrm{d}}\right)=\sqrt{\left.\left(x-x_{\mathrm{d}}\right)^{2}+g(y)-y_{\mathrm{d}}\right)^{2}+\left(z-z_{\mathrm{d}}\right)^{2}} d(P,Pd)=(xxd)2+g(y)yd)2+(zzd)2

初始流场示意图如下(红色曲线为流场线):
在这里插入图片描述
在这里插入图片描述

扰动流场的建立

障碍物方程

假设1:运动目标假定为质点,所有障碍物和威胁等均用圆球、圆锥、圆柱、长方体等标准的凸多面体等效:
Γ ( P ) = ( x − x 0 a ) 2 p + ( y − y 0 b ) 2 q + ( z − z 0 c ) 2 r \Gamma(\boldsymbol{P})=\left(\frac{x-x_{0}}{a}\right)^{2 p}+\left(\frac{y-y_{0}}{b}\right)^{2 q}+\left(\frac{z-z_{0}}{c}\right)^{2 r} Γ(P)=(axx0)2p+(byy0)2q+(czz0)2r
式中:常数 a 、 b 、 c a、b、c abc p 、 q 、 r p、q、r pqr分别决定凸面体的大小与形状, ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)表示凸面体的中心, Γ ( P ) = 1 \Gamma(\boldsymbol{P})=1 Γ(P)=1即为障碍物表面方程。

扰动流场

假设环境中有 W W W个障碍物,将障碍物对初始流场的扰动用扰动矩阵 M ‾ ( P ) \overline{\boldsymbol{M}}(\boldsymbol{P}) M(P)量化表示:
M ‾ ( P ) = ∏ w = 1 W M ω ( P ) \overline{\boldsymbol{M}}(\boldsymbol{P})=\prod_{w=1}^{W} \boldsymbol{M}_{\boldsymbol{\omega}}(\boldsymbol{P}) M(P)=w=1WMω(P)
式中: M ‾ ( P ) \overline{\boldsymbol{M}}(\boldsymbol{P}) M(P)为第 ω \omega ω个障碍物的扰动矩阵:
M w ( P ) = I − ω w ( P ) n w ( P ) ( n w ( P ) ) T ∣ Γ ( P ) ) ∣ 1 ρ w ( n w ( P ) ) T n w ( P ) M_{w}(P)=I - \frac{\omega_{w}(\boldsymbol{P}) \boldsymbol{n}_{w}(\boldsymbol{P})\left(\boldsymbol{n}_{w}(\boldsymbol{P})\right)^{\mathrm{T}}}{\left|\Gamma(\boldsymbol{P}))\right|^{\frac{1}{\rho_{w}}}\left(\boldsymbol{n}_{w}(\boldsymbol{P})\right)^{\mathrm{T}} \boldsymbol{n}_{w}(\boldsymbol{P})} Mw(P)=IΓ(P))ρw1(nw(P))Tnw(P)ωw(P)nw(P)(nw(P))T
式中: I I I为单位矩阵; ρ w \rho_w ρw为第 w w w个障碍物的反应系数,而 ω w ( P ) , n w ( P ) \omega_{w}(\boldsymbol{P}),\boldsymbol{n}_{w}(\boldsymbol{P}) ωw(P),nw(P)按如下公式计算:
ω w ( P ) = 1 W = 1 ∏ i = 1 W Γ i ( P ) − 1 ( Γ i ( P ) − 1 ) + ( Γ w ( P ) − 1 ) W ≠ 1 \begin{array}{cc} \omega_{w}(P)= & \\ 1 & W=1 \\ \prod_{i=1}^{W} \frac{\Gamma_{i}(P)-1}{\left(\Gamma_{i}(P)-1\right)+\left(\Gamma_{w}(P)-1\right)} & W \neq 1 \end{array} ωw(P)=1i=1W(Γi(P)1)+(Γw(P)1)Γi(P)1W=1W=1
n w ( P ) = [ δ Γ w ( P ) δ x δ Γ w ( P ) δ y δ Γ w ( P ) δ z ] T \boldsymbol{n}_{w}(\boldsymbol{P})=\left[\frac{\delta \Gamma_{w}(\boldsymbol{P})}{\delta x} \quad \frac{\delta \Gamma_{w}(\boldsymbol{P})}{\delta y} \quad \frac{\delta \Gamma_{w}(\boldsymbol{P})}{\delta z}\right]^{\mathrm{T}} nw(P)=[δxδΓw(P)δyδΓw(P)δzδΓw(P)]T
至此,我们可以计算出扰动矩阵 M ‾ ( P ) \overline{\boldsymbol{M}}(\boldsymbol{P}) M(P),利用它修正初始流场流速,得到合成流场:
u ‾ ( P ) = M ‾ ( P ) u ( P ) \overline{\boldsymbol{u}}(\boldsymbol{P})=\overline{\boldsymbol{M}}(\boldsymbol{P}) \boldsymbol{u}(\boldsymbol{P}) u(P)=M(P)u(P)
通过积分 u ‾ ( P ) \overline{\boldsymbol{u}}(\boldsymbol{P}) u(P),可以获得轨迹下一点位:
P next  = P + u ‾ ( P ) Δ t \boldsymbol{P}_{\text {next }}=\boldsymbol{P}+\overline{\boldsymbol{u}}(\boldsymbol{P}) \Delta t Pnext =P+u(P)Δt
式中: Δ t \Delta t Δt为计算步长,如此迭代求解得到一系列离散点,将其连线即形成扰动流线,即规划路线。

仿真结果

目标点: g o a l = [ 2 , 2 , 10 ] ; goal = [2,2,10]; goal=[2,2,10];
参数: C = 1 ; r o w = 1.2 ; C = 1; row = 1.2; C=1;row=1.2;
障碍物坐标以及半径:
o b s t a c l e M a t r i x = [ 4 , 6 , 10 ; 6 , 4 , 10 ; 8 , 8 , 10 ] ; o b s t a c l e R M a t r i x = [ 1 , 1 , 1.2 ] ; obstacleMatrix = [4,6,10;6,4,10;8,8,10];\\ obstacleRMatrix = [1,1,1.2]; obstacleMatrix=[4,6,10;6,4,10;8,8,10];obstacleRMatrix=[1,1,1.2];
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其中红线为初始流场线,蓝色为合成流场线(规划路线),可以看到规划路线平滑地绕开球形障碍物到达目标点(理论上在没有其他约束的情况下不会与障碍物有相交的情况),在众多规划算法中可以说达到SOTA效果。

动态障碍

动态障碍轨迹规划的实现需要考虑障碍的速度,其基本思想就是在某一时刻按照静态流场计算出下一点位(相对位置)后加上障碍物的速度乘以时间步长(绝对位置)。
u ˉ ( P ) = M ˉ ( P ) ( u ( P ) − v ( P ) ) + v ( P ) P n e x t = P + u ‾ ( P ) Δ t \bar{u}(P)=\bar{M}(P)(u(P)-v(P))+v(P)\\ \boldsymbol{P}_{\mathrm{next}}=\boldsymbol{P}+\overline{\boldsymbol{u}}(\boldsymbol{P}) \Delta t uˉ(P)=Mˉ(P)(u(P)v(P))+v(P)Pnext=P+u(P)Δt
v ( P ) v(P) v(P)是真实障碍物速度 v w ( P ) ) \boldsymbol{v}_{w}(\boldsymbol{P})) vw(P))的加权,让轨迹靠近障碍物时更多地考虑障碍物的速度,而原理障碍物时不太考虑障碍物的速度:
v ( P ) = ∑ w = 1 W ω w ( P ) e − Γ w ( P ) λ v w ( P ) \boldsymbol{v}(\boldsymbol{P})=\sum_{w=1}^{W} \omega_{w}(\boldsymbol{P}) \mathrm{e}^{\frac{-\Gamma_{w}(P)}{\lambda}} \boldsymbol{v}_{w}(\boldsymbol{P}) v(P)=w=1Wωw(P)eλΓw(P)vw(P)

另外,流体法还可以应用于目标点也在运动的情况,这时初始流场需要考虑目标点的运动速度:
u ( P ) = k 1 u 1 ( P ) + k 2 u 2 ( P ) k 1 = ( d ( P P d ) d ( P 0 P d 0 ) ) m k 2 = 1 − k 1 \begin{array}{c} \boldsymbol{u}(\boldsymbol{P})=k_{1} \boldsymbol{u}_{1}(\boldsymbol{P})+k_{2} \boldsymbol{u}_{2}(\boldsymbol{P}) \\ k_{1}=\left(\frac{d\left(\boldsymbol{P} \boldsymbol{P}_{\mathrm{d}}\right)}{d\left(\boldsymbol{P}_{0} \boldsymbol{P}_{\mathrm{d} 0}\right)}\right)^{m} \\ k_{2}=1-k_{1} \end{array} u(P)=k1u1(P)+k2u2(P)k1=(d(P0Pd0)d(PPd))mk2=1k1
Pd是目标点坐标,P是当前轨迹坐标,P0是初始点坐标。

动态障碍规划效果:
在这里插入图片描述
在这里插入图片描述
这个算法的动态避障效果较绝大多数算法都要好。

一种更优秀的改良算法

IIFDS

缺点

对于形状复杂的障碍物由于其 Γ ( P ) \Gamma(\boldsymbol{P}) Γ(P)复杂甚至不能用 Γ ( P ) \Gamma(\boldsymbol{P}) Γ(P)的形式表示,因此在含有这种障碍物的环境下使用流场法会出现一定的困难,而人工势场法则没有这种问题。另外,当起始点、障碍物中心点、目标点在共线时会出现无解现象,但是这种情况发生条件较为苛刻,可以忽略。

参考文章

[1]. 王宏伦, 姚鹏, 梁宵, 等.基于流水避石原理的无人机三维航路规划[J].电光与控制, 2015, 22(10):1-6.

猜你喜欢

转载自blog.csdn.net/weixin_43145941/article/details/114018242