基于Arduino开发环境的无人艇控制系统设计

2019-03-30 02:53张本任余嘉俊刘鸿涛
舰船科学技术 2019年3期
关键词:轨迹无人单片机

张本任,熊 勇,张 加,余嘉俊,刘鸿涛

(武汉理工大学 航运学院,湖北 武汉 430063)

0 引 言

水面无人艇(USV)[1]相较于传统水上载运工具的优点主要是可实现远程无人控制,并且可以在不适宜人长期作业的工作环境中执行任务,在水深测量、环境监控、打捞搜救、环境保护等方面已得到广泛应用,且无论在军用或者民用、大型水域或者小型水域都具有广阔前景。

无人艇在技术设计方面囊括了船舶结构设计、运动控制算法设计、远程通信、信号处理和分析以及探测勘察等专业相关知识,其智能化程度和应用扩展性等决定了无人艇在实际工程中应用的可能性[2 – 3],而无人艇最核心的部分就是它的自主控制系统,因此研究并设计出无人艇控制系统使之在实际工程中发挥作用具有重要意义。

目前国内对无人艇自主控制系统的研究,大部分停留在理论研究阶段,主要集中在仿真或半实物仿真层面[4],采用实艇[5]并以集成芯片作为控制系统[6]的研究较少,一般的无人艇控制系统设计方案所需成本很高,无人艇造价昂贵且一般控制系统硬件集成度不高,同时也存在开发周期较长等问题。针对这一情况,本文介绍一种Arduino开发环境下的无人艇控制系统,该系统集成了多传感器和GPRS无线网络通信模块,具有运动控制、全球定位系统(Global Positioning System, GPS)导航定位、路径规划、自动避碰以及无线网络控制等功能,可以在水面环境上执行各种特定的任务。整套系统硬件成本较低、集成度高且可扩展性能好。

1 无人艇控制系统架构

设计的无人艇控制系统由船载设备端和网络控制端两大部分构成,其中船载设备端由船体、集成控制板和其他模块组件组成,网络控制端包括运动控制界面、功能选择界面、参数显示界面和地图界面。

无人艇船载端中的集成控制模块作为控制系统的核心,通过利用GPRS无线通信技术,在3G/4G网络环境下,使用指定的传输协议,与网络控制端建立通信链路。

无人艇控制系统涵盖硬件和软件2部分:硬件部分以微控制单元 (Micro-controller Unit, MCU)为核心,包括具有环境感知、信号采集等功能的传感元器件,通过集成各模块和元器件完成硬件部分的搭载;软件部分包括信号处理、运动控制、路径规划与自动避障算法等,通过编程加以实现。

图 1 无人艇控制系统图Fig. 1 USV control system

2 无人艇控制系统硬件设计

无人艇控制系统的主控单元采用At Mega 2560单片机,电路板具有54路数字(DIGITAL)输入/输出端(其中16路可作为PWM输出)、16路模拟输入(ANALOG IN)端、4路UART接口,以及USB接口和电源接口等[7]。

Arduino开源电子开发设计平台包括硬件和软件2部分:硬件电路部分集成Atmel AVR单片机、I/O接口等,软件部分包括Arduino集成开发环境(Integrated Development Environment,IDE),通过 USB 线将控制代码上传到控制板,编程语言类似C/C++和Java[8]。

AVR单片机相关的部分寄存器参数设置在Arduino集成开发环境中都进行了封装函数化,具有如EEPROM、舵机等控制程序库,延时、数据读写、中断等都被模块化封装成若干子函数可供调用,所以不需要用户直接处理底层系统,可以把重点放在上层算法和逻辑上,提高应用程序的开发效率,缩短无人艇控制系统的开发周期。

利用Altium Designer软件进行电路原理图设计和印制电路板 ( Printed Circuit Board, PCB)设计,最终印制出无人艇控制系统集成电路板。PCB集成了包括微控制单元(At Mega 2560单片机)、稳压电源模块、USR-GM3P模块、JY901惯性导航模块,以及GPS、超声波传感器、模拟引脚、数字引脚、USB等接口,各个模块和元器件可以通过直插的方式连接到PCB板上。将各模块和接口集成后,减小了无人艇控制系统的空间体积,节省了设备安装的人力和时间,提高了整体的工作效率。

图 2 PCB 结构图Fig. 2 PCB block diagram

集成控制板和船体外壳采用高密封防水材料,所有外接口线路采用防水套件加固,保证防水性能的同时提高野外抗干扰能力,达到NEMA4X、IP65 防护等级。

表 1 无人艇参数Tab. 1 Parameters of USV

2.1 动力装置

本控制系统的动力装置采用电动船用推进器,通过双路电机驱动模块带动2个功率约1 000 W的直流无刷电机运转,12 V电源供电,控制信号为0~5 V的TTL电平。电源输入范围在12~48 V之间,电机输出的额定电流达100 A,峰值电流可达260 A。模块具有10 M高速光耦隔离,可有效隔离对控制板的信号干扰。

图 3 动力装置组件Fig. 3 Practicality picture of drive element

VCC输入电压通过转换后分别输出到A1,A2和B1,B2管脚给电机A和B的接口,通过控制电平信号高低可控制2个电机的旋转方向,通过控制PWM值在0~255之间变化可控制电机的转速,从而控制无人艇的航行方向与航行速度。

2.2 通信模块

控制系统的通信功能由GPRS模块实现,GPRS模块采用有人物联网公司生产的型号为USR-GM3P透传模块。通过设置网络透传模式相关参数,即可将有线的串口通信转为无线的网络通信,实现GPRS模块与网络端双向透明传输。模块提供接口包括电源输入/输出、UART、SIM卡槽、射频天线等,模块原理图如图4所示。

图 4 GPRS 模块原理图Fig. 4 GPRS module schematic diagram

GPRS模块与MCU采用UART通用串行数据总线,单片机I/O电平为3.3 V,不需要做电平匹配,直接与 At Mega 2560 单片机的 TX1 与 RX1 连接。

2.3 环境感知模块

2.3.1 GPS 模块

系统采用型号为UBLOX-NEO-6M的GPS模块实现定位功能。该GPS模块预留有TTL接口,可以外接单片机控制接收GPS信息;并预留SMA天线接口,可使用外置陶瓷天线接收信号。

将模块输出的原始GPS数据,从Arduino中的串口RX中读取出来,然后经过串口TX再发送给电脑(arduino IDE的串口监视器),显示GPS原始帧数据。

2.3.2 惯性导航模块

本控制系统集成了高精度惯性导航模块JY-901,模块涵盖了三轴加速度计、三轴陀螺仪、三轴磁强计,采用高性能的微处理器,并集成了卡尔曼动态滤波算法,因此能够快速测量出无人艇实时运动姿态。

JY-901模块具有串行数据输入和输出接口,数据信号为TTL电平。数据通过串口3传到MCU,通过解析后可以得到无人艇x, y, z三个方向上的加速度值、角度值和角速度值。

2.3.1 超声波传感器

本控制系统采用型号为HC-SR04的超声波传感器模块做环境感知。控制系统集成了4个超声波传感器模块,每个模块的trig和echo接口占用At Mega 2560单片机的2个模拟口。以其中1个超声波传感器模块为例,接线方式如图5所示。

图 5 超声波传感器模块原理图Fig. 5 Ultrasonic sensor module schematic diagram

模块获取数据的方式:在A0口发出一个10 μs的高电平信号后,等待A1口高电平输出并开始计时,当下一次A1口输出低电平时记录下这段时间并结合声速计算距离值。如此不断地进行周期性测量,就可以得到移动测量的距离值。

3 无人艇控制系统软件设计

无人艇系统的软件部分涵盖了运动指令函数、数据分析函数、系统辨识算法和自动避障算法等,是硬件之间相互协调配合,最终能完成相应职能的重要环节。

该系统的创新之处在于:结合网络控制云平台,利用GPRS的无线网络透传技术,使用自定义的数据传输协议,在3G/4G网络环境下,可以对无人艇进行在线监控。此控制方式的优势在于通信距离不受限制,且系统网络通信的稳定性较好。

无人艇控制系统的软件控制流程:网络服务器端与At Mega 2560单片机之间通过GPRS模块完成数据收发,由网络控制端发送控制指令到GPRS模块,单片机通过程序处理接受的数据信号输出相应指令给各个执行元件;同时各执行元件、传感器也将实时的动态参数传给单片机,通过GPRS发送到云平台操作界面,可以直观显示当前工作的位置参数、运动状态参数等数据。

利用 Arduino 集成开发环境对 At Mega 2560 进行编程控制,软件控制流程如图6所示。定义各模块管脚和系统的各参数,系统开始工作后,完成系统初始化;各传感器和通信模块接收的数据经过解析和数值转换后,判断控制端口是否接收到控制指令,如果接收到在线的控制指令则优先执行,否则判断无线通信接口是否接收到轨迹数据,如果接收到网络控制端发送的轨迹数据则执行相应运动控制指令完成规划的轨迹路径,否则更新各模块接收的数据;利用USRGM3P模块的无线网络透传方式,按照自定义数据格式将无人艇的运动参数上传到网络控制平台;上传完成后将串口数据清空,并循环上述步骤。

图 6 地图选点界面Fig. 6 Map selection interface

3.1 电机驱动部分

电机驱动子程序部分主要是对无人艇的运动状态进行控制。无人艇的运动状态包括前进,后退,向前左转,向前右转,原地左转,原地右转,停船。通过对电机驱动模块的A1,A2,B1,B2管脚的电平高低设置实现电机的正反转控制:同时通过PA,PB两个PWM控制口写入不同的占空比来对电机的转速进行控制。

3.2 参数获取

3.2.1 运动姿态

无人艇航行状态为六自由度,需要获取无人艇的动态参数来对其运动状态进行控制,包括首摇、横摇、纵摇、垂荡、横荡、纵荡6个自由度的运动参数。

JY901姿态传感器的数据输出采用16进制的方式,这种方法的优点是效率高,可以用很少的字节传输需要的数据,利用有限的带宽传输大量数据。

3.2.2 经纬度

无人艇在水面航行时,需要获取设备当前所在具体位置来对其所处环境进行监控,则需获取设备当前所在位置的经纬度数据等。GPS模块接收到的数据为标准NMEA-0183协议格式的数据,通过在1 s内不断扫描GPS信息连续获取GPS数据,再将读到的数据中的经纬度数据从一帧完整数据中提取出来并作解析,利用解析后的数据对无人艇进行位置监测和轨迹控制等。

3.3 网络控制函数与路径规划算法

无人艇工作时的详细信息,需按照规定的格式发送到网络端进行显示,以实时的、全方位的监控无人艇的运动状态。按照指定格式,将数据写入GPRS模块对应串口1,并在主程序中循环以连续发送数据。

无人艇路径规划算法步骤:

1)当接收到轨迹数据时,转到路径规划函数;

2)判断障碍物标志位:如果有碍航物,则转到自动避障函数;否则转到步骤3;

3)当接近目标终点时,转到终点判别函数,循环轨迹规划函数。

3.4 超声测距与自动避障算法

HC-SR04超声波测距模块程序控制原理如下:

1)采用IO口TRIG触发测距,给至少10 μs的高电平信号;

2)模块自动发送8个40 kHz的方波,自动检测是否有信号返回;

3)当有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,并计算出测试距离。

无人艇船首和船尾左右两侧各放置1个超声波探头,其中前方左右分别为S1,S2,后方左右分别为S3,S4,通过各超声波传感器模块的接收到的数据,判断碍航物所在的方位和距离无人艇设备的距离,设计自动避障算法并根据环境信息执行相应的控制指令。

4 试验结果

无人艇结合Arduino IDE试验并实现了以下功能:

1)无线网络通信功能。平台与用户的交互采用网站的形式,与Android系统设备之间的通信采用Windows服务,通过TCP/IP协议通信,设配端各项动态、静态参数可以发送到云端网络界面进行显示,网络控制端可以进行控制指令发送和轨迹数据发送等功能。

2)自主定位功能。可进行5m级误差精度的定位并具备地图选点功能。

3)运动控制功能。系统可执行相应的控制指令。

4)路径规划功能。由网络端向设备端发送轨迹数据,无人艇按照设定路径完成指定航行任务。

5)自动避障功能。自动识别碍航物距离,并根据自动避碰算法完成避障动作。

无人艇在武汉理工大学船舶拖曳试验水池中进行了试验,测试内容包括无线运动控制、动态定位、轨迹路径控制和自动避障控制等。

无人艇路径规划试验:首先在网络控制平台上的地图界面中进行“地图选点”,然后将轨迹数据通过网络透传方式发送到无人艇设备端;无人艇控制系统根据收到的数据完成相应的轨迹任务。测试结果表明无人艇能在0.5 s以内快速响应控制指令,丢包及误码率较低,网络连接和运动状态稳定。

图 7 地图选点界面Fig. 7 Map selection interface

图 8 轨迹数据发送Fig. 8 Trajectory data transmission

5 结 语

基于Arduino开发环境的无人艇控制系统集成了多传感器和动力系统,实现了无人艇船载设备端的搭建;并采用GPRS模块作为无线通信工具,与网络控制平台联调完成了数据收发功能,实现了船载执行端和网络控制端的交互。该控制系统相较于传统无人艇控制系统的优势在于:系统开发周期短,集成度高,可扩展性好,且设计成本低。整套控制系统的基本功能已经完成,为无人艇在实际工程中的应用提供了一种可行的设计方案。在此研究基础上,未来研究的重点在于动态路径规划算法的测试实验和系统稳定性的进一步优化。

猜你喜欢
轨迹无人单片机
解析几何中的轨迹方程的常用求法
单片机在电子技术中的应用和开发
HUMS在无人直升机上的应用与展望
轨迹
轨迹
反击无人机
诗到无人爱处工
无人岛上的试验
C8051F020与80C51单片机的异同点
单片机I/O口模拟串行通讯的C51实现方法