高性能无人帆船软硬件设计
2018-05-08刘旌扬张裕芳
罗 潇,刘旌扬,王 健,张裕芳,易 宏
LUO Xiao,LIU Jingyang,WANG Jian,ZHANG Yufang,YI Hong
上海交通大学 海洋工程国家重点实验室,上海 200240
State Key Laboratory of Ocean Engineering,Shanghai Jiao Tong University,Shanghai 200240,China
1 引言
无人帆船具备节能环保、长程续航等特点,因此在情报搜集、海洋勘探、远海测绘、大宗商品货运等领域具有良好的应用前景[1-3]。不同种类的传感器作为“耳目”感知环境,精确的执行器作为“手足”控制船舶运动,同时需要强大的CPU单元作为“大脑”同时执行多任务、处理信息、产生决策、下达指令。然而要实现自动航行,不仅要有较强的环境感知能力、决策能力、自适应能力,同时还要具备冗余的处理能力,对于控制系统提出了较高的要求。
一般的微控制器很难在实现大数据量和复杂算法的同时保证系统的实时性[4-7],而当前国内无人帆船实验平台普遍使用的数据采集及处理的方式为,以船载计算机——使用较为普遍的是ARM微处理器——采集数据,并以无线传输提交给岸基电脑进行处理,处理结果形成指令,再以无线传输形式下达给船载计算机。文献[8]使用这种数据处理方式,采用模糊控制策略对无人帆船循迹航行的控制进行了相关研究,而实际结果并不理想。原因在于,ARM微控制器短缺的处理能力无法完成无人帆船运动控制所需的大数据量采集和算法结算,因此提交给上位机处理,而无线传输方式较大地增加了延迟和数据失真的可能性,无法确保良好的实时性。文献[9]采用基于Samsung S3C6410A处理器的嵌入式平台,处理能力足够,然而使用的2.4 GHz的无线通讯网络设备众多,存在较大干扰,容易导致数据失真和船模失控;运用GPRS模块接入公网实现与PC端通讯的方式,信号覆盖范围受限于基站位置,信号质量无法保证。因此希望设计一套可靠的无人帆船控制系统,以船载计算机同时进行数据采集和处理,避免数据处理的无线传输,确保数据的实时性和精确性,这对处理器的计算能力提出了较高要求,因此选用PC/104单板计算机作为中央处理单元,确保足够的处理能力。PC/104系统作为嵌入式PC的一种,在软件和硬件上与标准的PC体系结构完全兼容。它具有体积小、功能强、可靠性高等特点,模块间采用自堆叠方式安装,便于灵活搭配以适应不同的功能要求[10-16]。同时选用大功率5 GHz路由器建立局域网,覆盖范围广,信道纯净,干扰少,数据保真度高。
本文基于PC/104和ARM设计了一套无人帆船航行控制系统,该系统主要由四个子系统组成:中央处理系统、数据采集系统、底层驱动系统、通讯系统。中央处理系统为PC/104和ARM微处理器,PC/104使用开源的python语言进行软件模块化开发,成本低,开发简单;ARM基于KEIL公司设计的RealView MDK开发环境,以C语言进行底层驱动编写,代码运行效率高。由于风帆船航行过程中需要感知风向和自身状态(包括船舶姿态、帆角)、确定方位,因此传感器系统需包含GPS系统、惯性导航仪、风向标和帆角反馈系统。PC/104外接PCM-3644通讯卡,可提供8路标准RS232串口。传感器均选用标准RS232接口,接插方便,易于更换,可扩展性强。ARM接收PC/104下达的指令后,开启定时器Timer生成脉冲宽度调制信号(PWM)控制舵机及有刷直流电机运转,进行调速或转向;或者生成PWM波,操纵引脚高低电平,驱动步进电机运转,从而改变帆角。该系统经过实验验证,有较高的精确度,在无人帆船自动航行控制中可达到良好的控制效果。
同时,受美国X-2风帆无人艇模块化概念设计启发,可将本套系统实用化为海上超长航程复合任务平台,可用于警戒、搜索、追踪、拦截等。风能为主、电能为辅的复合动力设计保证无人艇超长续航,非紧急状态下使用风帆推进,进入追踪、监视等紧急状态自动切换至电能推进,合理搭配能源使用,高效完成既定目标或应对突发状况。多任务模式对应多样化功能需求,平台需搭载多元功能模块,该设计目标对于平台的可扩展性、可复用性和模块化特点提出了较高要求,本文也以此为原则和创新点之一进行设计,不详述可加载的功能模块,在增加相应的功能单元时,只需将功能模块信号端接入PC/104外接设备,电源线接入供电模块,同时设计相应的处理软件即可。
2 无人帆船控制系统设计
2.1 硬件设计
无人帆船控制系统总体采用基于网络通讯的上、下位机体系,无人帆船控制系统总框图如图1所示。
无人帆船控制系统主要由以下几部分组成:
(1)核心控制单元
核心控制单元包括上位机和下位机,上位机主要用于监控无人帆船航行状态,选用便携式个人电脑。下位机用于采集并处理数据、发送操纵指令,置于无人帆船内部。下位机的选择综合考虑可扩展性、处理能力及尺寸,最终选取研华公司设计的PCM-3363主板,堆叠PCM-3644通讯卡以及PCM-3910电源板。
PCM-3363主板通过USB转TTL模块连接至ARM控制器的UART引脚,该电平转换模块主要为CH341A芯片,其电气设计原理图如图2所示。VCC默认接受USB的3.3 V电压。输入端J1与PC/104的USB口连接,输出端J2与ARM控制器的UART引脚连接。通过该模块可将PC/104端的电平转换为TTL电平以实现指令下达。
(2)通讯系统
上位机通过远程桌面与下位机实现通讯,监控无人帆船航行状态。通讯设备的选取综合考虑传输速度、覆盖域及抗干扰能力,最终选用TP-LINK公司生产的WDR7400 1750M型双频无线路由器。该路由器5 GHz频段无线传输率高达1.3 Gb/s,测试传输距离远,且5 GHz频段用户少、不堵塞、信道纯净、干扰较少。上位机和下位机均配备5 GHz无线网卡,通过无线路由器建立的5 GHz局域网进行高速稳定通讯,确保了监控的实时性和超远控制范围。
图2 主控单元电气设计原理图
图3 底层驱动系统电气设计原理图
(3)底层驱动系统
底层驱动系统包括底层驱动器和执行器。底层驱动器选用ARM微处理器,该处理器以Cortex-M3为内核。无人帆船系统的控制包括帆角控制和艏向控制,风帆由步进电机操纵,艏向由舵机操纵,此外加装直流电机驱动螺旋桨推进,为方便实验结束后回收船舶。执行器分别为步进电机、舵机和直流无刷电机。
本文选用57HS76型步进电机,扭矩大、体积小、精度高、利于布置。该步进电机配备TB6560 3A步进电机驱动器,可进行调速、正反转调节、精度调节。采用6N137高速光耦,保证高速不失步;内置东芝TB6560AHQ原装芯片,含低压关断、过热停车以及过流保护电路,保证使用的安全性;并且该驱动器可对1.8°步长进行整步、半步、1/8步、1/16步细分。
步进电机驱动器信号输入端与ARM控制器脉冲信号端连接,输出端与步进电机信号线相连;输入端采用共阳接法,EN端低电平或悬空时为工作状态,高电平时为脱机状态;CLK端输入5 V脉冲,步进电机正转,无输入时自动进入半流状态,锁定电机;CW端低电平时正转,高电平时反转。步进电机与绝对式旋转编码器反馈对帆角形成闭环控制。
与此类似,ARM控制器控制信号端连接直流无刷电机驱动器,驱动器输出端连接直流电机,可通过调节PWM波的占空比实现调速,同时可驱动电机正反转及刹车。舵机选用Tower Pro公司设计的MG995型大扭力伺服舵机,舵角与输入的50 Hz的PWM波占空比呈正相关。舵机与惯性导航仪的艏向反馈对帆船艏向形成闭环控制。
该套底层驱动系统也适用于其他自航模型实验,可移植性较好。底层驱动系统电气设计原理图如图3所示。
(4)数据采集系统
数据采集系统由多个传感器和通讯卡组成,传感器实时采集无人帆船传感信息,并均通过标准RS232接口以特定频率传送至通讯卡,方便易用,更换简单,可扩展性强。选取的传感器数据列表如表1所示。
DGPS系统所选型号为GNSS RTK,包括基站和移动站,基站为岸基系统,移动站置于无人帆船上,均可通过Ethernet端口连接PC,登录内置Web服务器进行监视和配置,设置输出频率、端口、NEMA-0183协议语句。惯性导航系统所选型号为AHRS5110M,集成三个MEMS陀螺仪、三个MEMS加速度计、三个磁场计,经过A/D转换模块后,接入CPU模块,并且在高性能数据处理芯片中嵌入特有的数据融合滤波算法,使系统即使在冲击振动状态下,也有稳定的姿态数据输出。绝对式旋转编码器测量帆角,单圈12位分辨率,采取IP67/IP68防护等级,连接ARM控制器时需共地。
(5)供电系统
无人帆船的船载设备均通过高性能锂电池供电。由于设备众多,供电电压各异,为减小体积,采用宽输入隔离电源模块进行电压转换和隔离,具有隔离稳压功能和长期短路保护作用,所选的隔离电源模块为WD5-12S3.3VA1和WD12-12S05B1型。控制系统供电电压为直流24 V、12 V、5 V,使用一块24 V、3块12 V高性能锂电池供电,直流电机驱动器需24 V电源,可直接为直流电机供电;PC/104供电电压12 V,其电源板可输出5 V电压为散热器供电;DGPS、惯性导航系统及步进电机驱动器均为12 V供电;风向标、绝对式旋转编码器、ARM及舵机均为5 V供电,所需5 V电源通过12 V-5 V的隔离电源模块降压提供。各设备与电源通过插拔式接线端子连接,采用接口化设计,模块化程度高,使用方便,更换简洁,可移植性强。
表1 传感器型号
2.2 软件设计
按照结构划分,无人帆船软件设计分为PC/104主控计算机软件设计和ARM控制器软件设计。按照本系统的设计目标,PC/104主控单元需采集、存储、显示并处理各传感器数据,向ARM控制器下达指令,因此需设计数据采集软件、监控界面、预留算法模块,数据存储功能包含于数据采集软件,指令生成下达功能包含于预留算法模块;ARM接收动作指令并执行,因此需设计执行器驱动程序。软件结构框架图如图4所示。
图4 无人帆船软件结构框图
整体软件流程图如图5所示。
图5 整体软件流程图
(1)执行器驱动程序设计
执行器驱动程序在PC端编辑,使用C语言开发,编译后经FlyMcu软件烧录进ARM控制器ROM并固化。程序功能为驱动电机、舵机和步进电机运转,主要包括指令接收和动作执行两部分,前者分析指令并解码指令值,后者使能定时器、GPIO,产生PWM信号和脉冲信号,驱动执行器动作。
(2)数据采集软件设计
本实验选择台湾凌阳公司生产的TN_9红外探测传感器作为测温模块,外形如图3所示。它是一种集成的红外探测器,内部有温度补偿电路和线性处理电路。 其测量距离大约为30m;测量回应时间大约为0.5s。测量距离∶目标直径=1∶1(如图4所示),即传感器温度感测口到测量目标的距离a与测量目标直径b的比例为1∶1,当然如果测量目标为等温物体,测量目标的直径b也可以大于测量距离a,传感器的视场约为53.2°。传感器尺寸为12mm×13.7mm×35mm,体积较小,分辨率为0.062 5°C;而且它具备SPI接口,可以很方便地向单片机传输数据。
无人帆船实验需要采集的数据在表1中测量数据栏,使用Python语言进行开发,分别开设四个串口读取传感器数据,将原始数据存于txt文本文件,校验数据并作切片处理,解码分析。采用多线程任务处理模式同步接收传感数据,保证数据的实时性。各传感器均采用标准RS232串口输出数据,因此不同采集模块的流程类似,以姿态传感器为例,其数据采集的实现流程如图6所示。
图6 姿态数据采集软件流程图
(3)算法模块设计
算法模块为预留模块,可根据实验需求设计。算法自数据采集软件获取数据,按照算法逻辑进行处理,得出最佳艏向角和操帆角,生成操控指令并打开特定串口下达给ARM执行程序。操控指令按特定数据协议生成,以十六进制发送。数据协议如图7所示。
图7 操纵指令数据协议
(4)监控界面设计
监控界面使用python自带的GUI设计模块TKinter进行设计,分为监控区域、自动航行控制、非自动航行控制。监控区域显示传感器数据,自动航行控制区域主要用于自动航行控制实验。自动航行实验开始时,推进电机关闭,仅利用风帆推进,数据采集软件开始读取并存储传感数据,算法模块开始计算、生成并下达操控指令。非自动航行控制区域用于非实验时间的船舶控制,有利于船舶的快速回收。监控界面如图8所示。
图8 无人帆船监控界面
3 实验
基于无人帆船最主要的研究工作为算法实验研究,本套系统以此为设计目标之一,但并不限于算法实验研究,同时可实用化为海上超长航程复合任务平台。若系统能够按照算法设计,精确地实现算法功能,那么该套系统便是成功的设计,可用于各种算法实验研究工作,同时也证明了复合任务平台基本航行功能的有效性。选用Roland Stelzer提出的一种简单有效的短途路径规划算法验证无人帆船系统的有效性,算法详见文献[14]。实验地点为上海交通大学致远湖,湖长260 m,宽80 m,湖深5 m,湖面周围无高大建筑物,风情较为稳定。
图9为实验中的无人帆船,船长1 m,宽0.4 m,排水量11 kg,选用的圆弧型帆高0.4 m,宽0.35 m。实验分为横风实验、顺风实验、逆风实验三种风况。对算法进行仿真,所得航迹结果如图10所示。
图9 无人帆船实验现场图
图10 无人帆船三种风况仿真航迹图
图11 横风船舶航迹图
图12 顺风船舶航迹图
实验结果如图11~13所示,图14为实际艏向角对计算艏向角的响应图。由图14可以看出,实际艏向角对计算艏向角响应效果良好,契合程度较高。其中差值来源于实际风向的改变和船舶运动导致的目标向量的改变两方面的原因,差值的消除,均在5 s以内,这是船舶自动操纵对算法结果的实时响应,说明船舶可以通过灵敏的转舵,达到预期艏向值,时间在5 s以内,说明算法的执行效果良好,执行器对算法的响应效果优异。同时对比相同风况下的仿真结果可以看出,两者航迹线形状十分相近。图13中的航迹在最长处出现偏折是由于绝对风向改变。说明无人帆船控制系统可以精确而有效地实现算法功能。
图13 逆风船舶航迹图
图14 艏向角响应效果图
4 结束语
针对无人帆船的实验需求,设计了一套基于PC/104和ARM微处理器的无人帆船控制系统,且硬件、软件均具备良好性能,满足精度要求。同时硬件连接的模块化,丰富的外设接口,使得该套系统具备无可比拟的可扩展性、可移植性和可复用性,不仅可以应用于无人帆船的实验研究,还可以方便地插接其他功能模块和相应传感器,进行各种自航模实验研究,为无人帆船的实验研究节省大量时间。经过实验验证,该套系统可以精确有效地实现算法功能,可作为无人帆船实验研究的平台;同时作为海上超长航程复合任务平台的基本航行功能也得到了有效验证。后续的研究目标为搭载相应的功能模块进行实验,查看该平台对不同任务的执行效果,实验验证相应功能模块的具体可实现性。
参考文献:
[1]Stelzer R.Autonomous sailboat navigation[D].Leicester:De Montfort University,2012.
[2]Campbell S,Naeem W.A review on improving the autonomy of unmanned surface vehicles through intelligent collision avoidance manoeuvres[J].Annual Reviews in Control,2012(2).
[3]Zhang R B,Duan L Q.The evaluation method of autonomous performance for USV based on adjustable autonomy[C]//Proceedings of 2015 International Conference on Automation,Mechanical and Electrical Engineering(AMEE 2015),Phuket,Thailand,2015.
[4]余晓鑫,王孝洪.基于PC104单板微机和FPGA的救援救助机器人运动控制系统设计[J].制造业自动化,2009,31(9):95-98.
[5]Wang Jing.A fully integrated PC-architecture SoC for industrial control[C]//2007 IEEE International Symposium on Integrated Circuits,2007.
[6]李莉,吴星明.基于ARM与FPGA的机器人运动控制器的实现[J].计算机测量与控制,2007,15(9).
[7]Chen W H,Yang G L.Interactive-motion control of modular reconfigurable manipulators[C]//Proceedings of the 2003 IEEE/RSJI lnter Conference on Intelligent Robots and Systems,Las Vegas,Nevada,2003.
[8]郭晓松,于传强.一种通用型武器系统故障诊断与测试平台的研究[J].计算机工程,2007,33(12):234-236.
[9]杨少龙.无人操纵帆船设计及运动控制研究[D].大连:大连海事大学,2013.
[10]He Dongxian,Bai Youlu.A crop field remote monitoring system based on web-server-embedded technology and CDMA service[C]//Proc of SAINT’07,2007.
[11]Zhang Tong,Zhou Jiqin.PC/104 embedded computer module design based on SPARC V8 processor[C]//Proceedings of 2015 Joint International Mechanical,Electronic and Information Technology Conference(JIMET 2015),Chongqing,China,2015.
[12]包乃兰,宁立革.一种嵌入式控制系统方案的研究[J].微计算机信息,2005,21(2):62-64.
[13]吕永健,谢文俊.基于PC104总线的飞机综合告警系统自动测试设备[J].空军工程大学学报,2002,3(2):24-26.
[14]Stelzer R,Pröll T.Autonomous sailboat navigation for short course racing[J].Elsevier Journal of Robotics and Autonomous Systems,2007,56(7):604-614.
[15]周小刚,单斌,汪立新,等.基于PC104的嵌入式转台控制系统设计[J].自动化应用,2012,3(1):62-66.
[16]赵蕊,余琨.无人水下航行器分布式运动控制系统设计与仿真验证[J].中国舰船研究,2014,9(6):92-99.