舰船科学技术  2023, Vol. 45 Issue (23): 78-84    DOI: 10.3404/j.issn.1672-7649.2023.23.014   PDF    
基于最大熵强化学习的自主船舶航迹跟踪研究
翟宏睿1,2, 罗亮1,2, 杨萌3, 梁新月4, 焦仕昂1,2, 刘维勤1,2     
1. 高性能船舶技术教育部重点实验室,湖北 武汉 430000;
2. 武汉理工大学 船海与能源动力工程学院,湖北 武汉 430000;
3. 中国舰船研究设计中心,湖北 武汉 430000;
4. 武汉理工大学 交通与物流工程学院,湖北 武汉 430000
摘要: 为解决自主船舶在航迹跟踪过程中使用最大熵强化学习作为控制器出现的收敛速度慢和训练时间长等问题,提出一种基于改进最大熵强化学习的航迹跟踪算法,引入了优先经验回放(PER)技术,并结合视线制导算法(LOS),构建PER-SAC的深度强化学习控制器,设计了相应的状态、动作空间和奖励函数。仿真结果表明,设计的PER-SAC控制器能快速收敛,收敛稳定后的控制器相较于原始SAC控制器控制性能更稳定,且控制精度更高,为自主船舶的航迹跟踪控制提供了一定参考价值。
关键词: 自主船舶     航迹跟踪     最大熵强化学习     视线制导算法     优先经验回放    
Research on autonomous ship track tracking based on maximum entropy reinforcement learning
ZHAI Hong-rui1,2, LUO Liang1,2, YANG Meng3, LIANG Xin-yue4, JIAO Shi-ang1,2, LIU Wei-qin1,2     
1. Key Laboratory of High Performance Ship Technology, Ministry of Education, Wuhan 430000, China;
2. School of Naval Architecture Ocean and Energy Power Engineering, Wuhan University of Technology, Wuhan 430000, China;
3. China Ship Research and Design Center, Wuhan 430000, China;
4. School of Transportation and Logistics Engineering, Wuhan University of Technology, Wuhan 430000, China
Abstract: To solve the problems of slow convergence and long training time that can occur when using maximum entropy reinforcement learning as a controller in the course of track tracking for autonomous ships, a track tracking algorithm based on improved maximum entropy reinforcement learning is proposed, introducing the preferred experience playback (PER) technique and combining it with the line of sight guidance algorithm (LOS) to construct a deep reinforcement learning controller for PER-SAC and design the corresponding the state, action space and reward function. Simulation results show that the designed PER-SAC controller can converge quickly, and the control performance is more stable and the control accuracy is higher after convergence and stabilisation compared to the original SAC controller, which provides some reference value for the track tracking control of autonomous ships.
Key words: autonomous ship     track tracking     maximum entropy reinforcement learning     line-of-sight guidance algorithm     priority experience replay    
0 引 言

随着对船舶操作自动化和自主管理的需求日益增多[1],国内外对船舶的研究也朝着智能化方向迅速发展。通过有效的控制手段进行航迹跟踪,是船舶在复杂环境下也能顺利完成任务的重要方法之一。航迹跟踪控制是指自主船舶从任意初始位置出发,驶入期望航迹并沿着期望航迹到达终点。

近年来,随着神经网络的飞速发展,深度强化学习受到了国内外广泛关注[2]。深度学习可实现对任意复杂非线性函数的逼近,学习高维特征;强化学习可在与环境交互过程中学习到最优解,使得其在求解复杂的非线性问题中有独特优势。因此,深度强化学习在航迹跟踪控制中的应用值得探索和研究。针对自主船舶的控制问题,Shen等[3]通过Actor- Critic强化学习方法来解决欠驱动船舶的路径跟随问题。Martinsen等[4]提出一个基于深度确定性策略梯度方法(DDPG)的新框架,用于解决在未知洋流影响下的欠驱动船舶的直线路径跟随问题。Zhao等[5]使用改进的随机制动深度强化学习(DRLRB)解决了欠驱动无人水面舰艇(USV)编队的路径跟踪问题。

为实现自主船舶航迹跟踪的高精度控制,本文在视线制导算法(LOS)的基础上,提出一种基于优先经验回放的SAC算法(PER-SAC)深度强化学习控制器,基于OpenAI gym框架构建的仿真环境中进行训练,通过仿真实验验证了PER-SAC控制器的有效性。

1 船舶建模以及航迹跟踪问题 1.1 欠驱动自主船舶建模

通常只考虑三自由度数学模型对欠驱动自主船舶的航迹跟踪问题进行研究,欠驱动自主船舶的运动模型用三自由度运动学方程和三自由度动力学方程来描述。定义向量 ${\boldsymbol{\eta}} = {[x,y,\psi ]^{\rm{T}}}$ 为自主船舶在大地坐标系下的位姿,x、y为自主船舶的位置, $ \psi $ 为自主船舶的首向角;定义 ${\boldsymbol{v}} = {[u,v,r]^{\rm{T}}}$ 为船体坐标系下的速度和角速度,自主船舶的水平面三自由度运动模型表达式为:

$ \left\{ {\begin{array}{*{20}{l}} {\dot {\boldsymbol{\eta}} = {\boldsymbol{R}}({\boldsymbol{\eta}} ){\boldsymbol{\nu}} },\\ {{\boldsymbol{M}}\dot {\boldsymbol{\nu}} + {\boldsymbol{C}}({\boldsymbol{v}}){\boldsymbol{\nu}} + {\boldsymbol{D}}({\boldsymbol{v}}){\boldsymbol{v}} = {{\boldsymbol{\tau}} _c} + {{\boldsymbol{\tau}} _e}} 。\end{array}} \right. $ (1)

式中, $ {\boldsymbol{R}}({\boldsymbol{\eta}} ) $ 为船体坐标系到大地坐标系的转换矩阵,具体表示为:

$ {\boldsymbol{R}}({\boldsymbol{\eta}} ) = \left[ {\begin{array}{*{20}{c}} {\cos \psi }&{ - \sin \psi }&0 \\ {\sin \psi }&{\cos \psi }&0 \\ 0&0&1 \end{array}} \right] 。$ (2)

$ {\boldsymbol{M}} = {{\boldsymbol{M}}_{RB}} + {{\boldsymbol{M}}_A} $ ,为刚体惯性矩阵与附加质量矩阵之和,具体表示为:

$ {\boldsymbol{M}}= \left[ {\begin{array}{*{20}{c}} {m - {X_{\dot u}}}&0&0 \\ 0&{m - {Y_{\dot v}}}&{ - {Y_{\dot r}}} \\ 0&{ - {N_{\dot v}}}&{{I_z} - {N_{\dot r}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{m_{11}}}&0&0 \\ 0&{{m_{22}}}&{{m_{23}}} \\ 0&{{m_{32}}}&{{m_{33}}} \end{array}} \right] 。$ (3)

式中:m为自主船舶的质量; $ {X}_{\dot{u}},{Y}_{\dot{v}},{N}_{\dot{r}} $ 均为水动力系数; $ {I_z} $ 为自主船舶质量对z轴的转动惯量。

$ {\boldsymbol{C}}(v) = {{\boldsymbol{C}}_{RB}} + {{\boldsymbol{C}}_A}(v) $ ,为刚体科里奥向心力矩阵与水动力科里奥向心力矩阵之和,具体表示为:

$ \begin{split} {{\boldsymbol{C}}_A}(v) & = \left[ {\begin{array}{*{20}{c}} 0&0&{ - mv + {Y_{\dot v}}v + {Y_{\dot r}}r} \\ 0&0&{mu - {X_{\dot u}}u} \\ {mv - {Y_{\dot v}}v - {Y_{\dot r}}r}&{ - mu + {X_{\dot u}}u}&0 \end{array}} \right]= \\ & \left[ {\begin{array}{*{20}{c}} 0&0&{ - {m_{22}}v - {m_{23}}r} \\ 0&0&{{m_{11}}u} \\ {{m_{22}}v - {m_{23}}r}&{ - {m_{11}}u}&0 \end{array}} \right]。\\[-21pt] \end{split} $ (4)

$ {\boldsymbol{D}}(v) = {{\boldsymbol{D}}_L} + {{\boldsymbol{D}}_{DL}}(v) $ ,为线性阻尼矩阵 $ {{\boldsymbol{D}}_L} $ 与非线性阻尼矩阵 $ {{\boldsymbol{D}}_{DL}}(v) $ 之和,具体表示为:

$ \begin{split} {\boldsymbol{D}}(v) & = \left[ {\begin{array}{*{20}{c}} { - {X_u} - {X_{|u|u}}|u|}&0&0 \\ 0&{ - {Y_v} - {Y_{|v|v}}|v|}&{ - {Y_r} - {Y_{|v|r}}|v|} \\ 0&{ - {N_v} - {N_{|v|v}}|v|}&{ - {N_r} - {N_{||v\mid }}|v|} \end{array}} \right] =\\ & \left[ {\begin{array}{*{20}{c}} {{d_{11}}}&0&0 \\ 0&{{d_{22}}}&{{d_{23}}} \\ 0&{{d_{32}}}&{{d_{33}}} \end{array}} \right] 。\\[-21pt] \end{split} $ (5)

式中, $ {X}_{(·)}、{Y}_{(·)}、{N}_{(·)} $ 均为水动力系数。

${{\boldsymbol{\tau}} _c} = {\left[ {{\tau _u},0,{\tau _t}} \right]^{\text{T}}}$ ,为控制力, $ {\tau _u} $ $ {\tau _t} $ 分别为自主船舶的纵向推进力和转向力矩; $ {\tau _e} = {\left[ {{\tau _{eu}},{\tau _{ev}},{\tau _{er}}} \right]^{\text{T}}} $ ,为环境干扰力, $ {\tau _{eu}} $ $ {\tau _{ev}} $ $ {\tau _{er}} $ 分别为自主船舶在uvr方向受到的环境干扰。

由上述公式总结,标准的自主船舶水平面三自由度运动模型为:

$ \left\{ \begin{aligned} & {\dot x = u\cos (\psi ) - v\sin (\psi )} ,\\ & {\dot y = u\sin (\psi ) + v\cos (\psi )},\\ & {\dot \psi = r} ,\\ & {\dot u = \frac{1}{{{m_{11}}}}\left( {{m_{22}}ur + {m_{23}}{r^2} - {d_{11}}u + {\tau _u} + {\tau _{eu}}} \right)},\\ & {\dot v = \frac{1}{{{m_{22}}}}\left( { - {m_{23}}\dot r - {m_{11}}ur - {d_{22}}v - {d_{23}}r + {\tau _v} + {\tau _{ev}}} \right)},\\ & \dot r = \frac{1}{{{m_{33}}}}\left( - {m_{32}}\dot v - {m_{22}}uv - {m_{23}}u{\text{r}} + {m_{11}}uv - {d_{32}}v -\right.\\ & \left. {d_{33}}r + {\tau _t} + {\tau _{er}} \right) 。\end{aligned} \right. $ (6)
1.2 LOS制导系统

航迹跟踪指的是跟随预定义航迹的任务。对于自主船舶的航迹跟踪,船舶应以所需的航向角通过航路点 $({x_i},{y_i})$ 。LOS算法是广泛应用于解决航迹跟踪问题的一种方法。

LOS制导系统的示意图如图1所示。假设 $ {P_{k + 1}}({x_{k + 1}},{y_{k + 1}}) $ 为当前期望航路点, $ {P_k}({x_k},{y_k}) $ 为上一个期望航路点,自主船舶的当前位置记为 $ P(x,y) $ ,以 $ P(x,y) $ 为圆心,选择半径 $ {R_{LOS}} $ 与期望航迹 $ {P_k}{P_{k + 1}} $ 相交,与 $ {P_{k + 1}} $ 更靠近的点 $ {P_{LOS}}({x_{LOS}},{y_{LOS}}) $ 作为LOS点,当前自主船舶的位置与LOS点的方向矢量与正北方向的夹角 $ {\psi _d} $ 则为视线角,即期望航向角。此时,LOS算法可写为:

图 1 LOS航迹跟踪导航示意图 Fig. 1 LOS trajectory tracking navigation schematic
$ {\psi _d} = {\psi _p} + {\psi _{LOS}} = {\psi _p} + \arctan \left(\frac{{ - e}}{\Delta }\right)。$ (7)

式中: $ \Delta $ 为自主船舶的可视距离,一般为船的1.5~2.5倍; $ e $ 为自主船舶的横向跟踪误差; $ {\psi _p} $ 为期望航迹 $ {P_k}{P_{k + 1}} $ 与正北方向的夹角; $ {\psi _{LOS}} $ 为当前自主船舶的位置与LOS点的方向矢量与期望航迹 $ {P_k}{P_{k + 1}} $ 的夹角。航向角误差为 $ {\psi _e} = {\psi _d} - \psi - \beta $ ,其中, $ \psi $ 为首向角, $ \beta $ 为漂角。当 $ {\psi _e} $ 趋于0时,当前航向角便追踪上期望航向角 $ {\psi _d} $ 。航迹跟踪的控制目标是使横向跟踪误差 $ e $ 和航向角误差 $ {\psi _e} $ 为0。

自主船舶跟踪当前的期望航路点,进入到一定范围时,则需自动放弃跟踪该航路点,而去跟踪下一个期望航路点 $ {P_{k + 2}}({x_{k + 2}},{y_{k + 2}}) $

2 改进强化学习算法设计 2.1 深度强化学习控制过程

强化学习(Reinforcement Learning)属于机器学习的范畴,是解决马尔科夫决策过程问题的重要方法[6]。深度强化学习(Deep Reinforcement Learning,DRL)是深度学习和强化学习结合,其具备了复杂决策问题的处理能力。近年来,随着对深度强化学习领域的研究不断深入,越来越多的优秀DRL算法被提出,如DQN[7]、DDPG[8]和SAC[9]等。

在DRL算法训练过程中,智能体(Agent)与环境(Environment)进行交互,获得环境的反馈(Reward),然后不断重复这一过程,在重复的交互过程中,会收集大量数据,再利用这些数据不断的学习优化智能体在当前状态下的动作选择,而获得一个最优策略(Policy)。航迹跟踪的控制流程如图2所示。

图 2 航迹跟踪的控制流程图 Fig. 2 Control flow of track tracking

仿真环境根据船舶智能体的动力学模型和运动学模型去更新当前时刻的状态 $ {s_t} $ ,将状态 $ {s_t} $ 输入到DRL控制器,后由DRL控制器输出舵令 $ {a_t} $ ,仿真环境再次更新船舶智能体的下一时刻状态 $ {s_{t + 1}} $ ,并获得环境反馈的奖励 $ {r_{t + 1}} $ ,然后不断的循环上述过程,将收集到的经验数据用于DRL控制器的训练。

2.2 PER-SAC算法 2.2.1 SAC算法

SAC(Soft Actor-Critic)算法是一种off-policy算法。与传统深度强化学习算法不同的是,SAC在优化策略以获得奖励期望最大的同时,还会最大化策略的熵,这样可让策略尽可能随机,防止策略过早的收敛到局部最优值,并且可探索到完成任务的多个策略,提高智能体的抗干扰能力。SAC同时最大化奖励期望和熵值的目标,可表示为:

$ {\pi }^{\ast }=\mathrm{arg}\underset{\pi }{\mathrm{max}}\sum _{t}{\mathbb{E}}_{\left({s}_{t},{a}_{t}\right)\sim {\rho }_{\pi }}\left[r\left({s}_{t},{a}_{t}\right)+\alpha \mathcal{H}\left(\pi \left(\cdot \mid {s}_{t}\right)\right)\right] 。$ (8)

式中,策略 $ \pi $ 为在状态 $ {s_t} $ 下某个动作的执行概率, $ \mathbb{E} $ 为在状态 $ {s_t} $ 执行动作 $ {a_t} $ 的奖励期望, $ {\rho _\pi } $ 为所有状态和动作的集合, $ r\left( {{s_t},{a_t}} \right) $ 为在状态 $ {s_t} $ 执行动作 $ {a_t} $ 的奖励值, $ \alpha $ 为温度系数, $ \mathcal{H} $ 为策略 $ \pi $ 在状态 $ {s_t} $ 时动作的熵。

SAC算法一共由5个网络构成,分别为一个Actor网络和4个Critic网络,4个Critic网络又包括动作状态价值估计 $ {Q_1} $ $ {Q_2} $ 网络和对应的目标网络target $ {Q_1} $ 、target $ {Q_2} $ 网络。假设智能体的当前状态为 $ {s_t} $ ,通过Actor网络得到动作的概率分布 $ \pi \left( {{a_t}|{s_t}} \right) $ ,后概率采样得到动作 $ {a_t} $ ,智能体执行完动作后,环境反馈下一刻的状态 $ {{\text{s}}_{t + 1}} $ 和奖励 $ {r_{t + 1}} $ ,并将得到的数据 $ ({s_t},{a_t},{s_{t + 1}},{r_{t + 1}}) $ 存入到经验池(Reply Buffer)中。当经验池中的数据超过一定数量时,从经验池中取出部分数据,对 $ {Q_1} $ 网络和 $ {Q_2} $ 网络进行训练,训练过程中, $ Q $ 网络的损失函数为:

$ \begin{split} {L_Q}(\theta ) = & {\mathbb{E}_{\left( {{s_t},{a_t},{s_{t + 1}}} \right) \sim \mathcal{D}}}\\ & \left[ {\frac{1}{2}{{\left( {{Q_\theta }\left( {{s_t},{a_t}} \right) - \left( {r\left( {{s_t},{a_t}} \right) + \gamma {V_{\bar \theta }}\left( {{s_{t + 1}}} \right)} \right)} \right)}^2}} \right] \\ = & {\mathbb{E}_{\left( {{s_t},{a_t},{s_{t + 1}}} \right) \sim \mathcal{D},{a_{t + 1}} \sim {\pi _\phi }}}\\ & \left[ \frac{1}{2}\Bigr( {Q_\theta }\left( {{s_t},{a_t}} \right) - \Bigr( r\left( {{s_t},{a_t}} \right) + \gamma \Bigr( {Q_{\bar \theta }}\left( {{s_{t + 1}},{a_{t + 1}}} \right) \right. \\ & - \alpha \log \left( {{\pi _\phi }\left( {{a_{t + 1}}\mid {s_{t + 1}}} \right)} \right) \Bigr) \Bigr) \Bigr)^2 ] 。\end{split} $ (9)

式中, $ \theta $ $ \bar \theta $ 分别为 $ Q $ 网络的参数及其target网络的参数, $ \phi $ 为Actor网络的参数, $ \gamma $ 为折扣因子。

在Actor网络中,从经验池中取部分数据来训练Actor网络,Actor网络的损失函数为:

$ {L_\pi }(\phi ) = {\mathbb{E}_{{s_t} \sim \mathcal{D},\varepsilon \sim \mathcal{N}}}\left[ {\alpha \log {\pi _\phi }\left( {{a_t}|{s_t}} \right) - Q\left( {{s_t},{a_t}} \right)} \right]。$ (10)

式中, $ Q\left( {{s_t},{a_t}} \right) $ 为在状态 $ {s_t} $ 下执行动作 $ {a_t} $ 时, $ {Q_1} $ 网络和 $ {Q_2} $ 网络之间的最小值,这样可有效避免 $ Q $ 网络的过高估计。

SAC算法使用了重参数技巧(reparameterization trick)采样动作,Actor网络更新梯度中的动作就是通过重参数技巧得到,在状态 $ {s_t} $ 时采样动作表示为:

$ {a_t} = {f_\phi }\left( {{\varepsilon _t};{s_t}} \right)。$ (11)

式中, $ {\varepsilon _t} $ 为从标准正太分布采样的变量, $ {f_\phi } $ 为根据 $ {\pi _\phi } $ 显式定义的。

SAC算法还可自动调节温度系数,当探索到新的区域时,最优动作未知,需增加温度系数 $ \alpha $ 去探索更多空间;当某区域已探索完全,最优动作基本已知,需减小温度系数 $ \alpha $ 。温度系数 $ \alpha $ 的损失函数为:

$ L(\alpha ) = {\mathbb{E}_{{a_t} \sim {\pi _t}}}\left[ { - \alpha \log {\pi _t}\left( {{a_t}|{\pi _t}} \right) - \alpha {\mathcal{H}_0}} \right]。$ (12)

式中, $ {\mathcal{H}_0} $ 为预先定义好的最小策略熵的阈值,一般设置为 $ {\mathcal{H}_0} = - \dim (A) $ ,即动作空间维度的相反数。

2.2.2 PER-SAC算法

在SAC算法框架中引入优先经验回放(PER)以提高算法的收敛速度和稳定性,优先经验回放使每个数据被赋予不同优先级,从经验池中采样数据对网络进行训练时,以更大的概率取样到优先级更高的数据,若每次从经验池中采样数据时都根据优先级对所有数据排序,会十分耗费算力,所以引入SumTree存储数据的优先级。

数据的优先级通过TD误差定义,TD误差大的数据就代表该数据的预测精度不高,需提高该数据的出现概率,也就是数据的优先级高。TD误差 $ {\delta _t} $ 定义为:

$ {\delta _t} = r\left( {{s_t},{a_t}} \right) + \gamma {Q_{\bar \theta }}\left( {{s_{t + 1}},{a_{t + 1}}} \right) - {Q_\theta }\left( {{s_t},{a_t}} \right)。$ (13)

数据 $ i $ 采样的概率定义为:

$ P(i)=\frac{{p}_{i}^{\phi }}{\sum _{i=1}^{k}{p}_{i}^{\phi }}。$ (14)

式中, $ \varphi $ 来优先级控制系数, $ {p_i} = \left| {{\delta _i}} \right| + \xi $ 为第i个数据的优先级,加入 $ \xi $ 可避免数据被取到的概率为0。概率采样机制可保证TD误差较小的数据仍然可被采样,丰富了训练过程中的数据。

在PER-SAC算法中,计算TD误差时需同时考虑算法中的 $ {Q_0} $ 网络、 $ {Q_1} $ 网络和Actor网络策略 $ \pi $ ,一般Actor网络的输出值远小于Critic网络的输出值,将这3个网络的TD误差直接相加可能会导致Actor网络的TD误差对总TD误差的影响较大,影响算法的性能。因此PER-SAC算法通过引入系数 $ \chi $ 来适当放大Actor网络的TD误差,最后总TD误差的计算方法为:

$ {\delta _j} = abs\left( {TD\left( {{Q_1}} \right)} \right) + abs\left( {TD\left( {{Q_2}} \right)} \right) + \chi abs\left( {TD(\pi )} \right)。$ (15)

由于优先级经验回放的引入,样本的采样频率发生了改变,因此需要使用重要性采样权重修正优先经验回放引入的误差。重要性采样权重计算方法为:

$ ISWeight\text={w}_{j}={\left(N\cdot P(j)\right)}^{-g}/\underset{i}{\mathrm{max}}\left({w}_{i}\right)。$ (16)

式中: $ {w_j} $ 为当前选择样本j的权重经过归一化处理之后的权重;N为样本容量;g $ {w_j} $ 的调整系数, $ \underset{i}{\mathrm{max}}\left({w}_{i}\right) $ 为所有样本的归一化权重中最大权重。

最后使用重要性采样权重对Critic网络的损失函数进行更新。对式(9)的更新如下:

$ {L_Q}^*(\theta ) = {L_Q}(\theta ) \cdot {w_j} 。$ (17)

PER-SAC算法的网络结构如图3所示。首先使用Actor网络与环境交互,并使用重参数技巧引入随机噪声加大对环境的探索,然后将当前状态 $ {s_t} $ ,执行的动作 $ {a_t} $ ,以及环境反馈的下一刻状态 $ {s_{t + 1}} $ ,奖励 $ {r_{t + 1}} $ 组合的四元组 $ ({s_t},{a_t},{s_{t + 1}},{r_{t + 1}}) $ 存储到经验池中。在训练阶段,根据优先级从经验池中采样数据来更新 $ {Q_1} $ 网络、 $ {Q_2} $ 网络的参数,然后使用较小的 $ Q $ 值去更新Actor网络的参数,同时需要使用 $ {Q_1} $ 网络、 $ {Q_2} $ 网络的参数去软更新对应目标网络target $ {Q_1} $ 、target $ {Q_2} $ 的网络参数。而在不同的状态下需要不同大小的熵,所以还需根据温度系数 $ \alpha $ 的损失函数去更新温度系数。最终根据 $ {Q_1} $ 网络、 $ {Q_2} $ 网络和Actor网络策略 $ \pi $ 的误差去计算总TD误差,并更新经验池中对应样本的优先级。

图 3 PER-SAC算法网络结构图 Fig. 3 PER-SAC algorithm network structure
2.2.3 状态空间设计

PER-SAC控制器的Actor网络和Critic网络都使用状态作为输入信息。状态被定义为自主船舶在时刻t可从环境中接收的信息,是自主船舶制定决策和评估其长期奖励的依据。同时要对横向跟踪误差和航向角误差进行调节,使横向跟踪误差和航向角误差趋向于0来达到跟踪效果。为了实现更好的跟踪效果,总的状态由时刻 $ t $ 的状态值和上一时刻 $ t - 1 $ 的状态值组成。结合这2个状态值得到的总状态 $ {s_t} $ ,一共由14个元素组成:

$ \begin{split} {s_t} =& \left[ {x_t},{y_t},{e_t},{{\left( {{\psi _e}} \right)}_t},{{\left( {{\psi _c}} \right)}_t},{\zeta _t},{d_t},{x_{t - 1}},{y_{t - 1}},{e_{t - 1}},\right.\\ & \left.{{\left( {{\psi _e}} \right)}_{t - 1}},{{\left( {{\psi _c}} \right)}_{t - 1}},{\zeta _{t - 1}},{d_{t - 1}} \right]。\end{split} $ (18)

式中:x、y为自主船舶在二维平面中的位置; $ e $ 为横向跟踪误差; $ {\psi _e} $ 为航向角误差; $ {\psi _c} $ 为航向角; $ \zeta $ 为舵角; $ d $ 为自主船舶到目标的距离。

2.2.4 动作空间设计

针对航迹跟踪任务的特点,将舵角定义为自主船舶的策略所选择的动作,该角度可改变自主船舶的方向和航迹,其值的选取设定为(−35°,35°)以内。

2.2.5 奖励函数设计

在本文中,每个时间步骤能获得的奖励细分为目标奖励 $ {R_{goal}} $ ,横向跟踪误差奖励 $ {R_{cross}} $ 和航路点奖励 $ {R_{waypo{int} }} $ ,而目标奖励 $ {R_{goal}} $ 和横向跟踪误差奖励 $ {R_{cross}} $ 又具有不同价值范围,为了平衡这2种奖励的效果,因此对这2种奖励做归一化处理[10],将奖励的价值范围调整为(−1,1)。每个奖励的详细描述如下:

1) 目标奖励

目标奖励是根据自主船舶与LOS点之间的距离所给出的奖励,式(19)给出了目标奖励 $ {R_{goal}} $ 的计算公式:

$ \begin{split} & {R}_{goal}=\frac{{L}_{t}-{L}_{t+1}}{{v}_{o}\cdot {\rm{d}}t},\\ & \text{where}\;{L}_{t}=\sqrt{{\left({x}_{t}-{x}_{LOS}\right)}^{2}+{\left({y}_{t}-{y}_{LOS}\right)}^{2}}。\end{split} $ (19)

式中, $ {v_o} $ 为自主船舶的速度, $ {\rm{d}}t $ 为时间步长, $ {L_t} $ $ {L_{t + 1}} $ 分别为自主船舶当前时刻位置和下一时刻位置与LOS点之间的距离。式(19)的分子为每个时间步长距LOS点的距离差,分母为自主船舶在每个时间步长所移动的距离。

2) 横向跟踪误差奖励

横向跟踪误差奖励是根据给定的动作 $ {a_t} $ 下自主船舶的位置和给定航迹之间的距离给出奖励,式(20)给出了横向跟踪误差奖励的计算公式:

$ {R_{cross}} = \frac{{\left( {{d_{\max}}/2 - e} \right)}}{{{d_{\max}}/2}}。$ (20)

式中, ${d_{\max}}$ 为自主船舶与给定航迹之间的最大距离, $ e $ 为自主船舶从当前时刻位置执行给定的动作 $ {a_t} $ 之后移动到下一时刻位置处自主船舶与给定航迹之间的距离,即横向跟踪误差。

3) 航路点奖励

航路点奖励被定义为当自主船舶通过给定的动作 $ {a_t} $ 到达航路点时给予的奖励。与目标奖励和横向跟踪误差奖励不同的是,只有当自主船舶到达航路点时,航路点奖励才会被设置为给定值。当自主船舶在没到达航路点时,航路点奖励为0,式(21)给出了航路点奖励的计算公式:

$ {R_{waypo{int} }} = \left\{ \begin{aligned} & 10,{\text{ }}{\text{ }}\left\| {{P_{waypo{int} }} - {P_{t + 1}}} \right\| < {\varepsilon _{Check}} ,\\ & 0,{\text{ }}{\rm{otherwise}} 。\end{aligned} \right. $ (21)

式中, $ {R_{waypo{int} }} $ 为每个航路点的位置, $ {P_{t + 1}} $ 为自主船舶下一时刻的位置, $ {\varepsilon _{Check}} $ 为当自主船舶到达航路点的该距离范围,就识别为自主船舶到达了航路点,本文假设为25 m。

最终,定义每个时间步骤能获得的总奖励表达式为:

$ r = {R_{goal}} + {R_{cross}} + {R_{waypo{int} }}。$ (22)
3 控制器训练与算法对比分析 3.1 控制器训练

为验证算法的有效性,基于OpenAI gym框架构建了自主船舶航迹跟踪环境,支持使用tensorboard对训练结果进行可视化展示,并且可通过实时绘制自主船舶的航行航迹来掌握算法的训练情况。训练环境包括了图像引擎模块,物理引擎模块和航迹绘制模块等。

训练平台硬件配置为i7-12700H CPU和RTX3060 GPU,SAC-PER控制器中网络的训练超参数设置如表1所示。

表 1 超参数设置 Tab.1 Hyperparameter settings

使用Pytorch作为深度强化学习的训练框架,训练回合为900,每回合的最大步长为800,采样时间为1s。为了更清晰地观察仿真结果,以训练回合数为横坐标,该回合的平均奖励值为纵坐标,绘制PER-SAC控制器训练的每回合平均奖励值图,如图4所示。

图 4 每回合平均奖励值图 Fig. 4 Average reward value per eposide

图4可看出,训练初期的每回合平均奖励值较低;当训练到400~500周期时,每回合平均奖励值迅速增加;500周期以后,每回合平均奖励值趋于稳定,算法收敛趋于稳定,展现了快速学习的过程。

3.2 算法对比分析

训练完成后,PER-SAC控制器保存了回合奖励最大的参数模型。为验证PER-SAC控制器的有效性,基于OpenAI gym框架构建了2种仿真环境:直线航迹跟踪环境和折线航迹跟踪环境,进行PER-SAC控制器和原始SAC控制器的对比实验。

直线航迹跟踪环境对比试验:设计一条直线航迹,航迹点坐标为(200,0),(200,600),自主船舶从坐标(10,5)出发,单位均为m。

通过观察图5的每回合平均奖励值图,发现在直线航迹跟踪环境中,PER-SAC控制器的回合平均奖励值在390回合左右迅速上升,明显快于SAC控制器的收敛速度。PER-SAC控制器在500回合左右收敛趋于稳定,而SAC控制器在600回合左右收敛趋于稳定,PER-SAC控制器的训练速度更快。通过观察图6直线航迹跟踪图和图7直线航迹跟踪误差图发现,PER-SAC控制器在直线航迹跟踪环境中能快速的进行稳定跟踪,并具有更稳定的控制性能,PER-SAC控制器的航迹存在轻微震荡,而SAC控制器的震荡幅度要明显更大。

图 5 直线航迹跟踪每回合平均奖励值图 Fig. 5 Straight track tracking average reward value per eposide

图 6 直线航迹跟踪效果图 Fig. 6 Straight track tracking effect

图 7 直线航迹跟踪误差图 Fig. 7 Straight track tracking error

折线航迹跟踪环境对比试验:设计一条折线航迹,航迹点坐标为(125, 0),(125, 500),(475, 500),(475, 100),自主船舶从坐标(475,100)出发,单位均为m。

通过观察图8折线航迹跟踪图和图9折线航迹跟踪误差图,可知PER-SAC控制器在转弯处可迅速跟踪到期望航迹,并且相较于SAC控制器有着更高的跟踪精度和更稳定的控制性能。除了在折线转弯处因切换航路点导致横向跟踪误差增大外,PER-SAC控制器的峰值跟踪误差也要明显小于SAC控制器的峰值跟踪误差。

图 8 折线航迹跟踪效果图 Fig. 8 Polyline track tracking effect

图 9 折线航迹跟踪误差图 Fig. 9 Polyline track tracking error

为了进一步评估跟踪误差,对横向跟踪误差的均方根误差进行计算,横向跟踪误差的均方根误差如表2所示。

表 2 控制性能指标 Tab.2 Control performance indicators

综上所述,PER-SAC控制器的控制稳定性和控制精度要高于SAC控制器,而且可迅速跟踪到变化的航迹,而SAC控制器无法及时跟踪航迹的变化。由此可见,本文提出的PER-SAC控制器具有控制性能稳定、控制精度高和跟踪及时的特点。

4 结 语

本文针对自主船舶的航迹跟踪问题,提出一种基于SAC和PER的深度强化学习控制器,设计了状态、动作空间和奖励函数,并且在基于OpenAI gym框架下构建的不同航迹跟踪环境中进行了仿真实验。通过仿真实验验证了PER-SAC控制器的有效性,同时经过分析发现,PER-SAC控制器在航迹跟踪过程中具有控制精度高,控制性能稳定的特点,对于航迹变化的情况,也可迅速跟踪。整体而言,本文方法可应用到自主船舶的航迹跟踪控制问题中,对船舶的智能控制提供了一定参考。

参考文献
[1]
ZHAO L, ROH M I, LEE S J. Control method for path following and collision avoidance of autonomous ship based on deep reinforcement learning[J]. Journal of Marine Science and Technology, 2019, 27(4): 1.
[2]
王珂, 卜祥津, 李瑞峰, 等. 景深约束下的深度强化学习机器人路径规划[J]. 华中科技大学学报(自然科学版), 2018, 46(12): 77-82.
WANG Ke, BU Xiangjin, LI Ruifeng, et al. Deep reinforcement learning robot path planning under the constraint of depth of field[J]. Journal of Huazhong University of Science and Technology (Natural Science Edition), 2018, 46(12): 77-82.
[3]
SHEN H, GUO C. Path-following control of underactuated ships using actor-critic reinforcement learning with MLP neural networks[C]//2016 Sixth International Conference on Information Science and Technology (ICIST). Dalian, China: IEEE, 2016: 317–321.
[4]
MARTINSEN A B, LEKKAS A M. Straight-path following for underactuated marine vessels using deep reinforcement learning[J]. IFAC-PapersOnLine, 2018, 51(29): 329-334. DOI:10.1016/j.ifacol.2018.09.502
[5]
ZHAO Y, MA Y, HU S. USV formation and path-following control via deep reinforcement learning with random braking[J]. IEEE Transactions on Neural Networks and Learning Systems, 2021, 32(12): 5468-5478. DOI:10.1109/TNNLS.2021.3068762
[6]
任彧, 赵师涛. 磁导航AGV深度强化学习路径跟踪控制方法[J]. 杭州电子科技大学学报(自然科学版), 2019, 39(2): 28-34.
REN Yu, ZHAO Shitao. Magnetic navigation AGV deep reinforcement learning path tracking control method[J]. Journal of Hangzhou Dianzi University (Natural Science Edition), 2019, 39(2): 28-34.
[7]
MNIH V, KAVUKCUOGLU K, SILVER D, et al. Human-level control through deep reinforcement learning[J]. Nature, 2015, 518(7540): 529-533. DOI:10.1038/nature14236
[8]
LILLICRAP T P, HUNT J J, PRITZEL A, et al. Continuous control with deep reinforcement learning[C]//ICLR (Poster). 2016.
[9]
HAARNOJA T, ZHOU A, HARTIKAINEN K, et al. Soft actor-critic algorithms and applications[J]. arXiv: 1812.05905, 2018.
[10]
CHUN D H, ROH M I, LEE H W, et al. Deep reinforcement learning-based collision avoidance for an autonomous ship[J]. Ocean Engineering, 2021, 234: 109216. DOI:10.1016/j.oceaneng.2021.109216