水面无人艇(Surface Unmanned Vehicle,USV)配备先进的环境感知设备,其体型相较与传统船舶更加小巧,应用更加广泛。USV能够代替人类完成水面危险任务,提高水面作业的安全性[1]。为使USV在行驶过程中能无碰撞到达目的地,路径规划算法已经被部署到USV上。路径规划包括全局路径规划与局部路径规划,全局路径规划负责从起点到终点的整体路径规划,而局部路径规划负责USV当前位置附近的最佳行驶路径以避开障碍物[2]。不同的路径规划算法应用在USV上会受到船艇本身的约束,如动力系统约束、航行规则约束、环境约束等[3]。
人工势场法(Artificial Potential Field,APF)以其平滑的避障路线被广泛应用于USV路径规划中。APF算法依靠虚拟的引力势场和斥力势场引导机器人在势场中运动[4],传统APF算法存在局部最小值、目标点不可达、路径不可控等问题。刘涛等[5]针对APF算法在未知环境中规划效果差的问题,采用了长短记忆循环神经网络和强化学习算法结合对APF算法进行改进,结果表明改进后的算法对动态障碍物的规划具有更大优势。Fan等[6]通过构建虚拟六边形势场来摆脱局部最小值的困境,并验证了其可行性。为解决USV在传统PAF算法下的转向过大问题与局部最小值问题,Song等[7]通过设置转向角约束、速度限制与预测势场来生成适合USV的平滑路径。APF算法应用于USV上还要考虑USV实际航行的要求等限制。为解决USV在传统APF算法下的航迹偏移量过大的问题,Zhu等[8]通过引入动态移动目标点来引导避障后的USV返回路线,实验证明改进后的算法更加适合于工程应用中。为了克服USV在形式过程中受到风浪的影响,Chu等[9]通过设置虚拟足点作为引力点,USV在虚拟足点的引力作用下能够保持高精度的路径保持。
本文针对传统APF算法中的转向过大、航迹不可控、局部最小值3个问题,研究了将视线制导算法(Line of Sight,LOS)与APF相互结合的方法,实现航迹可控的避障路径。通过切线选取障碍物边界点,设定动态避障引力点来实现避障,避免USV陷入局部最小值环境。改进算法考虑到了USV自身的艏向约束与航向控制需求,在实际应用中具有参考价值。
1 避障方案分析与改进 1.1 航迹保持方案设计为使USV的轨迹能够完全贴合期望航迹线,选择LOS算法对期望航迹进行跟随。LOS算法主要根据几何原理计算出LOS期望角,控制器调节USV当前的艏向角
$ U(t) = \sqrt {{x^2}(t) + {y^2}(t)}。$ | (1) |
USV随时间
$ \mathit \Psi = {a} \tan 2(\dfrac{{y(t)}}{{x(t)}}) \in [ - {\text{π}} ,{\text{π}} ] 。$ | (2) |
如图1所示,设起点
![]() |
图 1 LOS期望角的判断 Fig. 1 LOS expectation angle judgment |
$ {\alpha _k} = {{a}}\tan 2(\dfrac{{{y_{k + 1}} + {y_k}}}{{{x_{k + 1}} - {x_k}}}) \in [ - {\text{π}} ,{\text{π}} ]。$ | (3) |
式中:
$ {{\varepsilon }}(t) = {\boldsymbol{R}}{({\alpha _k})^{\rm T}}[P(t) - {P_k}]。$ | (4) |
式中:
$ {\boldsymbol{R}}({\alpha _k}) = \left[ {\begin{array}{*{20}{c}} {\cos {\alpha _k}}&{ - \sin {\alpha _k}} \\ {\sin {\alpha _k}}&{\cos {\alpha _k}} \end{array}} \right] 。$ | (5) |
USV当前目标点
$ {\chi _{{d}}}(e) = {\chi _{{p}}} + {\chi _{\text{r}}}(e) 。$ | (6) |
式中:
$ {\chi _{\text{r}}}(e) = \arctan (\frac{{ - e}}{\Delta }) 。$ | (7) |
式中:
根据APF算法的目标点引力原理,对每个期望航迹点构建引力函数。当USV与
![]() |
图 2 LOS轨迹图 Fig. 2 LOS trajectory diagram |
传统LOS算法在到达指定路径后,调节艏向与航迹线角度一致即完成路径跟踪任务,但尚未考虑到USV在APF算法的引导下,航迹以外的障碍物仍然会对USV有斥力的作用。为解决这个问题,在此基础上沿着USV当前的艏向向量
APF通过假设目标点产生吸引力、障碍物产生排斥力来实现局部避障,其中的斥力公式与引力公式由Oussama在1986年提出[11]。1.1节将传统的单一目标点改进为LOS期望航迹点,但当航迹线上出现障碍物时,期望航迹点可能会处于障碍物内部或后部,由于障碍物的斥力作用,USV会出现避障失败或无法到达期望航迹点的情况。
如图3所示,当USV中心点与下个期望航迹点的连线上存在障碍物,则需要舍弃当前
![]() |
图 3 避障引力点示意图 Fig. 3 Schematic diagram of obstacle avoidance gravitational points |
USV通过改进LOS算法获取到下个期望航迹点坐标,当障碍物出现在路径中时,USV不仅会受到传统APF算法下的障碍物斥力作用,还会受到障引力点的作用,向障碍物边界行驶。当USV与避障引力点的距离小于设定值时,计算下个期望航迹点的坐标位置,并再次判断是否需要切换为避障引力点。最后USV逐个受到避障引力点与期望航迹点的引力作用,避开障碍物到达目的地。
2 改进LOS-APF算法为提高无人艇避障的路径保持能力,同时解决传统人工势场法中存在的局部最小值问题,提出基于LOS的APF算法(LOS-APF)。
2.1 航迹引力点函数设定LOS-APF通过计算得到各期望航迹引力点,将目标航迹分为若干线段,无人艇依次受到各航迹引力点的引力作用,如图4所示。
![]() |
图 4 航迹引力点示意图 Fig. 4 Schematic diagram of track gravitational points |
当USV行驶到期望航迹点
$ {U_{{{att}}}}(q) = \left\{ {\begin{split} &{0,}{\left\| {q - {q_{{\text{los}n}}}} \right\| < {R_{{\text{los}n}}}},\\ &{\eta \cdot \ln \left(\dfrac{{\left\| {q - {q_{{\text{los}n}}}} \right\|}}{{{R_{{\text{los}n}}}}}\right),}{\left\| {q - {q_{{\text{los}n}}}} \right\| \geqslant {R_{{\text{los}n}}}} 。\end{split}} \right. $ | (8) |
式中:
$ {R_{{\text{los}}n}} = 3\sqrt {{{{L}}^2} + {{{B}}^2}} 。$ | (9) |
式中:
$ {{F_{{\text{att}}}}(q) = \left\{ {\begin{split} &{0,}{\left\| {q - {q_{{\text{los}n}}}} \right\| < {R_{{\text{los}n}}}} ,\\ &{\eta \dfrac{1}{{\left\| {q - {q_{{\text{los}n}}}} \right\|}}\dfrac{1}{{{R_{{\text{los}n}}}}} \cdot \nabla \left\| {q - {q_{{\text{los}n}}}} \right\|,}{\left\| {q - {q_{{\text{los}n}}}} \right\| \geqslant {R_{{\text{los}n}}}} 。\end{split}} \right. }$ | (10) |
$ \nabla \left\| {q - {q_{{\text{los}n}}}} \right\| = \left(\frac{{x - {x_{{\text{los}n}}}}}{{\left\| {q - {q_{{\text{los}n}}}} \right\|}},\frac{{y - {y_{{\text{los}n}}}}}{{\left\| {q - {q_{{\text{los}n}}}} \right\|}}\right) 。$ | (11) |
终点作为航迹线上最后一个期望航迹点,需要考虑到USV距离终点过远会产生极大的吸引力,定义终点引力函数如下式:
$ {{U_{{\text{attg}}}}(q) = \left\{ {\begin{array}{l} {\dfrac{1}{2}\eta {{\| {q - {q_{\text{g}}}} \|}^2},}{\| {q - {q_{\text{g}}}} \| < {R_{{\text{los}n}}}},\\ {{R_{{\text{los}n}}}\eta \| {q - {q_{\text{g}}}} \| - \dfrac{1}{2}\eta {R_{{\text{los}n}}}^2,}{\| {q - {q_{\text{g}}}} \| \geqslant {R_{{\text{los}n}}}} 。\end{array}} \right. }$ | (12) |
式中:
$ {F_{{\text{attg}}}}(q) = \left\{ {\begin{split} &{\eta \| {q - {q_{\text{g}}}} \|,}{\| {q - {q_{\text{g}}}} \| < {R_{{\text{los}n}}}} ,\\ &{{R_{{\text{los}n}}}\eta \nabla \| {q - {q_{\text{g}}}} \|,}{\| {q - {q_{\text{g}}}} \| \geqslant {R_{{\text{los}n}}}} 。\end{split}} \right. $ | (13) |
$ \nabla \| q-q_g \| =\left(\frac{x-x_{\text{g}}}{ \| q-q_{\text{g}} \| },\frac{y-y_{\text{g}}}{ \| q-q_{\text{g}} \| }\right)。$ | (14) |
USV最终受到所有期望航迹点的引力到达终点,遵循航迹点引力函数选择如下式:
$ F_{{\text{att}}}^{'}(q) = \left\{ {\begin{array}{*{20}{c}} {{F_{{\text{att}}}}(q),}&{\left\| {{q_{{\text{los}n}}} - {q_{\text{g}}}} \right\| > {R_{{\text{los}n}}} + {\delta _{\text{g}}}} ,\\ {{F_{{\text{attg}}}}(q),}&{\left\| {{q_{{\text{los}n}}} - {q_{\text{g}}}} \right\| \leqslant {R_{{\text{los}n}}} + {\delta _{\text{g}}}} 。\end{array}} \right. $ | (15) |
式中:
避障引力点的设定不仅为USV提供一个避障方向,还能够在USV陷入局部最小值时帮助USV摆脱当前环境。避障引力点的引力函数定义如下式:
$ {{U _{{\text{atto}}}}( q ) = \left\{ {\begin{split} &{0,} {\left\| {q - {q_{{\text{los}n}}}} \right\| < {R_{{\text{los}n}}} + {\delta _{{\text{atto}}}}} ,\\ &{{\text{A}} \cdot {e^{ - \dfrac{{{{\left\| {q - {q_{{\text{los}n}}}} \right\|}^2}}}{{2{\sigma ^2}}}}},} {\left\| {q - {q_{{\text{los}n}}}} \right\| \geqslant {R_{{\text{los}n}}} + {\delta _{{\text{atto}}}}} 。\end{split}} \right. }$ | (16) |
式中:A为避障引力点的引力系数;
$ \begin{gathered}{F_{{\text{atto}}}}(q) = \left\{ {\begin{array}{*{20}{l}} {0,}\;{\left\| {q - {q_{ {\text{los}n}}}} \right\| < {R_{ {\text{los}n}}} + {\delta _{{\text{atto}}}}},\\ {\dfrac{{ - {\text{A}}}}{{{\delta ^2}}} \cdot {e^{ - \dfrac{{{{\left\| {q - {q_{ {\text{los}n}}}} \right\|}^2}}}{{2{\sigma ^2}}}}} \cdot \nabla \left\| {q - {q_{ {\text{los}n}}}} \right\|},\\ {\left\| {q - {q_{ {\text{los}n}}}} \right\| \geqslant {R_{ {\text{los}n}}} + {\delta _{{\text{atto}}}}} 。\end{array}} \right. \end{gathered}$ | (17) |
$ \nabla \left\| q-q_{\text{los}n} \right\| =(\frac{x-x_{\text{los}n}}{ \left\| q-q_{\text{los}n} \right\| },\frac{y-y_{\text{los}n}}{ \left\| q-q_{\text{los}n} \right\| })。$ | (18) |
由式(17)可看出,当USV进入到以
避障引力点的设定能够提供障碍物边界点的引力作用,由于切点过于贴近障碍物,除了避障引力点引力函数的
$ {\begin{gathered}{U_{{\text{rep}}}}(x,y) = \left\{ {\begin{split} &{\dfrac{1}{2}{{k}}{{(\dfrac{1}{{\left\| {q - {q_{{o}}}} \right\|}} - \dfrac{1}{{{\rho _o}}})}^2}\cos (\mathit\Psi - {\mathit\Psi _{{o}}}),} \\ &{\left\| {q - {q_{{o}}}} \right\| < {\rho _{{o}}} \cap {\mathit\Psi _{{o}}} \in (\mathit\Psi - \dfrac{\text{π}}{2},\mathit\Psi - \dfrac{\text{π}}{2})} ,\\ &{0,}\;{{\text{other}}} 。\end{split}} \right. \end{gathered}}$ | (19) |
式中:
$ \begin{split}{F_{{\text{rep1}}}}(x,y) =& {{{k}}_{{{r1}}}}(\dfrac{1}{{\left\| {q - {q_{{o}}}} \right\|}} - \dfrac{1}{{{\rho _{{o}}}}})\dfrac{1}{{{{\left\| {q - {q_{{o}}}} \right\|}^2}}}\times\\ &\cos (\mathit\Psi - {\mathit\Psi _{{o}}}) \cdot \nabla \left\| {q - {q_{{o}}}} \right\| ,\end{split}$ | (20) |
$ {F_{{\text{rep2}}}}(x,y) = \frac{1}{2}{{{k}}_{{{r1}}}}{(\frac{1}{{\left\| {q - {q_{{o}}}} \right\|}} - \frac{1}{{{\rho _{{o}}}}})^2}\nabla {\mathit\Psi _{{o}}}。$ | (21) |
$ \nabla {\mathit\Psi _{{o}}} = \sin (\mathit\Psi - {\mathit\Psi _{{o}}})\frac{{({y_{{o}}} - y){{i}} - ({x_{{o}}} - x){{j}}}}{{{{({x_{{o}}} - x)}^2} + {{({y_{{o}}} - y)}^2}}}。$ | (22) |
如图5所示,USV受到的斥力函数可视为
![]() |
图 5 合力力示意图 Fig. 5 Resultant force diagram |
构造多障碍物环境进行仿真。图6为传统APF算法的避障效果图,避障后的USV产生了过度转向,并且受到了航迹线附近障碍物斥力的影响。图7为改进后的LOS-APF算法,由于避障引力点的存在,USV以贴近障碍物边缘的路径进行避障,在未到达避障引力点时立刻切换为下个引力点,从而避免与障碍物发生碰撞。由于期望航迹点的存在,LOS-APF算法与传统算法相比,路径更加平滑。
![]() |
图 6 多障碍物传统APF算法 Fig. 6 Multi-obstacle traditional APFalgorithm |
![]() |
图 7 多障碍物改进LOS-APF算法 Fig. 7 Multi-obstacle improved LOS-APF algorithm |
图8(a)为改进前后2种算法的航迹偏移距离,2种算法均在210 ms处达到航迹偏移的最大值,传统APF的偏移达到82.6 m,而LOS-APF算法的偏移为30.8 m,最大航迹偏移量减少了62.71%。从整体上看来,400 ms后的LOS-APF算法完全贴合航迹线行驶,APF和LOS-APF算法整体的偏移量分别为
![]() |
图 8 多障碍物实验数据对比图 Fig. 8 Comparison of experimental data of obstacles |
图8(b)为传统APF算法与改进后LOS-APF算法的USV艏向角对比图,APF算法由于在初始位置就受到了斥力作用开始了转向操作,偏离45°的最大艏向角度为62.9°。LOS-APF算法由于受到避障引力点作用稍晚转向,最大角度为37.44°,相比减少了59.52%。在多障碍物环境中,改进算法无论是航迹保持还是艏向变化都远小于传统算法。
3.2 大型障碍物避障实验仿真为验证改进LOS-APF算法避障的效果,设定大型障碍物环境进行算法对比仿真实验。图9为传统APF算法的大型障碍物避障路线,当USV进入到障碍物的斥力势场范围后,USV由于受到障碍物斥力的作用产生艏向角的急转,甚至出现一定的后退情况,随后USV受到障碍物斥力的作用平滑避开障碍物并到达终点。
![]() |
图 9 大型碍物传统APF算法 Fig. 9 Traditional APF algorithm for large obstacles |
图10为改进LOS-APF算法在相同的障碍物地图下的避障路线,包括3个航迹引力点
![]() |
图 10 改进LOS-APF算法大型障碍物避障 Fig. 10 Improved LOS-APF algorithm for large obstacle avoidance |
图11(a)为传统APF算法与改进后LOS-APF算法在大型障碍物地图中的偏移量对比图,当USV行驶时间达到675 ms时,USV在2种算法下都到达了最大航迹偏移的位置,LOS-APF算法在最大航迹偏移量上比传统APF算法减小了26 m,USV在LOS-APF算法下整体的偏移总量减少了13.2%。
![]() |
图 11 大型障碍物实验数据对比图 Fig. 11 Comparison of experimental data for large obstacles |
图11(b)为传统APF算法与改进后LOS-APF算法的USV在大型障碍物避障中的艏向角对比图。传统APF与LOS-APF算法最大正转向角的位置分别为67°与49°,最大负转向角分别为−36°与−34°,整体艏向角度上改进算法减少了17.3%。在大型障碍物避障过程中由于环境的限制,LOS-APF算法的偏移量与艏向角变化都有一定的下限。从仿真结果可以看出,在大型障碍物地形中,USV在LOS-APF算法下具有更加短航迹偏移与更小的艏向角变化,避障效果更加优越。
3.3 局部最小值避障实验仿真传统APF算法在避障过程中存在局部最小值的问题。图12为传统APF算法在陷入局部最小值情况下的避障路线图,APF算法理论上的全局梯度最低点为目标点,但由于环境与USV本身转向角度的限制,陷入无法摆脱的环境位置点。此时USV受到的障碍物斥力与引力相互抵消,陷入局部最小值状态,停留在原地。
![]() |
图 12 传统APF算法局部最小值避障 Fig. 12 Traditional APF algorithm local minimum obstacle avoidance |
改进LOS-APF算法在同样的局部最小值环境中,由于设置了避障引力点,USV逐个到达引力点并最终到达目的地。图13中的USV在既定的局部最小值环境下,通过改进后的LOS-APF算法动态切换引力点摆脱了局部最小值的状态,相较于传统APF算法,改进算法能够成功摆脱局部最小值环境。
![]() |
图 13 改进LOS-APF算法局部最小值避障 Fig. 13 Improved LOS-APF algorithm for local minimum obstacle avoidance |
本文针对传统APF在无人艇路径规划中存在航迹不可控和局部最小值问题,经研究改进提出一种LOS-APF算法。算法通过LOS原理确定了路径上的每个期望航迹点坐标,将位于障碍物内部的航迹点动态切换为避障点引力点。利用APF算法作为规划方案,采用自然对数构建航迹引力公式,并采用幂函数构建终点引力公式;在斥力函数中添加相对角度变量,随着角度的变化,障碍物对USV的斥力作用也逐渐变化,适用于航迹要求更高的场景。最后从仿真实验结果中可以得出,LOS-APF算法的路径偏移量远低于传统APF的路径偏移量,USV的艏向变化也更小,避障引力点的设计帮助USV摆脱局部最小值环境。在实际应用中LOS-APF算法既保留了APF算法的航迹平滑的特点,还能够驱动USV在稳定的航线行驶,有一定的实际应用价值。
[1] |
王磊, 刘晶晶, 齐俊艳, 等. 基于改进人工势场法的AUV全局路径规划[J]. 河南理工大学学报(自然科学版), 2024, 43(1): 132-139. |
[2] |
MARIN-PLAZA P, HUSSEIN A, MARTIN D, et al. Global and local path planning study in a ROS-Based research platform for autonomous vehicles[J]. Journal of Advanced Transportation, 2018, 20181−10.
|
[3] |
葛甜, 岳佳豪. 改进人工势场法的避障轨迹规划[J]. 汽车实用技术, 2023, 48(23): 50-55. |
[4] |
张扬, 彭鹏菲, 曹杰. 基于改进APF算法的水面无人艇局部路径规划[J]. 兵器装备工程学报, 2023, 44(9): 42-48. |
[5] |
刘涛, 贾立校, 曹翔. 动态人工势场法的无人船避障路径规划[J]. 舰船科学技术, 2023, 45(5): 89-92. |
[6] |
FAN X, GUO Y, LIU H, et al. Improved artificial potential field method applied for AUV path planning[J]. Mathematical Problems in Engineering, 2020(1): 1−21.
|
[7] |
SONG J, HAO C, SU J. Path planning for unmanned surface vehicle based on predictive artificial potential field[J]. International Journal of Advanced Robotic Systems, 2020, 17(2): 255689146. |
[8] |
ZHU Z, YIN Y, LYU H. Automatic collision avoidance algorithm based on route-plan-guided artificial potential field method[J]. Ocean Engineering, 2023, 271(3): 1-23. |
[9] |
CHU Y, WU Z, YUE Y, et al. PK-APF: path-keeping algorithm for USVs based on artificial potential field[J]. Applied Sciences, 2022, 12(16): 8201. DOI:10.3390/app12168201 |
[10] |
LIU Z, SONG S, YUAN S, et al. ALOS-based USV path-following control with obstacle avoidance strategy[J]. Journal of Marine Science and Engineering, 2022, 10(9): 1203. DOI:10.3390/jmse10091203 |
[11] |
WANG X, LIU J, PENG H, et al. A simultaneous planning and control method integrating APF and MPC to solve autonomous navigation for USVs in unknown environments[J]. Journal of Intelligent & Robotic Systems, 2022, 105(2): 36-52. |