APP下载

小型智能机器鱼系统研究与设计*

2021-03-23房启志张树宁祝俊杰李昱洁陈玺光马毓徽贾和儒

电子器件 2021年1期
关键词:鱼尾舵机螺旋桨

房启志,张树宁,徐 嵩,祝俊杰,李昱洁,陈玺光,马毓徽,贾和儒

(1.沈阳航空航天大学电子信息工程学院,辽宁 沈阳110136;2.沈阳航空航天大学创新创业学院,辽宁 沈阳110136)

水下机器鱼是具有智能行为的高级水下机器人,具有活动范围广、机动灵活、隐蔽性好等特点,能够适用于复杂的海底环境。 为了在不可预知的水下环境中安全完成既定任务[1],实现机器鱼在水下的探测任务、定位、避障、循迹、信息传输等功能变得尤为重要。

在探测时,为获取水下机器鱼与障碍物的实时位置,文献[2-3]研究一种水下定位方法,该方法是基于多浮标的水下导航定位方法,利用水面浮标阵来完成水下无人潜航器的精确定位。 但存在精度低的问题,为提高精度,惯导与其他导航系统组成的组合导航定位方法开始广泛应用,如惯导/GPS 组合导航定位[4]。 文献[5]利用低频合成孔径声呐技术实现了对水下沉底小目标的探测,但以上方法没有与水下机器鱼避障相结合。 为保障机器鱼在水下的安全航行,高效的避障方法是必不可少的[6-7]。 水下机器人要能利用自身携带的传感探测设备(声呐、摄像头等)并结合相应的算法进行实时避障。文献[8]利用训练出的用于水下机器人动态避障的神经网络,开通仿真证明了该神经网络的有效性,但是网络参数的训练过程比较漫长且无法控制。 文献[9]利用在水下机器人的侧面和水平面安装声呐,采用双层避障方法来有效避开侧面或水平面的障碍物,提高了避障的成功率,但过程计算复杂。

为实现水下机器鱼与地面的通信,传统的水下机器人通信通常使用以下几种方式:水声通讯、光纤通讯、电磁通信、射频通信、激光通信。 但其操作复杂。 利用LiFi 通信技术的水下机器人协同作业灵活性、协调性和精确性,解决了传统通信的操作复杂的缺点[10]。 但以上方法并没有将定位、避障、循迹等结合在一起。

卫星导航技术的不断发展可以为运动载体提供导航、定位和授时服务[11]。 因此将定位与避障、循迹、通信等技术融合在水下机器鱼的探测过程中,利用陀螺仪、北斗系统、超声测距、无线通信等技术,实现水下机器鱼系统的智能化。

1 总体设计

小型机器鱼作为水下监测终端,由Arduino 微处理器[12]、MPU6050 三轴MEMS 陀螺仪和三轴加速度模块、水下超声波测距模块、北斗模块、GPRS模块、显示模块以及运动机构组成,可实现对当前位置的定位,同时能够将水下终端监测的信息实时传递至上位机。 其中运动机构由仿真鱼尾和两个螺旋桨组成,众多实验和报道表明仿真鱼尾是一种非常有前途的水下推进器[13],可以灵活地实现水下寻迹和避障运动。 上位机由手机App 组成,既能实现对硬件终端相关信息的接收,又能对下位机进行轨迹控制。 系统结构如图1 所示。

图1 系统结构框图

机器鱼的底部是红外传感器,能够实现水下避障[14]。 机器鱼的尾部是由大扭力舵机和仿真橡胶鱼尾共同构成的动力装置,舵机能够通过控制鱼尾的摆动实现整体的前进与偏航运动;机器鱼的中前部两侧各有一个螺旋桨,水平安装,可以控制机器鱼的横滚和俯仰运动。 监测终端通过UM220 北斗模块实现定位功能,天线悬浮在水面上以便完成北斗导航信号的接收,获取机器鱼的位置。 采用AJ-SR04M 超声波传感器进行测距,LCD1602 液晶显示屏显示状态信息。控制器通过GPRS 模块和SIM900A 模块将水下信息传递给App,模块天线也悬浮在水面上以便接收移动通信信号。 App 是GSM 模块接收信息的端口,可以接收并解析监测终端的信息。

2 系统电路设计

机器鱼的电控系统包含多个传感器和功能模块,其整体电路如图2 所示。

图2 整体电路连接图

设计中机器鱼的平衡装置采用的是三轴MEMS陀螺仪和三轴加速度传感器MPU6050,它可以通过内置的DMP(运动数字处理器)对原始数据进行处理,完成俯仰角和横滚角正负90°、偏航角0 ~360°的测量,有良好的响应特性。 MPU6050 与Arduino UNO 的A4、A5 连接,通过IIC 协议读取相应的姿态角并与运动机构构成闭环控制,保持机器鱼的平衡。

采用AJ-SR04M 超声波传感器进行水下测距。超声波传感器与Arduino UNO 单片机数字引脚D9、D10 连接,其电源端VCC、地端GND 分别接在Arduino UNO 的VCC、GND 端。

采用UM220 北斗模块对小型机器鱼定位与授时,该模块与Arduino 单片机的虚拟串口连接,通过UART 串口将数据送至处理模块做进一步处理。 并通过模块输出的GNRMC、GNGGA、GNZDA 等语句获取时间与位置信息[15]。

采用GSM/GPRS SIM 900A 作为无线模块。 该模块与Arduino 单片机的虚拟串口连接。 通过串口间的AT 指令,来实现位置等信息的传输。

3 系统软件设计

首先调试机器鱼,通过用手遮住红外传感器判断是否正常工作。 若避障模块检测正常,则调试超声波测距模块、北斗模块等,利用GSM/GPRS 等无线网络将获取的信息发送至手机App。 系统软件的总体流程图如图3 所示。

图3 系统总体软件流程图

3.1 定位信息获取

北斗模块获取信息的软件流程如图4 所示,Arduino 单片机的虚拟串口引脚收到信息后,令其只输出双模最简定位信息协议。 信息处理流程为:当UM220 模块接收信号时,将变量flag_rec 赋值为1,此时,串口产生中断,并判断定位是否有效,若有效,以“,”为数据节点,将数据存入变量flag_data,并处理该变量的数据,其中变量byte_count 用来存储数据中检测到“,”的次数,以此判断数据是否解析结束。

图4 北斗模块数据解析流程图

3.2 运动控制设计

PID 控制原理简单,参数调节容易,适应性较强,控制效果较好,因此其仍是遥控无人潜水器姿态和深度控制广泛采用的控制方法[16-17]。 为了机器鱼在水下的灵活运动,分别对偏航、俯仰和横滚三个姿态角进行串级PID 控制,通过MPU6050 传感器作为姿态角度反馈,鱼尾舵机和两侧螺旋桨作为执行机构,构建闭环控制系统。

鱼尾舵机的具体运行方式可以用3 个量进行描述,分别为摆动幅度,摆动频率和摆动中心线。 摆动幅度和摆动频率均与运动的速度相关,摆动中心线则与运动方向有关,所以PID 输出的控制量控制的是鱼尾舵机摆动的中心线,以此实现偏航运动的闭环控制。 两侧螺旋桨结构由两个直流电机进行驱动,采用直流电调进行转速和转向的控制,可以进行正转和反转,以此实现俯仰运动和横滚运动的闭环控制。

采用MATLAB 软件进行运动控制仿真。 首先由运动学方程推导出各执行机构的传递函数。 对于鱼尾舵机机构,其偏航运动与前进运动相互偶合,作用原理是通过改变鱼尾摆动中心线实现偏航角改变,如图5 所示。

图5 偏航运动原理图

当机器鱼向Y 轴运动时,将其鱼尾舵机摆动轴线由Y 轴方向改变到OA 方向,鱼尾在弧MN 之间摆动,则此时鱼尾产生的动力方向沿OA 向前,如力F1所示。 水的反作用合力如力F 所示,当摆动幅度和摆动频率不变时,可认为F1和F 不变,故而产生逆时针方向的转矩,使机器鱼产生向左的偏航运动。 设向左的偏航运动为正,则其运动方程如式(1)所示:

式中:a 是前进方向与Y 轴的夹角,θ 为偏航角,F 为水的反作用力,L 为水的反作用力作用中心点与O点的距离,为鱼尾摆动中心线与Y 轴的夹角,Iz为机器鱼绕Z 轴的转动惯量。

对sina 进行线性化处理,根据泰勒公式,当a≈0 时,sina≈a,对式(1)进行替换,并进行拉氏变换,得到鱼尾舵机的传递函数如式(2)所示。

对于左右两侧的螺旋桨机构,其不同组合可分别控制横滚角和俯仰角,作用原理如图6 所示。

图6 俯仰运动和横滚运动原理图

设定向右横滚为正,俯仰仰头为正。 当左螺旋桨正转产生向上的力,右螺旋桨反转产生向下同等大小的力时,如图FL和FR2所示,机器鱼产生正向横滚运动。 当左螺旋桨和右螺旋桨同时正转产生向上同等大小的力时,如图FL和FR1所示,机器鱼产生正向俯仰运动。 FL和FR由电机带动螺旋桨产生,升力可以近似为电机转速的k 倍,则电机螺旋桨系统的运动方程如式(3)所示。

式中:FL为电机螺旋桨系统产生的力,v 为电机转速,IM为电机转动惯量,M 为电磁转矩,u 为数字量控制信号,k、k1、K 为系数常量,可通过实验测得。

俯仰运动和横滚运动的运动方程如式(4)所示。

式中:β 为俯仰角,Lx为电机连线中心点到O1点的距离,Ix为机器鱼绕X 轴的转动惯量,α 为横滚角,Ly为电机连线距离的一半,Iy为机器鱼绕Y 轴的转动惯量。

对式(3)和式(4)式进行拉氏变换,得到电机螺旋桨俯仰运动和横滚运动的传递函数如式(5)所示。

式(2)和式(5)中的系数很难进行实际测算,所以给定大致的系数值,用MATLAB 进行仿真实验,其结果即可表征系统在该种控制器下的实际运行效果。式(2)中取F =10,L =1,Iy=1,在式(5)中取K =1,Lx=1,Ix=10,IM=0.1,Ly=1,Iy=10。 由式(2)和式(5)的传递函数构建串级PID 进行控制仿真。

对于偏航角控制,外环PID 参数整定为10、0.1、1,内环PID 参数整定为1、0、0;对于俯仰角控制和横滚角控制,其外环PID 参数均整定为15、0、3,内环PID 参数均整定为8、0、3。 设置偏航角和俯仰角初始状态为0°,目标角度为10°,测试其零状态响应;设置横滚角目标角度为0°,初始角度为10°,测试其零输入响应。 姿态角度的控制仿真响应曲线分别如图7~图9 所示。

图7 偏航角控制仿真响应曲线图

图8 俯仰角控制仿真响应曲线图

图9 横滚角控制仿真响应曲线图

从图7 中可以看出,在设置的目标偏航角度下,偏航控制系统的零状态响应时间约为0.5 s,变化稳定,且无超调。 从图8 中可以看出,在设置的目标俯仰角度下,俯仰控制系统的零状态响应时间约为0.3 s,超调量小。 从图9 中可以看出,在初始横滚角度为10°,目标角度为0°时,俯仰控制系统的零输入响应时间约为0.3 s,超调量小。 由以上结果可以看出,控制系统具有良好的响应特性,符合稳定性、准确性、快速性的性能要求。 当避障传感器探测到障碍物时,中心控制器便会通过预先设定的方案改变三轴目标角度,再由控制系统进行闭环控制,从而改变姿态以实现避障运动。

3.3 App 程序设计

利用Android 进行App 软件开发,以Eclipse 为开发平台的App 构成。 通过导入百度地图的BaiduLBS_Android.jar 包和对应的.so 文件实现对百度地图SDK 部分功能的使用。 在布局文件中放置百度地图的MapView、TextView 和按钮。 MapView 用以显示地图,TextView 用于显示短信发过来的信息。程序启动时开启一个服务来监听content:/ /sms/inbox 短信数据库。 当短信数据库发生变化时将对应变化的短信的read 设为true 已读。 创建一个广播监听短信,当收到新短信的广播时,获取广播内容并分析,然后将短信内容通过另一个广播发送到MainActivity 更新UI。 当点击按钮时地图显示终端上一次所在位置。

当手机端软件接收到水下终端通过GPRS 模块发送的时间、位置的信息时,可以提取信息中的位置信息,并调用百度地图,将经、纬度打点于电子地图上,实现了对水下目标的监测,图10 为手机监测端软件流程图。

图10 手机监测端软件流程图

4 测试结果与分析

图11 机器鱼水下测试实验

在机器鱼放入水中进行实验测试时,在水中放入一些障碍物,例如船舰模型等,如图11 所示,将机器鱼放入水中进行测试,打开App 监测中心,模块初始化完毕后,设置串口波特率,软件进入待接收状态,打开水下目标监测终端,大约10 s 后可以在App中显示相关参数值,同时其数据也会显示在水下监测终端的液晶显示屏上。 由App 可以得知在10 时7 分47 秒 时,机器鱼定位在北纬41°55. 486 205′,东经123°24.177 011′,垂直方向偏斜0°,水平方向偏斜24.13°,目标距离24.13 cm,系统工作正常。 根据图12(a)、12(b)所示,实验结果显示,机器鱼能够对障碍进行规避,并且自主循迹。

图12 App 接收信息及显示处理结果

5 结论

文中研究并设计了一种小型水下机器鱼系统,详细研究了系统的软硬件设计,并进行了控制算法仿真实验和总体实验测试。 通过对该水下探测系统的研究和设计表明:基于Arduino 微处理器和传感器模块组成的嵌入式硬件系统能有效地进行信息探测和数据处理;终端软件与手机软件进行协同工作;控制仿真实验结果表明:串级控制算法可以高性能地完成控制任务;实际运行测试实验表明,该小型机器鱼系统可以有效对水下目标进行探测和定位,完成水下任务。 文中研究的系统对水下小型智能系统的设计具有一定的参考意义。

猜你喜欢

鱼尾舵机螺旋桨
基于CFD的螺旋桨拉力确定方法
观狮身鱼尾像
含齿隙弹载舵机的全局反步模糊自适应控制
紧体鱼尾裙鱼尾展开处和围度设置探讨
基于dsPIC单片机的飞艇舵机控制实现
Yuweiliang(鱼尾梁)石陨石获国际陨石学会命名委员会正式命名
自主研制生产我国第一的螺旋桨
基于高速同步485总线通信的多通道舵机控制器设计
蜗牛去拜访蝴蝶的时候(外一首)
基于云模型的舵机同步控制