2. 青岛卓建海洋装备科技有限公司,山东 青岛 266000
2. Qingdao Zhuo Jian Marine Equipment Technology Co., Ltd., Qingdao 266000, China
近年来,我国经济发展迅猛,对海洋环境的重视度越来越高,无人艇可以完成对海水环境的自动化监测等多种任务。无人艇的研发涉及多个学科,如自动控制、信息传输、船舶设计等。无人艇可以搭载多种设备实现对海水的实时自主监测,不仅可以节省人力成本而且能够在高风险作业环境中工作,具有广泛的应用前景[1-2]。无人艇的运行方式主要有远程遥控和自动控制,通过这2种方式可以实现姿态控制、环境探测、目标追踪、自主巡航等功能。无人艇具有与其他平台联合使用的能力,无论是军事还是民用都会具有巨大的发展潜力[3-4]。
目前的无人艇轨迹控制效果精度一般不高,文献[5]的轨迹跟踪误差为5 m。而本文设计的无人艇在进入直线段时可以达到亚米级的运行轨迹,实际运行中取得了理想的控制效果,使用的控制器为基于STM32单片机自研的无人艇控制器,通过无线数据传输模块的信息交互实现了远程遥控功能,通过使用PID算法实现了无人艇的自主巡航和轨迹规划。
1 无人艇控制系统总体设计无人艇控制系统由岸基控制显示单元、系统服务器、无人艇、锂电池组4部分组成。岸基控制显示单元即遥控采用平板电脑实现对无人艇实时状态进行监控,其核心是使用Qt编写了一个无人艇控制及监控软件,对无人艇实时数据进行分析处理。系统服务器是遥控和无人艇控制板的数据交互桥梁,用于解析遥控发来的数据转发给无人艇控制器,把无人艇控制板的状态信息转发给遥控实时显示,并读取各传感器的数据储存至本地数据库,其工作系统如图1所示。
锂电池组为72 V 100 Ah的电池组,由于无人艇系统需要多个电压等级的电压,所以需要DC-DC降压模块为不同设备供电。如无线传输模块所需的电压为5 V,系统服务器所需电压为12 V,基于STM32无人艇控制板为7~35 V,传感器所需电压有12 V,24 V等,而驱动无刷电机的电调需要72 V供电。无线模块为RDF900数传电台,传输距离大于40 km,空气中数据传输速率高达250 kbps。系统服务器使用的是带有8个串口的工控机。传感器有多参数水质监测仪(简称EXO)、单波束、姿态传感器。
2 系统硬件设计 2.1 无人艇STM32控制板无人艇控制板选用的单片机为意法半导体生产的32位单片机STM32F103RCT6,其运行主频最高可达72 MHz,Flash程序存储器容量为256 KB,RAM容量是48 KB,通信接口有CAN总线、I2C、IrDA、LIN、SPI、UART/USART、USB、SDIO等。调试模式有单线调试(SWD)和JTAG接口调试。低功耗模式有睡眠、停机和待机模式。具有内部实时时钟模块,3个12位模数转换器共有21通道。定时器共有11个,其中4个16位定时器,每个均有4个PWM通道可以产生多种频率和占空比的波形。2个看门狗可以防止程序出现死机的状况。具有5个USART接口,可以外接无线模块、传感器等串口设备。无人艇控制板结构图如图2所示。
基于STM32的无人艇控制板集成有DC-DC降压电路,外部供电电压可以为7~35 V。持续输出电流为3 A,峰值可达4 A,电路图如图3所示。
TPS5430输出电压可以使用电阻R5,R6进行调节,其输出电压
${U_{out}} = \left( {\frac{{{R_6}}}{{{R_5}}} + 1} \right) \times 1.221{\text{。}}$ | (1) |
单片机STM32F103RCT6,W25Q64等芯片需要3.3 V供电,本文使用AMS1117-3.3把5 V电压转换至3.3 V,这样可以满足电路板对5 V和3.3 V的需求。
2.2 RS485-RS232通信接口扩展板的设计RS485-RS232通信接口扩展板是本文设计的可以在一条485总线挂数十个或上百个传感器。其核心是使用一个STM32F103C8T6单片机的2个串口实现为每个传感器进行分配地址,串口1电平使用MAX13487转换为RS485电平,串口2电平使用MAX3232转换为RS232电平,并在单片机中写入一个转换协议,把传感器的RS232端的协议转换为带有地址和CRC校验的RS485总线端的协议,且都有自己唯一的地址。RS485-RS232通信接口扩展板结构图如图4所示。
RS485-RS232通信接口扩展板极大扩展了无人艇外接传感器的能力,其应用图如图5所示。
RS485-RS232通信接口扩展板的RS485端协议如表1所示。
如向地址为0x01的扩展板发送一条表1样式的数据包,在RS232端输出到传感器的仅为数据部分,此数据部分要与传感器的读取或设置指令相符,传感器返回相应的数据到扩展板RS232接口,经过扩展板的处理再从RS485接口输出表1样式的数据包,此时数据部分为传感器返回的数据。
本文使用的水质传感器为多参数水质监测仪,水深传感器为单波束。多参数水质监测仪可以监测的水质参数有温度、PH、盐度、电导率、比电导率、叶绿素、浊度、溶解氧等,单波束用于测量单波束安装位置距海底的距离,最终把单波束数据、安装位置、潮位数据相结合计算出深度。
3 程序及软件设计 3.1 无人艇控制程序设计本文设计的无人艇核心是实时对无人艇进行遥控控制,以及按照预定的轨迹进行自主巡航。制定好无人艇控制协议即可实现实时遥控无人艇的功能,而自主巡航需要借助PID算法进行自主调节轨迹,通过设定合适的PID参数以达到最理想的运行轨迹。
遥控控制的指令主要包括前进速度、左右控制方向角度,以及上浮下潜等,其协议格式如表2所示。
协议含有地址的目的是同一个遥控可以在同一时间控制多个无人艇。功能码在控制指令中即为设置寄存器参数,所以使用的功能码数值为0x06。寄存器即为控制不同运动状态的地址。数据即为改变寄存器内的数据内容。CRC用于判断此条信息内容是否正确。
自主巡航需要提前设定好轨迹,其设置协议同表2,然后发送启动指令后即开始自主巡航。自主巡航仅能在水面运行,因为在水面RTK才能搜索到GPS定位信息,其自主控制程序思路如图6所示。
图6中虚线为无人艇运行轨迹。假设无人艇当前位置为O要沿AB直线向B运行,程序执行中首先判断无人艇的艇首方向与AB之间的夹角e1(t)是通过顺时针旋转角度小还是逆时针旋转角度小,然后进行相应的转向最终进入AB直线,通过PID算法控制喷泵的方向使艇首方向尽可能朝向B点且保证无人艇O距离AB直线的偏移距离e2(t)尽量很小。在无人艇由A向B运行过程中的PID调节公式如下:
$\begin{split} {P_{out}} =& X \times \left( {{K_{1P}}{e_1}(t) + {K_{1I}}\int_0^t {{e_1}(t){\rm d}t + } {K_{1D}}\frac{{{e_1}(t)}}{{{\rm d}t}}} \right) + \\ &Y \times \left( {{K_{2P}}{e_2}(t) + {K_{2I}}\int_0^t {{e_2}(t){\rm d}t + } {K_{2D}}\frac{{{e_2}(t)}}{{{\rm d}t}}} \right) {\text{。}} \end{split} $ | (2) |
式中:Pout为喷泵旋转角度变量;K1P为偏差角度调节PID的比例参数;K1I为偏差角度调节PID的积分参数;K1D为偏差角度调节PID的微分参数;K2P为偏移距离调节PID的比例参数;K2I为偏移距离调节PID的积分参数;K2D为偏移距离调节PID的微分参数;X为偏差角度调节系数,此处取0.5;Y为偏移距离调节系数,此处取0.5;Pout为式(2)的一个输出量,最终转换为喷泵的角度控制。
3.2 遥控软件设计遥控软件采用Qt编写,Qt是由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。为了人机交互方便,使用Qt编写的GUI程序,可以很方便地对无人艇进行操作或监控。
遥控中为了方便轨迹的规划,可以直接把事先规划好的无人艇运行轨迹写入TXT文本中,然后点击遥控中的“从文件设置多点经纬度”按钮即可自动配置完毕,然后点 “无人艇启动”按钮即可进行自主巡航。选中“综合参数”即可把无人艇的姿态、GPS经纬度和时间、运行至第几工作点、各传感器数值等读回遥控界面,并把运行轨迹显示到实时地图之中。
为了方便无人艇运行过程中出现紧急情况需要立即返航的情况,遥控设有“一键返航”按钮,当无人艇的STM32控制板收到该指令时立即向最初无人艇启动位置运动。运行过程中可以随时切换“自主模式”和“遥控模式”,以及控制各个IO端口。无人艇的运行状态数据在遥控界面中一目了然,可以实时了解无人艇的最新工作状态。
4 系统测试 4.1 联调测试在无人艇启动之前需要进行联调测试。首先需要按照系统图连接好各个设备,然后选中遥控中的综合参数查询,逐一查看RTK定位数据的经纬度、姿态角数据的Roll角和Pitch角、艇头角、单波束传感器数值、多参数水质监测仪数值,控制电机旋转是否正常。这些数据均正常后才可启动无人艇,配置其运动方式。
4.2 无人艇码头测试为了验证无人艇自主巡航的工作性能,进行遥控测试和自主巡航测试。遥控测试通过直接控制电机转速以及舵机方向从而达到控制无人艇运行的效果,但是遥控测试时无人艇必须在可视范围内,而且手动遥控的轨迹很难达到理想轨迹效果。自主巡航的PID控制算法不仅可以抵抗外界风力和海浪的干扰,而且可以在规划的轨迹上运行。
2018年11月15日,无人艇在山东省青岛市万达星光岛进行了自主巡航测试,测试时风速8 m/s,浪高0.1 m。此次自主巡航测试设置几条运行直线,如图7所示。
图7中直线为设置的运行轨迹,曲线为实际运行轨迹,在实际运行中发现,除刚进入直线时会有较大的弯曲,进入直线后基本可以沿直线运行,在此次环境下测得无人艇具有较强的鲁棒性,偏移直线距离不超过0.8 m。
5 结 语本文设计的无人艇具有自主巡航和遥控2种模式,在遥控模式下无人艇所有动作受遥控端控制,在自主巡航模式下无人艇可以自主进行预定轨迹巡航。遥控模式的特点是可以人性化操控无人艇的状态,自主巡航的特点是控制精度高,其偏移预定轨迹不超过0.8 m。经过海上试验,验证了本文设计的无人艇控制系统稳定可靠、抗干扰能力强。遥控界面具有方便、直观等特点,实现了高精度的海上自主巡航。
[1] |
史微微. 无人艇直线路径跟踪控制器的设计与实现[D].大连: 大连海事大学, 2016.
|
[2] |
朱炜, 张磊. 现代水面无人艇技术[J]. 造船技术, 2017(2): 1-6. DOI:10.3969/j.issn.1000-3878.2017.02.001 |
[3] |
郑烈心. 水面无人艇建模与运动控制系统设计[D].广州: 华南理工大学, 2016. http://cdmd.cnki.com.cn/Article/CDMD-10561-1016770079.htm
|
[4] |
谢杨柳. 水面无人艇指挥控制系统构建及应用研究[C]//中国指挥与控制学会.第六届中国指挥控制大会论文集(上册).中国指挥与控制学会: 中国指挥与控制学会, 2018: 4.
|
[5] |
徐小强, 盛磊. 基于STM32的无人艇航迹控制器的设计与实现[J]. 武汉理工大学学报(交通科学与工程版), 2018, 42(4): 626-630. |
[6] |
张本任, 熊勇, 张加, 等. 基于Arduino开发环境的无人艇控制系统设计[J]. 舰船科学技术, 2019, 41(5): 83-87. |