2. 中国船舶重工集团公司第七二四研究所,江苏 南京 211153;
3. 中国船舶重工集团公司,北京 100097
2. The 724 Research Institute of CSIC, Nanjing 211153, China;
3. China Shipbuilding Industry Corporation, Beijing 100097, China
近年来,随着物联网、大数据和机器智能等信息通信新技术的迅速发展,作为海洋开发和海上交通的重要载体-船舶的智能化水平也成为亟待提高的关键问题。目前不少国家已启动无人船的研制和相关基础设施建设,中国也提出建成船舶信息感知网、物联网及信息物理系统CPS管理平台,实现船舶大数据与智能化技术的深化应用。物联网(Internet of Things,IoT)技术使万物互联成为可能,通过智能感知和数据处理,使无人船在智能航行、资产追踪、远程监测、故障诊断/预测等领域实现智能化。智能航行控制作为船舶智能化实现的关键技术之一,是指无人船利用控制技术、大数据处理、多传感器信息融合技术等对感知和获得的信息进行分析和处理,对船舶航路、航速进行设计和迭代优化,最终实现自主航行。
为了对智能船舶关键技术进行验证和深入研究,本文提出一种低成本构建无人船智能航行控制系统的思路,并给出该演示验证系统的设计和软、硬件实现。
1 航行控制系统体系结构设计的无人船航行控制系统由智能船舶本体、NB-IoT基站、岸基支持中心(含NB-IoT网关)3部分组成,其中智能船舶本体中的航行控制器作为控制系统的核心,通过岸基支持中心用户可以实时监测船舶位置和运行动态,必要时进行人工干预,通过窄带物联网NB-IoT技术建立船舶本体和岸基支持中心的通信链路。
船舶本体中的航行控制器以意法半导体(ST)目前最新的Cortex-M7架构STM32H743(以下简称STM32)微处理器作为主控芯片,其主频高达400MHz,具有双精度浮点运算单元和大容量RAM,并支持DSP全指令集,是嵌入式智能信息处理的理想选择。此外控制器还包含NB-IoT通信链路、动力与转向控制、AIS自动识别系统、环境感知等电路模块。
1)PWM电机调速电路
修改STM32捕获比较寄存器TIMx_CCR2的值来控制脉冲幅度调制(Pulse Width Modulation,PWM)的输出占空比,并通过电机调速电路(电调)来控制电机的速度,电机选用3674 KV1750的无刷电机,故选用持续电流120 A的电调。
2)转向舵自动控制
与电机调速电路类似,舵机使用STM32的捕获比较寄存器TIMx_CCR4产生的PWM进行控制,本文设计的自动舵配合3.2的算法设计使船舶沿着期望的航线航行[4, 9],是船舶无人驾驶的关键技术,并在航迹控制过程中通过传感器计算出船身姿态,检测海浪以及风速、风向,计算出船身的姿态调节预测信息,使船舶姿态保持稳定。
2.2 NB-IoT通信链路蜂窝窄带物联网(Narrow Band IoT,NB-IoT)属于典型的低功耗广域网(LPWAN),具有低成本、低功耗、窄带宽、大连接等特点。NB-IoT通信链路选用SARA-N2模组构建,其符合3GPP R13 标准,支持最高227kbps下行链路速率和21kbps上行链路速率,借助电信运营商的NB-IoT基站实现船-岸实时数据共享,SARA-N2模块通过USART与STM32连接。
2.3 AIS自动识别模块自动识别系统(Automatic Identification System,AIS)的T/R电路以CMX7032芯片为核心进行设计,载入CML最新7032FI-3.x功能镜像,同时支持AIS class B的自组织时分多址接入(SOTDMA)/载波监听分时多路访问(CSTDMA)制式,并支持符合exactEarth海事卫星标准的exactTrax技术。将CMX7032的C-Bus接口与STM32的SPI接口连接,设计的AIS识别模块同时具有发送和两路信道并行接收功能,如图3所示。
无人船载的感知传感器包括差分GPS(DGPS)、风速/风向、激光雷达、船舶姿态等传感器:
1)DGPS模块采用Trimble的BD910,同时支持GPS、北斗、GLONASS和伽利略等卫星系统,具有实时差分定位(RTK)功能,单频可达厘米级定位精度,输出频率最高20 Hz,其通过USB接口与STM32主控芯片连接;
2)风速/风向传感器采用一体式风速/风向传感器变送器,该传感器输出0~5 V电压,连接STM32芯片的PF9引脚,软件编程时使用DMA2 Stream0的通道2映射ADC3实现模数转换;
3)激光雷达(Light Detection And Ranging,LiDAR)选用RPLIDAR A2二维旋转全向激光雷达,探测距离8 m,转速300~900 r/min,600 r/min典型转速角分辨率0.9°,测距分辨率<0.5 mm,通过USART的TTL电平接口与STM32主控芯片连接,STM32实时获取雷达的扫描数据、设备信息和工作状态,送岸基支持中心显示,并可以通过岸基支持中心发出的操控命令来切换雷达的工作模式;
4)姿态传感器选用集成MPU9250的9轴加速度计陀螺仪,各输出三轴的加速度、角速度和磁力计数据,具有电子罗盘功能,软件通过高精度的Kalman滤波姿态融合算法对9轴信息进行融合,动态测角精度达到0.05°,通过SPI总线与STM32连接,其中磁力计数据的读取通过软件设置使用内部的IIC MASTER转发方式。
3 系统关键软件设计与实现 3.1 无人船控制软件运动建模水面船艇的运动控制不考虑纵摇ϕ、横摇θ的影响,仅选取纵荡
$\dot \eta = {{\mathit{\boldsymbol{J}}}_\Theta }(\eta )v \text{,} $ | (1) |
式中:
$\begin{aligned}& {{\mathit{\boldsymbol{J}}}_\Theta }(\eta )\mathop = \limits^{3DOF} \left[ {\begin{array}{*{20}{c}}{\cos \varphi } & { - \sin \varphi } & 0\\{\sin \varphi } & {\cos \varphi } & 0\\0 & 0 & 1\end{array}} \right]{\rm{ = }}{\mathit{\boldsymbol{R}}}(\varphi ) ,\\ & \begin{array}{*{20}{c}}{\eta = {{[x,y,\varphi ]}^{\rm T}}}\\{v = {{[u,v,r]}^{\rm T}}} \text{。}\end{array}\end{aligned}$ | (2) |
相应的USV的动力学模型如下:
${\mathit{\boldsymbol{M}}}\dot v + {\mathit{\boldsymbol{C}}}(v)v + {\mathit{\boldsymbol{D}}}v = \tau + {\tau _{wind\& wave}}$ | (3) |
式中:
$\begin{array}{l}{\mathit{\boldsymbol{M}}} = \left[ \begin{array}{l}{m_{11{\kern 1pt} }}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0\\{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {m_{22}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {m_{23}}\\{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {m_{23{\kern 1pt} }}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {m_{33}}\end{array} \right],{\mathit{\boldsymbol{D}}} = {\kern 1pt} {\kern 1pt} \left[ \begin{array}{l}{d_{11{\kern 1pt} }}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0\\{\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {d_{22{\kern 1pt} {\kern 1pt} {\kern 1pt} }}{\kern 1pt} {\kern 1pt} {\kern 1pt} {d_{23}}\\{\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {d_{23}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {d_{33}}\end{array} \right],\\v = \left[ \begin{array}{l}u\\v\\r\end{array} \right],\tau = \left[ \begin{array}{l}{\tau _u}\\{y_{_\delta }}\delta \\{N_\delta }\delta \end{array} \right] ,\\ {\mathit{\boldsymbol{C}}}(v) = \left[ \begin{array}{l}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} - {m_{22}}v - {m_{23}}r\\{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {m_{11}}u\\{m_{22}}v + {m_{23}}r{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} - {m_{11}}u{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} 0\end{array} \right] \text{。}\end{array}$ | (4) |
使用3-DOF建模的水面船舶,航迹控制定义为在
$\left\{ \begin{split}&\dot x{\rm{ = }} - (1 - \xi y ) \dot s + {v_t}\cos (\varphi )\text{,}\\&\dot y{\rm{ = }} - \xi \dot s x + {v_t}\sin (\varphi )\text{,}\\ &\dot \varphi {\rm{ = }}r + \dot \beta - \xi \dot s \text{。}\end{split} \right.$ | (5) |
式中:ξ为路径曲率;
$\begin{array}{l}\!\!r{ _d} \!\!= \!\!{(1 \!-\! \displaystyle\frac{{m \!-\! {X_{\dot u}}}}{{m \!-\! {Y_{\dot v}}}})^{\! -\! 1}}\left( {\dot \varphi \!+\! \xi {v_t} \!\!-\! {K_1}\tilde \varphi \!\! - \!\! \displaystyle\frac{{{Y_v}}}{{m - {Y_{\dot v}}}}\left( {\tan (\beta ) \!-\!\! \displaystyle\frac{{{v_{cur}}}}{{{v_t}\cos (\beta )}}} \right)} \right) \times \\{({v_t} )_d} = {v_t}\cos (\varphi ) + {K_2}s\text{,}\end{array}$ | (6) |
式中:
${r_{ d }} = {(1 - \frac{{m - {X_{\dot u}}}}{{m - {Y_{\dot v}}}})^{ - 1}}\left( {\dot \varphi + \xi {{({v_t} )}_d} - {K_p}\tilde \varphi - {K_i}\int_0^t {\tilde \varphi (\tau ){\rm d}\tau } } \right) \text{。} \!\!\!\! $ | (7) |
式中:Kp,Ki对应PID控制器的P,I增益参数。
3.3 航迹控制软件实现航迹控制首先计算出当前实际航迹与期望航迹的误差量[5],并根据需要解算出期望速度,然后使用3.2设计的PID控制律实现闭环控制,PID控制的关键是选择合适的P(Proportion)、I(Integral)、D(Derivative)参数,即如何根据无人船的动态特性和当前海况进行参数的自动整定。响应式禁忌搜索(Reactive Taboo Search,RTS)在传统禁忌算法基础上引入了反馈机制和逃逸机制[7, 8],通过动态调整禁忌表长度和适时逃逸,从而避免搜索过程中出现循环。根据USV路径跟踪的需要,自定义RTS算法中的反馈策略和逃逸机制,实现PID参数自整定,基于RTS算法参数自整定的基本步骤如下:
1)根据当前时刻海况、船舶参数初始化P、I、D参数:Pinit,Iinit,Dinit,并预置禁忌表长度l=Len,
2)将1)产生的Pinit,Iinit,Dinit初始解保存至禁忌表和记录表,
3)根据当前解Pcur,Icur,Dcur,生成邻域解的候选PID参数集合;
4)根据渴望水平,在候选PID参数集合中选择不在禁忌表中的最优解Popt,Iopt,Dopt;
5)将最优解保存至禁忌表和记录表;
6)判断Popt,Iopt,Dopt出现在有限的迭代次数CYCmax内是否被访问过,若被访问过说明有循环出现,l = l + C,CNTesp++,否则CNTnopep++;
7)若
8)若
9)迭代次数达到或满足停止条件,转步骤10,否则转步骤3迭代执行;
10)输出最优解Popt,Iopt,Dopt。
4 结果分析 4.1 岸基支持中心界面岸基支持中心软件在Android平台下采用Java进行显示控制编程,在人机界面实现电子地图与激光雷达点迹叠加显示,运行界面如图4所示。
为验证本演示验证系统软、硬件设计可行性和航迹控制算法的有效性,使用自制电动O艇在长江某夹江段进行现场试验,O艇重30 kg,江面风力3级,平均航速20 kn。
分别在预设的曲线和环形路径下进行实验,图5和图6给出期望航迹和实际航迹的对比,可以直观看出航迹向趋势的一致性。为方便定量分析分别选取100个路径基准点(Waypoint),使用
立足于无人船的核心-智能航行控制系统架构设计和功能实现展开创新研究,最终设计并实现一个功能相对完善的智能船舶智能航行演示验证系统,提出一种基于响应式禁忌搜索的PID参数自适应整定航迹控制算法,并给出该设计和实现在模型船上的验证结果,实现智能船舶关键技术研究的突破。由于时间所限,在演示验证系统设计与实现的基础上,目前仅完成基本的航迹控制功能,如何通过多传感器系统融合算法进行路径规划和优化、故障诊断等功能是下一步研究的重点。
[1] | 徐海祥, 冯辉. 船舶动力定位系统原理[M]. 北京: 国防工业出版社, 2016. |
[2] | FOSSEN T I. Handbook of marine craft hydrodynamics and motion control[M]. John Wiley & Sons, 2011. |
[3] | LAPIERRE L, SOETANTO D. Nonlinear path-following control of an AUV[J]. Ocean engineering, 2007, 34 (11): 1734–1744. |
[4] | LARRAZABAL J M, PEÑAS M S. Intelligent rudder control of an unmanned surface vessel[J]. Expert Systems with Applications, 2016, 55 : 106–117. DOI: 10.1016/j.eswa.2016.01.057 |
[5] | ROUT R, SUBUDHI B. Inverse optimal self-tuning PID control design for an autonomous underwater vehicle[J]. International Journal of Systems Science, 2017, 48 (2): 367–375. DOI: 10.1080/00207721.2016.1186238 |
[6] | 冀明, 卢京潮. 基于 Cortex-M4 的四旋翼飞行控制系统设计[J]. 计算机测量与控制, 2013, 21 (7): 1816–1817. |
[7] | KAWAGUCHI S, FUKUYAMA Y. Reactive Tabu Search for Job-shop scheduling problems considering peak shift of electric power energy consumption[C]//Region 10 Conference (TENCON). IEEE, 2016: 3406–3409. |
[8] | 汪定伟, 王俊伟, 王洪峰, 等. 智能优化方法[M]. 北京: 高等教育出版社, 2007. |
[9] | OHTSU K, PENG H, KITAGAWA G. Design of a model-based autopilot system for course keeping motion[M]//Time Series Modeling for Analysis and Control. Springer Japan, 2015: 57–81. |