周志杰,徐海祥,2
(1.高性能船舶技术教育部重点实验室,湖北 武汉 430063;2.武汉理工大学 交通学院,湖北 武汉 430063)
水面无人艇自主跟踪系统设计
周志杰1,徐海祥1,2
(1.高性能船舶技术教育部重点实验室,湖北 武汉 430063;2.武汉理工大学 交通学院,湖北 武汉 430063)
基于国内的研究主要集中在单艇作业的系统设计及控制算法上,为了使无人艇能够实现自主跟踪领航船,与领航船实现多艇协同作业的功能,从系统体系构架、控制流程等方面分别对控制系统进行设计。试验结果显示:设计的跟踪系统能够实现自主跟踪的功能。
水面无人艇;自主跟踪;系统设计;多艇作业
水面无人艇是一种小型智能船舶,具有水线以上雷达反射面积小,智能化程度高,密集搭载多功能传感器等特点[1-2]。在不同的领域,无人艇可以用于完成不同的任务:民用方面,无人艇可用于实现海事管理、海上搜救、水文探测等功用;军用方面,水面无人艇可用于实现水面侦察、水面作战、反潜作战等功能[3]。因此,国内外学者对其高度关注,并开展系列相关研究。近年来,我国在无人艇方面的研究不断取得成果,尤其是在无人艇的路径规划、运动控制、建模与仿真等方面已有较多论文发表[4-6],然而这些研究主要集中在算法及策略上。虽然也有在无人艇体系搭建方面的论文发表[7],但这些体系主要是针对单艇作业而设计的系统,鲜有学者针对多艇作业设计相关系统。
随着无人艇技术的发展,人们对其功能的需求也越来越高,许多任务依靠单艇很难完成,往往需要多艘艇的合作完成。目前,无人艇编队的研究同样受到高度的关注,其要求主要是编队中的跟随艇跟随领航艇航行[8]。其中领航艇可以为自主航行的无人艇,也可以为手动驾驶的非智能船舶。
本文对无人艇自主跟踪的功能进行简化以方便研究,即以一艘自主航行的小型无人艇为研究对象,使其实现自主跟踪一艘手动遥控船舶的功能。其基本思想为通过组建船间网络,自主跟踪的无人艇可以从中获取遥控船每个时刻的位置点,然后以这些位置点为目标点航行,同时通过对遥控船的速度进行估计,控制航行速度以保持两船间距相对稳定。本文旨在设计一种能够实现自主跟踪功能的小型水面无人艇跟踪系统。
体系结构涵盖范围较广。美国国家标准技术研究院(National Institute of Standards and Technology,NIST) 对体系结构的定义为:体系结构作为一种架构,包括对组成部分的标识、定义和组织,彼此之间的相互关系、设计原理、子系统的任务功能以及子系统之间的接口协议规范[9]。无人艇作为一个复杂的系统工程,未来更是向着智能化、模块化和集成化发展,为了能够尽快制造出可以实际应用的无人艇,对其研究应该运用系统工程的研究方法[10-11],然而体系结构的搭建需要了解设计的体系结构的功能需求。根据自主跟踪的需求,将无人艇的体系结构分为硬件体系结构和软件体系结构,而软件体系的设计需要根据制定的控制流程,因此设计前期体系结构搭建主要集中在硬件体系结构的搭建。
硬件体系结构又称物理架构,通俗地说就是为了实现某些功能必需的硬件集合。采用模块化设计,可以提高系统的开发效率,降低开发成本。根据无人艇的任务需求按照即插即用的原则设计相应的任务模块,可以实现无人艇功能模块的快速开发和调试[12-13]。
根据功能需求,可以将水面无人艇的组成硬件分为以下几个模块:船体模块、动力模块、通信模块、定位模块及控制模块。
(1)船体模块的设计影响的是无人艇的水动力性能,船型可以根据无人艇所需要完成的功能进行选取。在跟踪系统中,船型的选取是根据母船的航速决定的,即母船为高速船时无人艇的艇型为高速艇艇型;母船为低速船时无人艇的艇型为低速艇型。由于本文被跟踪的对象为遥控高速船,故搭建的无人艇采用高速艇艇型,其模型图如图1所示。
(2)动力模块主要用于推进无人艇航行,其主要包括能源模块和推进模块。由于无人艇的容量及空间有限,其能源供给不可能采用发电机等较大的供电设备,因此通常的能源模块主要由蓄电池组构成。随着绿色船舶概念的提出,许多学者将太阳能风能等自然能源引入作为无人艇的动力能源,大大增加了其续航力。推进模块的选取大多取决于对航速及操纵性的要求。由于跟踪系统对操纵性的要求与对航速的要求同等重要,因此许多无人艇的设计采用喷水推进模式,然而喷水推进成本相对较高[14]。为了方便研究,控制系统采用双桨双舵的推进模块,其模块图如图2所示。
(3)在自主跟踪系统中,通信模块主要用于母船、无人艇及岸基系统之间的通信。从自主跟踪的基本思想可知,其功能的前提主要是进行船间组网,而船间组网主要依靠的是通讯模块,因此通信模块的设计非常重要。考虑到无人艇的工作环境,设计采用卫星通信、超短波通信和微波通信组合通信的方式[15]。超短波和微波设备通信距离有限,主要用于视距范围内的通信。超出视距范围的远距离通信采用卫星通信。近海覆盖3G网络信号的水域可以利用3G网络进行通信,也可以通过布设无线网络在近岸水域作为备用的通信方式。本文搭建采用功耗低且安全可靠的ZigBee模块,其模块图见图3。
(4)定位模块在自动跟踪系统中扮演着不可或缺的角色。因为自动跟踪首先需要获取母船及无人艇的位置信息方才进行控制。通常定位模块采用的是GPS模块,然而定位模块的定位精度很大程度上影响跟踪的最终效果,因此采用精度较高的定位模块是非常重要的。而GPS在较小区域范围内的精度有限,为满足系统的精度要求,本次搭建采用小区域范围定位精度较高的UWB(Ultra Wide Band)模块,其模块图如图4所示。
(5)控制模块为整个控制系统的核心,主要包括输入输出子模块、电源子模块和CPU子模块。其中CPU子模块用于控制算法的执行,故而控制模块的设计主要考虑控制算法的复杂度。本文搭建采用嵌入式集成系统作为控制系统平台,其外形图如图5所示。
综上所述,设计出满足自动跟踪功能需求的硬件体系结构如图6所示。
整个控制流程大致分为三部分:数据处理模块、控制模块以及执行机构模块。控制采用循环控制,其中一个周期的控制流程如图7所示。
自主跟踪无人艇通过通信模块获取母船及自身的位置信息,其中的位置信息为广义位置信息,包括大地坐标系下的坐标值以及艏向角。然而获取得到的信息包含有噪声项(测量值与真实值之间的误差),必须进行一定的处理,即为数据处理模块。处理后的信息作为控制算法的输入,得到的结果为跟踪所需的推力和力矩。然后将计算得到的值作为执行机构的输入。执行机构根据计算结果控制自主跟踪无人艇做出响应。
2.1数据处理模块
数据处理的目的是对传感器获得的数据进行相关处理,使其与真实值尽可能的接近,以免产生较大的误差。数据处理模块的流程图如图8所示。
数据处理可分为数据预处理及滤波两部分,而数据预处理包括野值剔除、时间对准及空间对准三部分。经验和统计理论告知,即使是高质量的原始采样数据,由于受多种偶然因素的影响,往往包含有较大的随机误差,有时1%~5%甚至多达10%~20%的数据严重偏离目标真值,从而成为野值或称为异常值[16]。这些野值的存在会影响后续控制算法的精确性,严重时甚至会导致自主跟踪失败,因此对于原始测量数据首先需要进行野值的剔除以保证数据的真实性。由于领航艇及跟随艇上各配备多个(种)传感器对位置进行测量,而各传感器测量时间及测量周期各不相同,因此需要对所有测量的数据进行时间对准处理,否则会导致跟随艇与领航艇的跟踪出现时间错位的现象,同样会导致跟踪失败。除了时间上需要对准之外,还需要进行空间上的对准,以保证母船与无人艇在同一坐标系中运动。预处理之后的数据需要进行滤波处理,目的是滤除高频干扰信号,以提高跟踪精度。
2.2控制子模块
控制算法模块的任务是由获取的广义位置信息根据一定的规律计算得到所需要的推力和力矩,而在目标跟踪中这种规律又称为引导律。Fossen[17]将目标跟踪的引导律分为三类,其分类图如图9所示。
第一类又称为航迹控制,已知目标的航迹,要求跟踪船按照目标船的航迹航行,这一类控制目前广受国内学者关注。而针对这一类情况国内外研究较为成熟的引导律为LOS(Line of Sight)引导律及在其基础上的改进。第二类为定点跟踪,即已知的信息为目标船的位置,要求跟踪船以目标船的位置为目标点实时跟踪,这也是本文设计的系统需要实现的功能。第三类为跟踪拦截,需要知道目标船的位置及航速等信息,这一类问题更加复杂,本文不做详细分析。
根据功能需求,控制算法的基本思想采用PID控制的基本思想,即以目标船位置与跟踪船位置的距离作为控制的输入,输出即为所需要的推力和力矩大小。然而与传统的PID算法不同的是,传统PID旨在以最快的速度减小偏差,而对于跟踪问题,需要对两船的间距进行控制,即需要对两船的速度进行约束,避免他们之间的距离太近或太远。设计的控制模块的流程图如图10所示。
2.3执行机构模块
由控制子模块的控制算法计算得到的推力和力矩是无法直接控制螺旋桨和舵的,需要进行相应的转换。例如将需要的推力转化成螺旋桨所需要的转速;将所需要的力矩进行转换得到舵角的大小等。具体流程图如图11所示。
无人艇的软件体系为其控制核心,其设计的优劣直接影响控制效果。为设计较为优良的软件体系,需根据前面设计的控制流程图对软件体系进行搭建。本文以应用较为广泛的C语言为例,从软件系统设计、编译环境搭建及体系框架设计三部分对软件体系进行设计。
3.1软件系统设计
C语言设计初,都需要对要设计的程序绘制一个流程图,又称框架流程图。与控制流程图不同的是,框架流程图可以直接指导程序的编写工作,而控制流程图只能给出整体的控制思路。
水面无人艇编队系统的软件系统是为了监控硬件系统,因此可以将软件系统分为岸基监控系统和艇体控制系统。其中艇体控制软件程序为跟随艇控制的核心部分,承担着无人艇数据的采集和处理、数据传输和控制无人艇运动等任务[18]。而岸基监控系统主要是辅助软件,包括无人艇航迹显示界面、无人艇遥控系统等,无人艇编队软件系统结构如图12 所示。
3.2编译环境搭建
为减小ARM板的运算量,ARM板中系统采用较为普遍的Linux系统。然而这样会导致在Windows平台下编写的程序无法运行,因此需要采用交叉编译器对编写的程序进行编译。本文采用arm-linux-gcc编译器对程序进行编译。为了更方便进行调试工作,本文采用Linux系统下的eclipse软件进行程序的编写并编译工作,然后将编译后的可执行文件拷贝至开发板中运行。
3.3体系框架设计
由于跟踪控制采用的主体核心硬件为嵌入式集成系统,因此软件框架不能设计得太过复杂,避免由于计算量过大而导致开发板无法运行完程序。由于自动跟踪控制采用多种传感器,需要实时接收传感器发送来的数据,而且由于传感器发送数据的频率各不相同,因此仅靠一个线程比较难完成,所以采用多线程设计。
软件框架大体上分四个线程完成。
(1)监控线程:主要负责控制监测其他线程的运行状况。
(2)读数据线程:主要负责读取、解包、存储传感器的数据。然而由于不同的传感器可能有不同的收发频率,用同一个线程完成读取可能会发生通讯冲突,因此可以设计多个读线程分别处理。本跟踪系统包含ZigBee读线程和UWB读线程。
(3)主线程:类似于一个main函数,主要负责主控制算法的计算与执行。
(4)写线程:主要负责将指令发送给执行机构。
各线程间可能有公用的变量,因此采用共享资源的方式对这些公用的变量进行存储。为防止对这些变量同时进行读写时的冲突,可采用互斥变量以保证各线程之间的同步运行。软件系统框架图如图13所示。
为验证本文所设计的自主跟踪系统的跟踪性能,采用模型试验的方式进行。
模型试验中的领航艇采用可遥控的高速竞速艇艇型,其模型图如图14所示。通过遥控领航艇,观察跟随艇的航行轨迹,以判断其跟踪性能。
为观察跟随艇的航行情况,采用其装备的UWB定位模块航迹显示软件,显示领航艇和跟随艇的航迹及它们之间的航迹偏差,其航迹显示及实际航行如图15所示。由图15可以发现,当领航艇开始转艏运动时,跟随艇能够很好地跟踪领航艇保持编队队形。因此可以验证本文设计的跟踪系统具有较好的跟踪性能。
本文针对需要实现自主跟踪功能的无人艇的控制系统进行设计,主要集中在硬件体系、软件体系及控制流程的设计,并通过模型试验验证系统具有较好的跟踪性能。由于本系统采用模块化设计,可以根据实际的跟踪需要改变系统的局部模块,因此该系统具有较强的普遍适用性。自主跟踪系统是无人艇编队控制至关重要的部分,本文设计的系统达到了编队队形保持,跟随艇自主跟踪的目的,为无人艇编队控制提供了很好的系统平台。
[1] CAMPBELL S, NAEEM W, IRWIN G W. A review on improving the autonomy of unmanned surface vehicles through intelligent collisionavoidance manoeuvres[J]. Annual Reviews in Control, 2012, 36(2): 267-283.
[2] 李家良. 水面无人艇发展与应用[J]. 火力与指挥控制, 2012, 37(6):203-207.
[3] 孙柏林. 无人平台在军事领域里的应用[J]. 自动化博览, 2003, 20(S1):145-149.
[4] 张玉奎. 水面无人艇路径规划技术研究[D]. 哈尔滨:哈尔滨工程大学, 2008.
[5] 廖煜雷, 张铭钧, 董早鹏,等. 无人艇运动控制方法的回顾与展望[J]. 中国造船, 2014,55(4):206-216.
[6] 董慧颖, 段云波. 水面无人艇运动控制系统建模与仿真[J]. 沈阳理工大学学报, 2017, 36(1):77-84.
[7] 杨学斌. 无人艇体系结构研究[D]. 大连:大连海事大学, 2011.
[8] 康晓予, 李伟, 赵晓哲. 多智能体技术与未来无人舰艇编队[J]. 飞航导弹, 2006(2):27-29.
[9] ALBUS J,HUANG H,MESSINA E,et a1.4D/RCS:A Reference Model Architecture For Unmanned Vehicle Systems Version 2.0[EB/OL].(2008-11-17)[2017-03-11].https://www.nist.gov/publications/4drcs-version-20-reference-model-architecture-unmanned-vehicle-systems.
[10] 钱学森, 戴汝为, 何善. 工程控制论[M]. 上海:上海交通大学出版社, 2007.
[11] 苗东升. 系统科学精要[M]. 2版. 北京:中国人民大学出版社, 2006.
[12] 闵绍荣, 黎洪生. 未来舰艇作战系统总体设计模式研究[J]. 舰船电子工程, 2004, 24(1):5-8.
[13] 张平.水面舰艇模块划分方法[J].中国舰船研究, 2006, 1(4):7-10.
[14] 王立祥.船舶喷水推进[J].船舶, 1997(3):45-52.
[15] 杨永康, 毛奇凰.海上无线电通信[M].北京:人民交通出版社, 2009.
[16] 祝转民, 秋宏兴, 李济生. 动态测量数据野值的辨识与剔除[J]. 系统工程与电子技术, 2004, 26(2):147-149.
[17] FOSSEN T I. Handbook of Marine Craft Hydrodynamics and Motion Control[M]. New York:John Wiley amp; Sons Ltd, 2011.
[18] 郑烈心.水面无人艇建模与运动控制系统设计[D].广州:华南理工大学, 2016.
U664.82
A
2017-03-09
周志杰(1995—),男,硕士研究生,主要从事智能船舶系统设计、多传感器融合、传感器数据处理等领域的研究;徐海祥(1975—),男,博士,教授,博士生导师,主要研究领域为海洋动力定位系统开发、智能船舶系统研发等。