刘 文,陆小锋,毛建华,方思凯,钱 国
(1.上海大学 通信与信息工程学院,上海 200444; 2.上海宝冶冶金工程有限公司,上海 201900)
无人机巡检是近几年才发展起来的新型技术[1],它融合了航空、遥感、电子、通信等多项高端技术。其中四旋翼无人机具有强灵活性、低功耗和低成本等优点[2-3],这使得其相关的应用领域已涉及到森林虫害检测、电力巡检、工地安全管理、渔政执法、露天矿场检测等。这些场景的存在着区域大、环境复杂和人力巡检作业成本高的特点。无人机巡检作业不仅弥补人工巡检安全不足、成本高等问题,而且由于其可携带多种传感器和相机镜头,使得无人机巡检方式在场景适配性和功能应用性上表现突出。
文献[4-5]基于地面移动图形工作站设计了无人机森林虫害检测系统,通过无人机遥控器控制无人机拍摄森林航拍图像,图像经过图传通道回传至遥控器端,再转发给地面服务器,最后运行图像目标检测算法得到检测结果。方案中检测系统由于需要人工控制拍摄森林图像,所以智能性较差,不具备实时性巡检的条件,且地面的移动图像工作站携带较为不方便。李宁等[6]将无人机巡检应用到输电线路缺陷检测中,通过图传通信模块、地面工作终端完成无人机视频的传输和检测。该方案的特点在于通过射频信号回传无人机相机视频流到地面服务器,但是在无人机巡检飞行中,考虑到无人机的远距离高空飞行状况以及云台相机视频分辨率较大的问题,所以很难维持长时间稳定的、实时的视频流目标检测。
上述方案可知,以地面站服务器作为巡检方案的检测单元时存在着下面3个问题:
1)检测输入为航拍图像时:航拍图像需要人工筛选拍摄,而当检测目标不明显时可能造成遗漏,且此种方案无法达到智能化、自动化的巡检任务要求。
2)检测输入为相机视频流时:在目前无人机视频流导出至地面服务器的传输方案中,接收输入容易出现中断、失真和延迟,故无法保证实时、稳定的视频目标检测。
3)地面站服务器在巡检过程中携带、安装不方便。
故研究人员开始研究将检测单元转移至无人机端的巡检方案,即基于无人机板载平台来设计巡检方案。焦振田[7]采用了无人机端搭载机载计算机来设计用于森林防火的无人机安全检测系统,方案中机载计算机可以直接获取无人机相机视频流的进行检测识别,相比于地面工作站方案使得无人机端直接具备了边缘计算[8-9]的能力,但是一方面机载端检测算法采用的是YOLOv3-Tiny,检测精度差,无法满足巡检边缘计算的要求。另一方面检测结果的回传困难,未实现完整一体化、实时的边缘计算结果的接收,同时整个系统在巡检的智能操控上仍需改进。
针对上述方案存在的问题,本文设计了一种基于机载计算机的无人机智能巡检方案。该方案结合大疆SDK[10](Software Development Kit)设计了机载计算机和无人机APP的操作控制程序,可实现完整一体化的边缘计算结果地面端和云平台端双重实时接收,且巡检操作设计简单灵活。机载端为保证实时的检测计算,借助轻量化模型来提升检测算法的计算速度。另外设计了远程云平台端的巡检操控和可视化方案,实现多端控制的同时,提升了远程监控人员的巡检决策和精准响应的能力。
如图1是以建筑工地工人安全帽佩戴检测场景[11-12]为例,演示无人机智能巡检方案工作模式的示意图。用户在云平台或者移动终端设置好巡检任务指令,然后搭载机载计算机、云台相机和其他传感器的无人机接收并解析巡检任务指令,开始按照设置的巡航路线和飞行参数进行巡检作业。机载计算机在巡检飞行中读取云台相机的视频流,并运行相应的安全帽检测算法进行检测,分析得到的检测结果实时压缩回传至移动终端,APP接收后自动将检测结果和相应的状态信息打包上传至云平台。远程监控人员登录云平台后可实时查看检测结果和地图组件上标注的检测位置,做到及时精准的安全响应[13]。
图1 无人机巡检方案工作模式示意图
当遇到飞行环境不好或者检测的巡航路线设置错误等特殊情况,移动终端可以控制暂停或结束巡检作业,此时无人端也相应停止检测任务,用户可在检查情况安全后重新设置巡航检测命令或者切换至手动操纵模式。
1.2.1 无人机平台
方案中无人机模块采用的是大疆公司的DJI Matrice210 RTK V2(简称M210 RTK V2)。该无人机属于经纬M200 V2系列飞行平台,其设计紧凑,扩展灵活且飞行性能显著优化,可携带下置双云台或上置单云台。强大的负载携带能力和传感器扩展能力使得它能被DIY适用于多种无人机巡检飞行任务[14]。实物图如图2。
图2 DJI Matrice210 RTK V2(下置双云台)
1.2.2 机载计算机
方案中机载计算机采用的是大疆公司的妙算Manifold 2-G。该计算平台是一款专为智能机器打造的高性能机载计算机,具备卓越的处理能力和响应速度,扩展灵活,适配多款大疆飞行平台和飞控系统。Manifold 2-G的处理器是NVIDIA Jetson TX2,其配备NVIDIA Pascal GPU和8G内存,性能强大,外形小巧,节能高效。作为板载处理器,拥有专门与无人机固定的安装支架,保证高空飞行时的安全稳定。
图3 Manifold 2-G
检测信息的传输指将机载计算机的检测结果和无人机的状态信息实时回传至移动终端和云平台。方案的核心首先是实现整个巡检系统检测信息的实时传输,如图4是方案的检测信息传输流程图。
图4 检测信息传输流程图
机载计算机运行安全帽检测算法得到检测结果后,分类筛选出未佩戴安全帽的结果。然后筛选的结果图片采用Jpeg压缩机制压缩为图像码流,机载计算机按照自定义的协议再分段缓存发送给APP,同时APP还会接收无人机状态信息。地面端的APP接收后从图像码流中解压缩恢复出检测结果,一方面将检测信息进行本地备份,用于现场查看;另一方面将信息重新打包后通过Http协议发送给云平台,用于远端监控人员查看。
1.3.1 回传协议与检错机制设计
方案检测结果图片回传链路采用的是无人机的机载计算机和APP的通信链路。考虑到无人机远距离高空巡检环境,局域网的方式无法保证检测图片回传通信的稳定传输,而机载计算机与APP的通信链路嵌在遥控器与无人机的通信链路中,故远距离图传较为稳定,但方案中采用的硬件提供的图传带宽较窄。为了能够准确、实时的传输检测结果,分别设计了传输协议和APP的检错接收机制。
如表1是检测结果从机载计算机端到APP的回传协议,考虑到检测结果压缩后的码流数据量仍远大于通道带宽,无法一次发完,所以缓存多次发送。单次发送的数据段包括开始标志位、有效数据、检错标志位和结束标志位。有效数据的数据量依据实际带宽而调整,检错标志位用于APP端检测当次接收的数据段。
表1 检测结果的回传协议
如图5所示是APP的检错接收机制,目的是减少接收码流的错误率,进而降低恢复检测结果的失真率。APP端检测到开始标志位后开始接收图像数据,如果当次数据段中检错标志位出错,则APP向机载计算机发送重发指令且将原本缓存接收的集合清空,等待机载计算机重新发送。检错标志位正确时,从协议数据中分离出当次有效数据放入接收集合中,如此循环接收,当检测到结束标志位后,APP解压缩恢复检测结果。
图5 APP的检错接收机制
1.3.2 检测控制程序设计
本方案是基于大疆硬件开发,APP与机载计算机的无人机控制程序分别采用了大疆提供的Mobile-SDK[15](简称MSDK)和Onboard-SDK[16](简称OSDK)软件开发包,其软件包提供了相应的API接口用于开发者定制实现所需要的功能。检测信息的传输控制实现如下。
MSDK和OSDK的使用首先均需在大疆开发者平台注册并申请DJI APP Key,然后将APP Key在程序中注册。如图6和图7所示,其中OSDK的Key秘钥填写在机载计算机控制程序的UserConfig.txt 文件中,MSDK的Key秘钥填写在移动终端APP的AndroidManifest.xml 文件中。
图6 OSDK的应用注册
图7 MSDK的应用注册
机载计算机端与APP间传输数据采用的是OSDK中的MobileDevice类,该类用于板载端(机载计算机)实现数据透传功能,其中sendD-ataToMSDK函数用于机载计算机端发送数据给移动终端APP,接收APP的控制指令是利用s-etFromMSDKCallback函数。
APP的无人机状态信息获取:获取M210 RTK V2无人机的飞行状态信息包括经纬度、飞行高度、飞行距离和飞行剩余时间。dji.common.flightcontroller包中FlightControllerState类包含直接获取无人机的飞行高度、无人机home点位置和飞行剩余时间的函数,飞行距离是获取无人机RTK坐标和home点坐标后借助高德地图SDK计算得到,MSDK中未提供直接计算飞行距离的接口方法。RTK(Real Time Kinematic)经纬度的获取是在dji.common.flightcontroller包的RTK类中,其中RTK参考站采用的是千寻位置提供的NTRIP(Networked Tra-nsport of RTCM via Internet Protocol)RTK信息服务,连接和初始化步骤如下:
1)设置基站源为CUSTOM_NETWORK_SERVICE(代表第三方网络RTK);
2)设置购买的网络RTK账户信息,包括IP、端口、用户名、密码和网络服务的mountp-oint挂载点;
3)启动网络RTK服务;
4)使能RTK服务。
以上步骤完成后可用RTK类中的isconnect和isRTKBeingUsed方法分别检测RTK服务是否与飞行器连接成功和飞行器是否使用RTK数据,成功后便可使用RTKState类的getFusionM-obileStationLocation方法获取高精度RTK经纬度坐标。
APP端与机载计算机传输数据:采用的是d-ji.common.flightcontroller包中FlightController类所包含的方法,其中接收机载计算机数据的方法是setOnboardSDKDeviceDataCallback,发送数据给机载计算机的方法是sendDataToOnboardSDKDevice。实际传输之前APP需检测机载平台是否可用,调用isOnboardSDKDeviceAvailable方法返回true即可。
巡检方案中机载计算机取代地面服务器,将检测任务从地面端转移到无人机端,实现巡检作业任务的边缘计算,并通过APP向上与云平台实现数据对接,但是作为边缘端检测设备,相比服务器它的计算能力和内存仍较为有限[17]。如表2所示是3种常用目标算法在其上的测试的结果,可以看到YOLOv3[18]和Faster-RCNN[19]测试的FPS均小于10帧/s,这使得无法直接移植到机载计算机上做实时性检测,YOLOv3-Tiny的检测FPS可以达到15.2帧/s,但是其本身检测精度较低,不适合巡检应用。
表2 3种目标检测算法的测试结果
综上为了提高方案中边缘计算的检测能力,需要在保证检测模型算法较高精度的同时大幅提升其检测速度,以满足实时性巡检的要求。
本方案采用了MobileNet V2[20]轻量级CNN网络对检测模型进行轻量化,其主要以深度可分离卷积的方式降低标准卷积的计算量来达到提升模型检测速度目的[21]。MobileNet V2的核心是深度可分离卷积、倒残差和线性瓶颈。深度可分离卷积将标准卷积的运算过程拆分成深度(Depth-wise)卷积和点(Point-wise)卷积,深度卷积为输入特征图的每一通道分配了单独的卷积核用于卷积运算,点卷积采用1×1的卷积核对深度卷积的结果进行标准卷积运算,这样几乎所有的计算量都集中于点卷积操作中,两者合并去替代一次标准卷积便可达到加快计算速度的目的。倒残差和线性瓶颈是MobileNet V2在MobileNet V1上进一步提升检测速度和准确率的优化策略,MobileNet V2的卷积模块如图8所示。倒残差结构先通过1×1点卷积将特征图的通道扩充,然后用3×3深度卷积替代残差结构中的标准卷积,最后通过瓶颈设计经由1×1点卷积降低维度并与输入相加,步长为2时因为输入与卷积输出的维度不匹配故不添加残差边。
图8 MobileNet V2卷积模块框图[20]
对检测算法进行轻量化的方法是通过图8中的MobileNet V2卷积块去替代原本检测算法的标准卷积,整体上即替换目标检测算法的主干特征提取网络,本文测试时选择的安全帽检测算法的检测头部分是YOLOv3,其主干特征提取网络是Darknet-53,替换后特征提取网络的结构如表3所示。采用的激活函数是ReLU6,第一层是标准卷积,第二层是单独的深度卷积加点卷积的结构,后面层均是倒残差结构。分别提取第7、14和18层的3个对应尺度输出用于后续YOLOv3的通道变换、上采样等处理。
表3 主干特征提取网络结构
无人机智能巡检要求无人机接收到控制命令后可以自动执行航点巡检任务,并实时的返回巡检结果,所以对于巡检任务设置要求全面合理且易操作。如图9和10分别设计了APP端和云平台端巡检任务的设置内容,首先需要在地图上标记飞行航点,然后设置飞行参数和检测参数,最后向无人机提交检测任务。图9中APP主界面的左上角是巡检设置任务栏,点击任务设置按钮进行飞行参数设置。图10中左边是飞行参数设置,右边地图组件中可以进行航点标记和删除。
图9 APP的巡检任务设置
图10 云平台巡检任务设置
巡检任务设置的内容包括巡检飞行高度和速度、巡检场景选择(选择检测模型)、巡检的飞行机头朝向以及巡检结束后无人机的飞行动作(回返航点、直接降落等)。方案中巡检任务的控制命令设置既可以APP端(飞手)现场控制,也可以由远程监控人员进行设置。当远程端设置时,在巡检任务开始之前需要APP将无人机现场坐标发送给云平台,云平台在地图组件上进行无人机实际位置标记,以便飞行航点的设置。
云平台的巡检控制命令设置完成之后,通过Http轮询的方式发送给APP,APP接收并解析控制命令,其中检测模型指令按照1.3中APP与机载计算机的通信方式发送,航点飞行任务指令解析后在MSDK的dji.sdk.mission.waypoint包的WaypointMissionOperator类中进行重新设置。航点飞行指令在APP中重新设置步骤如下。
1)读取云平台设置的航点列表转为Waypoint对象;
2)依次设置每一个航点的航点动作: addAction方法;
3)将航点依次放入Waypoint格式的List中,并将List作为输入放在WaypointMission的Builder类的waypointList方法中,这样完成所有航点的转换设置;
4)在WaypointMission.Builder()中导入飞行参数并调用loadMission方法进行加载,飞行参数包括机头朝向、自动飞行速度、飞行高度等;
5)上传航点飞行任务:uploadMission方法;
6)开始、停止或暂停执行航点飞行任务:startMission、stopMission和pauseMission方法。
第4)~6)步需要注意调用后的回传结果,当存在设置出错或者设备连接问题时,回传结果会有DJIError,需要根据错误类型进行相应改正。没有错误回传时表示云平台设置航点飞行任务执行成功。
为了验证方案实际有效性,选择机载端检测模型为工地安全中检测工人安全帽佩戴情况的目标检测算法来测试。安全帽佩戴在工地安全巡检中属于较为常见但极为重要的,能够防护大多数小型高空掉物。
1)模型轻量化实验:
如表4所示是安全帽检测算法模型采用MobileNet V2轻量化前后的对比,轻量化改进主要针对模型的主干特征提取网络,改进的内容如1.4所示。安全帽分类检测数据集一共5 000张,均来自VOC格式的数据集,按照比例8∶1∶1划分训练集、验证集和测试集,其中训练集包括正负样本2 000张;验证集和测试集包括正负样本250张,训练集和验证集图片均混合打乱。
由表4可知原始的模型算法在机载计算机上的FPS只有4.1帧/s,轻量化后的算法检测速度可以达到25.1帧/s,且其准确率P仍可达到72.3%,准确率的定义如公式1。算法标注时将没戴安全帽和戴安全帽的人采用不同颜色标注。
表4 算法轻量化前后对比
①True positives(TP):戴安全帽的人被正确检测为戴安全帽。
②False positives(FP):没戴安全帽的人被错误的检测为戴安全帽。
(1)
结果表明,原本只能用于地面端服务器检测的模型算法可以在机载计算机上达到近似实时性巡检的要求,且相比原本算法保持了较好的准确率。
2)检测信息传输实验:
检测信息传输实验测试的是机载计算机的检测结果是否能实时回传,以及云平台是否能远程控制巡检任务设置并接收检测结果。如表5所示。
表5 传输测试
表5中分辨率是回传检测结果的图片大小,有效字段为1.3中检测结果回传协议中图像码流的有效数据量,传输时间指检测结果从机载计算机端开始回传至云平台接收解析的所需传输时间。实验中,分辨率越小且有效字段越少时,整体所需传输时间越少。有效数据字段为88字节,分辨率为256×256时,所需传输时间为6 s左右,满足远程端实时性接收检测结果的要求。其中机载计算机和APP的图传带宽为100字节,测试时发现当单次传输数据量达到100字节时,APP接收码流并解压缩恢复检测结果时存在失真点,当有效数据的字段量小于90字节时,未发现失真现象。
如图11和12所示是云平台接收检测结果展示。图11中左边是检测到未佩戴安全帽目标的图片,右上方显示无人机的状态信息,包括经纬度、巡检高度、与home点距离、飞机剩余飞行时间以及结果提交时间。右下角根据RTK经纬度信息在地图组件中定位出无人机位置。图12是云平台检测结果记录查询,用于展示所有无人机巡检接收记录。
图11 云平台检测结果的展示
图12 云平台检测结果记录查询
实验中APP地面控制巡检或云平台远程控制巡检时均可正常完成巡检任务。综上检测结果的实时回传显示表明无人机智能巡检方案可以实现远程人员实时了解无人机巡检的现场结果,同时为远程安全响应提供了实时、准确的依据。
本文基于大疆M210 RTK V2无人机,结合机载计算机、轻量化网络、大疆SDK、云端技术等设计了一种无人机智能巡检方案,实现了无人机巡检边缘计算的同时完成一体化的边缘计算检测结果的地面端和云平台端双重实时接收。既极大的提高了无人机巡检作业执行效率,也为远程人员监管无人机巡检提供了可行化方案。通过在机载计算机上移植不同的目标检测算法,可以达到适用于不同的巡检场景,另外对于特定场景也可以定制合适的巡检任务。