陈 卓,金建海,周则兴,张 波
(中国船舶科学研究中心,江苏 无锡 214082)
近年来,水资源保护和环境治理得到了国家越来越多的关注,如何在保持经济高速发展的同时有效地控制污染成了各国和各级政府的重要任务。在此大背景下,对河湖等水域的监测与治理也提出了更高的要求。考虑到内河水环境复杂多样,传统的基于人工采样分析和浮标定点监测为主的方法由于存在着效率低下、耗时费力、实时性差、难于管理等缺点,已经难以满足实际的水环境监测的需求[1-2]。随着信息技术和计算机技术在全学科领域内的推广应用,以水面无人艇为代表的自动化采样设备成为了一个重要的发展方向。
作为一种无人化水面平台,无人艇可通过搭载传感器及自动导航设备实现在复杂水面环境下的自主航行和自动作业。相比于传统的有人船舶作业方式,水面无人艇具有机动灵活、自动化程度高、续航力强等优点,能够很好地契合水质监测作业环境恶劣、重复性强、采样时间长的作业特点和任务需求,可以有效地提升水质采样及监测的效率和质量[3-5]。针对无人艇在环境领域的应用技术,国内外学者已广泛地开展了相关研究工作。英国Plymouth大学MIDAS科研小组设计和开发出了双体低速无人艇试验平台“Springer”,用于污染物跟踪及对内陆水道和沿海水域的环境和水文调查[6]。美国海底科技公司研发了一种用于内河、港口水域监视侦察的新型无人水面艇CAT.Surveyo,该艇配有小型遥控潜水器,配有高清摄像头并可选配用于浑浊水域的成像声纳[7]。日本Yamaha公司开发了UMV-O型海洋探测无人艇,主要用于海洋水文气象环境监测和生物化学科考任务[8]。在国内,沈阳航空新光公司研制出的“天象一号”是我国第一艘用于工程实际的无人水面艇,该艇作为应急装备成功为青岛奥帆赛提供气象保障服务[9]。上海大学研制了“精海”系列无人测量艇,主要用于东海、黄海、南海、南极等海域的测量任务[10]。上海海事大学[11]开发出了一种双体无人艇,主要用于水质监测、环境探测以及搜索和救助等方面的研究。总的来说,当前的无人艇研究大多集中于关键技术的研究和试验平台的搭建,工程应用较少,鲜少结合具体的作业环境需求和任务流程来开展研究。
针对当前研究中的问题,以提升水环境监测的效率为导向,本文设计并实现了一种监测无人艇及其岸基控制系统。构建了基于船-岸通信结构的无人艇软硬件系统模型,结合任务使命,开展了岸基控制系统的功能模块设计;针对无人艇巡航采样的关键问题,开展了无人艇航渡路径规划、区域巡航规划及采样任务流程研究,并在实际作业水域内进行了实船试验验证。
按照通用的无人系统设计框架,将监测无人艇系统划分为船载子系统和岸基子系统两个部分,两系统之间通过无线数传电台和4G网络等远程通信方式实现数据交互[12-13]。本文中的环境监测无人艇系统构成如图1所示。
图1 监测无人艇系统结构
船载系统指的是无人艇艇体平台及其搭载的软硬件系统,主要包括能源动力系统、推进系统、导航定位系统、通信系统、环境感知系统和航行决策系统等。无人艇平台可根据不同的任务需求搭载不同的任务载荷单元,在本文中监测无人艇搭载的任务载荷主要是自动化水样采集装置和水体在线分析仪所组成的集成系统。在功能方面,船载子系统负责对平台上的所有传感器、设备反馈参数进行实时采集,并通过通信模块上传至岸基系统;同时,接收岸基的决策指令,执行运动控制,驱动无人艇按照指定的转速和舵角航行。
岸基系统作为无人艇的远程监控指挥中心,由通信模块、遥控模块和岸基控制计算机三部分组成,通常布置在岸基或母船上的。岸基系统的主要功能是对无人艇进行实时的状态监视和任务控制,以确保无人艇能按照指定的任务参数安全航行和采样作业。其中岸基控制软件是无人艇岸基系统的核心,负责无人艇的人机交互、任务规划和运动监控等功能,同时还需对载荷系统的水样数据进行处理和图形化展示。
岸基控制系统是监测无人艇进行任务规划、作业控制和人机交互的关键组成部分,其实时性、稳定性和效率直接影响到整个无人艇控制系统的性能[14]。岸基控制系统需能够正确接收和显示无人艇的运动状态数据和水质采样数据,并将相关数据保存到数据库;通过无线以太网向无人艇船端发送航行控制和采水质样指令,驱动无人艇按期望的航线和航速运动;实时监控无人艇平台的运行状态,在检测到设备异常或航行失控时向岸基操作人员发出报警信号,为无人艇在水面上的安全航行和自动化采样作业提供保障。
根据监测无人艇的总体功能需求,可将岸基控制系统划分为4个主要的功能模块:数据通信模块、状态显示模块、数据库模块和任务控制模块。岸基控制系统的总体功能设计如图2所示。
图2 监测无人艇岸基控制系统组成
数据通信模块负责岸基系统与无人艇平台之间的数据传输,包括通讯协议的设计、数据的接收处理与发送等。通信链路的稳定性和可靠性是无人艇实现安全航行的基础保障,在通信模块的设计中需要重点考虑数据安全性和传输稳定性。
在硬件选型上,考虑到不同通信设备所具有的不同通信距离和通信频率,本文中采用基于“无线自组网电台+4G移动网络”的双模式切换通信方案,以实现多种应用场景下的稳定通信。在近岸5公里范围内,信号遮挡较多,采用较为稳定的4G移动网络通信方式;在4G网络中断或通信距离超过5公里的情况下,切换到无线数传电台通信模式,以确保船岸之间的稳定数据传输。
状态显示模块是岸基系统最重要的组成部分之一,其主要功能是显示无人艇及其搭载设备的实时运行状态和详细参数,从而辅助岸基操作人员对无人艇进行远程监控和航行分析。从监测无人艇的航行安全和任务需求出发,本文设计的显示界面可分为以下3个部分。
1)导航地图界面:导航界面主要显示无人艇导航系统的相关状态,包括无人艇的经纬度坐标、航速/航向、横摇纵倾、航线、轨迹等数据。通过集成电子地图和图形控件对导航数据进行图形化展示,使得操作人员能够直观地获取无人艇的航行信息。
2)状态数据界面:显示无人艇船端主要设备和系统的运行状态参数,包括能源动力系统(发动机启闭、油门、挡位、剩余油量、油温等)、推进系统(螺旋桨转速、舵角等)、传感器系统(雷达数据、监控摄像头数据等)、载荷系统(采样状态、载荷A数据、载荷B数据、溶解氧数据)。
3)故障报警界面:实现对无人艇运动状态和重要设备的工作状态进行监测,当状态异常或超过相应的监测阈值后,在界面上发出报警提醒。按照系统或设备的重要性,无人艇的报警状态可分为以下几类:燃油电量不足、推进系统故障、舱室漏水报警、载荷系统异常及其他设备状态异常等,各类报警信息根据紧急程度进行优先级排序。
针对无人艇岸基系统数据显示的需求,在后台建立数据库,实现对关键数据的存储、查询、分析和管理。数据库分为航行数据库和载荷数据库两类。
1)航行数据库:实时保存无人艇作业过程中的航位、航速、航向、转速、舵角、任务航线、雷达探测数据、故障报警数据等,用于后续对无人艇平台的航行过程进行运动回放、故障分析和流程优化。
2)载荷数据库:存储载荷系统相关的数据,包括采样设备状态、采样时间、采样坐标、样本分析结果等。载荷数据库根据用户的实际需求进行设计,实时记录载荷设备的检测结果,用于为后续的水体质量分析和监测治理提供共数据支撑。
岸基操作人员通过任务控制模块实现对无人艇运行状态的控制。该模块的主要功能分为三点:设备启停、航行规划和载荷控制。
1)设备启停:在作业任务开始前,将无人艇平台上的组合惯导、导航雷达、摄像头、发动机等设备切换到上电状态;在作业结束、无人艇返回港口后将艇上各设备进行下电。
2)航行规划:根据采样任务,输入预设的巡航采样参数,包括采样区域坐标、采样时间间隔、采样巡航速度等。岸基系统根据地图信息执行路径规划,向无人艇下发航线及航行速度。
3)载荷控制:控制载荷系统的作业执行过程。控制载荷设备的启闭,与船载的水质监测集成软件进行通信,设置载荷系统的采样模式和采样参数,对采样过程进行监控,在发生故障时进行人工干预。
根据实际的水质采样过程,监测无人艇在执行巡航采样前,首先需从港口出发前往任务水域;在采样完成后,需返回港口靠泊;这一航行过程称为航渡。在航渡阶段,针对港口附近水域离岸线较近且障碍物众多的特点,本文提出了一种引入安全性考虑的改进A*算法(SIA*,safety improved A*)。
3.1.1 标准A*算法原理
标准A*算法是一种基于网格地图的启发式图搜索算法,由Dijkstra算法发展而来[15]。不同于Dijkstra算法广度优先遍历的搜索策略,标准A*算法引入了启发值和代价函数来引导算法的搜索过程。代价函数由两部分组成,其一般形式为:
f(n)=g(n)+h(n)
(1)
其中:g(n)表示起始节点到当前节点n的耗费代价,即已经走过的实际距离代价,一般采用其父节点的值g(n-1)加上父节点到当前节点的距离来计算。h(n)是启发函数值,表示从当前节点n到目标节点的可能距离代价,在实际应用中一般取两点之间的欧式距离或曼哈顿距离。A*算法在每次迭代中均选择代价函数值f(n)最小的相邻节点进行拓展,进而实现对最短路径的搜索。
标准A*算法在最短路径搜索上具有快速性优势,但是在实际应用时还存在以下两大缺点:1)A*路径是理论最短路径,而不是最优路径,路径点总是距离障碍物很近,安全性较差;2)难以摆脱栅格模型的限制,路径存在弯折多、路径点冗余的问题[16]。
3.1.2 算法改进策略
针对标准A*算法的缺点,本文设计了以下两种策略对其进行改进,以适应无人艇航渡规划的实际需求。
1)引入障碍距离的代价值函数:考虑到标准A*算法中缺乏对路径安全性的考虑,在启发函数中引入了障碍距离函数O(n),用以评估环境障碍物对路径搜索过程的影响,进而提高路径的安全性。
f′(n)=α·f(n)+β·O(n)
(2)
式中,左项f′(n)为新的启发函数;f(n)为标准A*算法中的启发函数,表示路径长度对搜索过程的影响;O(n)为障碍距离函数,通过引入该项可以在路径搜索时对路径的安全性进行考虑;参数α和β分别表示路径长度和安全性所占的权重,且有α+β=1。
障碍距离函数O(n)可通过规划空间中任一网格n到环境障碍的最小距离进行计算,即:
O(n)=minDist(n,{Obstacle(i)})
(3)
其中:{Obstacle(i)}表示所有障碍点的集合。
2)路径光滑处理:考虑到无人艇是一种具有欠驱动、非全向运动的水面船舶,其转弯能力十分有限,标准A*算法得到的路径通常无法被精确跟踪,这将造成航行过程的不稳定和可能的安全隐患。因此,一种有效的方法是对A*路径进行光滑和优化处理,合并和削减路径点数量,以使其满足无人艇的运动要求。
本文采用以下两种方式对规划路径进行优化处理:(1)删除共线的路径点。若相邻的3个路径点处于同一条直线,则删掉中间一点;(2)根据连通性删除冗余点。在路径上任取两点,若两点之间的连线与障碍物的最小距离满足设定的安全阈值H,则去掉中间点。利用以上方式对路径进行迭代优化,能够有效削减路径点的数量,同时保证路径的完整性和安全性。
图3 路径点优化策略
3.1.3 算法描述
本文改进A*算法的具体步骤如下:
步骤1:新建两个表CLOSED和OPEN,并进行初始化。表OPEN存放等待考察的节点集合,表CLOSED存放已考察过的节点集合。
步骤2:将初始节点s添加到新建的OPEN表。
步骤3:如果OPEN表为空则表示规划失败退出算法,否则选择OPEN表中代价值最小的节点作为当前节点n。
步骤4:从OPEN表中将当前节点n移入CLOSED表。如果n是目标节点,那么提示找到目标点,转到步骤6,否则转到步骤5。
步骤5: 扩展当前节点n到其相邻节点,考察的所有的相邻节点{mi}:
2)如果节点m不在OPEN表中并且不在CLOSED表中,将其加入OPEN表,令节点n作为节点m的父节点,计算其代价值,即:g(m)=g(n)+g(n,m),f′(m)=α(g(m)+h(m))+βO(m);
3)回到步骤3;
步骤6:在OPEN表中找到节点n的父节点,依次反向回溯,直到到达初始节点s,该条路径即为最短路径。
步骤7: 对路径的节点进行迭代光滑处理:从第一个路径点开始,依次取3个相邻点,判断三点是否共线,如果共线,去掉中间路径点;在路径上任意取两个点,若两点连线与障碍物的最小距离满足要求则去掉中间点。
步骤8: 输出优化后路径,算法结束。
无人艇在任务水域的巡航规划本质上属于一种全覆盖式路径规划问题。考虑到安全性和采样效率,无人艇的巡航规划应满足3个基本条件:1)为保证样本的空间覆盖率,无人艇路径尽可能地遍历整个非障碍区域;2)在航行过程避免与局部障碍物的碰撞;3)尽可能减少重复率,提高作业效率。本文设计了一种基于梳状遍历搜索策略的巡航路径规划方法。
无人艇的巡航路径规划与清扫机器人的区域覆盖算法类似。区域覆盖算法的目标是为机器人设计一种策略,使得其能以某种特定的模式遍历一个指定的目标区域,并尽可能地做到高效和完全遍历。目前主要的覆盖算法有随机覆盖法、单元分解法、ISC(内螺旋)覆盖算法、Boustrophedon算法等。Boustrophedon算法又称为牛耕式算法,是一种基于往返式搜索策略的覆盖算法。应用Boustrophedon算法时,无人艇先朝着一个方向航行,直到遇到障碍物或区域边界后垂直转向,然后沿着与前一航向相反的方向航行。
图4 Boustrophedon巡航路径规划
在一般情况下,岸基操作人员为了保证设备的安全性,会选择开阔、无障碍物的水域作为水质采样的目标区域,因此以下考虑一种无障碍物情况下的巡航路径计算过程。记无人艇的巡航起点坐标为(xs,ys),终点坐标为(xE,yE),往复次数为N,则巡航间距为ΔL=(yS-yE)/N。则第i个路径点CPi的坐标可根据下式进行计算:
(4)
其中:t为一中间变量,其值与路径点序号有关:
(5)
结合实际的水质采样流程和岸基系统的功能框架,设计监测无人艇的采样任务作业流程如下:
1)根据采样任务的目标和地图环境信息,设定无人艇的监测任务参数,包括出港起点坐标P、巡航起点坐标SP、巡航终点坐标EP和巡航速度;
2)利用SIA*算法计算航渡出港路径,将路径点优化处理,并下发到无人艇;
3)发送航渡阶段的航行速度,无人艇接收指令并执行路径;监控无人艇航位,直到到达目标水域;
4)岸基系统接收并确认无人艇位置,利用Boustrophedon覆盖算法计算巡航路线,下发作业航速和航线;
5)无人艇接收并执行区域巡航指令,启动路径跟踪和水质采样任务,直到巡航结束,到达终点;
6)岸基系统以无人艇利用SIA*计算航渡返港路径并下发;
7)无人艇接收航线指令并跟踪航线,直到到达港口水域,任务完成。
图5 监测无人艇采样作业流程
为了对监测无人艇控制系统的有效性进行分析,在江苏某水域内进行了湖上试验。
设计和开发了基于C++/Qt的无人艇岸基控制系统软件,软件界面如图6所示。根据实际的作业任务流程,在同一水域进行了多次监测航行试验。试验中的任务参数和地图环境如图中标记所示,其中标记点P代表出港起点(也是返港终点),标记点SP和EP分别为监测任务区域的巡航起点和终点,位于带采样区域的两个对角点位置。详细的试验坐标参数和算法设置参数如表1所示。
图6 监测无人艇岸基软件界面及任务参数
表1 试验参数设置
试验结果如图7所示,其中图7(a)为试验所用的监测无人艇,图7(b)、7(c)、7(d)为无人艇出港、巡航及返港的全任务流程航行结果,无人艇的路径跟踪过程采用经典的PID航向控制方法[17]。
图7 无人艇试验结果
表2 试验结果分析
从试验结果可以看出:1)在出港和返港的航渡过程中,相比于标准A*算法,基于SIA*的路径规划方法所得到的路径较好地实现了对沿岸障碍物的规避,安全距离增加约182%;2)SIA*对冗余路径点进行了优化,路径点数量减少约136%;3)在巡航采样过程中,基于Boustrophedon遍历的搜索方式实现了对任务水域的全覆盖,能够保证无人艇的正常采样作业;4)从航行轨迹可以看出,无人艇的实际航迹与所规划的路径之间平均偏差较小,基本处于重合状态,只在路径转弯处稍有偏离。这表明基于本文方法所规划的路径具有较好的跟随效果,能够满足无人艇的实际作业要求。在多次的采样任务中,无人艇均能可靠地完成整个采样作业流程,验证了控制系统的安全性和有效性。
本文设计并实现了一种面向环境监测任务的无人艇岸基控制系统,依托现有的系统组成框架,搭建无人艇岸基控制系统的整体架构,开展了监测无人艇路径规划算法和任务流程的研究,提出了基于改进A*的安全航线规划方法和区域巡航算法。在实际作业水域内进行了实船试验,试验结果表明,该无人艇岸基控制系统具有较好的稳定性和可靠性,能够指导无人艇安全、智能地执行水质监测任务,有效地提升水环境监测的效率。