一种双关节机器鱼的设计与实现
2021-11-03文小玲黄晨华
张 川,文小玲,喻 盈,黄晨华
武汉工程大学电气信息学院,湖北 武汉430205
随着科学技术的不断发展,机器人技术在工业、农业、国防及人们的日常生活中得到越来越广泛的应用[1-2]。仿生机器鱼因其灵活、游动速度和效率高等特点在水下探测、水产养殖、水环境监测等领域有广阔的应用前景。1994 年,麻省理工学院研制出第一条仿生机器鱼“Robo Tuna”[3],尾部推动结构达到8 个关节,推进效率91%,速度1.5 m/s,但是结构复杂,总共有近3 000 个零件,体长达到了1.25 m。2005 年,英国埃塞克斯大学研制的“fish-G9”机器鱼[4],使用3 个伺服电机构成驱动结构,游动速度达到0.9 m/s,体长缩短至0.52 m。2012 年,新加坡国立大学电气与计算机工程系徐建新等人采用了两关节的鱼尾结构[5],不具备上浮下潜功能,长度为0.25 m。 2019 年,印度的萨斯特拉大学采用了多关节的鱼尾结构[6],让机器鱼的游动姿态有极高的拟真度,但是也增加了控制的复杂程度。在机器鱼的尾部结构方面,关节数量多具有灵活、速度快、姿态拟真度高等优点,同时也会带来长度和控制难度增加的弊端,而关节数量少的机器鱼具有体积小、控制容易、结构简单的特点,缺点则是速度会相对降低。Sfakiotakis 等[7]的研究表明机器鱼的机动性与参与推进的身体部分占比有关,占比越高、机动性越高,但占比过高会引起游动姿态的混乱,最后提出了合理的推进部分占比。HUANG 等[8]提出了基于神经网络的机器鱼避障控制方法,并通过仿真验证了其可行性,但因神经网络需要大量的训练集数据和漫长的训练过程而无法实现机器鱼的实时避障控制。Wang 等[9]采用了基于迭代学习的控制方法,通过不断迭代让机器鱼关节运动满足预设的轨迹,仿真结果表明迭代到一定次数之后与预设轨迹误差较小,但是计算量较大,因此实时性不强。王耀威等[10]采用仿真对比展现了 中央模式发生器(central pattern generator,CPG)控制方法的稳定性,但是目前该控制方法仍处于起步阶段,且含有高度非线性的环节,给CPG 的应用研究带来了许多困难。张倩[11]采用了基于模糊规则的控制策略,模糊控制的计算量不大,并且具有较强的实时性和鲁棒性,对于处理未知环境的避障问题有很大的优势,缺点在于缺乏系统性,隶属函数的确立需要凭借经验。
鉴于尾部结构和控制方法的优缺点分析,本文提出一种双关节仿生机器鱼,主要创新点如下:
①推进结构方面,采用双关节尾鳍推进方式,在能完成基本运动要求的同时可以最大程度简化机械结构和控制难度,同时选择了尾部推进部分合适的占比以弥补关节数量少导致的机动性不足。
②控制算法方面,在速度和转角两个方面采用模糊控制,具有较强的实时性和鲁棒性,上浮下潜则直接制定规则库进行控制,可以简化计算量,对该复合避障算法进行了仿真和实际测试,证明该算法的可行性和避障率高以及机器鱼控制的低扰动性。
1 机器鱼外形结构
根据鱼类的体型体态,仿生机器鱼的推进方式可以分为两大类:利用鱼体和尾鳍推进(body and/or caudal fin,BCF)的推进方式,利用中间鳍或对鳍推进(median and/or paired fin,MPF)的推进方式[12]。BCF 与MPF 相比,游动效率更高,且加速和启动性能良好,机动性也更高[13],因此本文采用BCF 推进方式,并采用双关节的推动结构。
机器鱼的上浮下潜方式可以分为两种:改变重心法和改变重力法。改变重力法是通过改变鱼体内储水器的储水量来控制重力与浮力之间的平衡关系[14],具有更易于实现和对环境的干扰更小的优点,因此选择采用该方法。通过改变水箱储水量实现机器鱼上浮下潜。考虑到水箱内部气压对水泵进水和排水的影响,在水箱上加装了排气孔和气囊,用于平衡水箱内外气压。上浮下潜结构位于机器鱼的中部,实物图如图1(a)所示。
借鉴鳙鱼的体态,采用双关节舵机驱动的机器鱼3D 模型结构如图1(b)所示。
其中1 为红外测距传感器,2 为水质测量传感器,3 为舵机。整个机器鱼长450 mm、宽140 mm、高180 mm。Sfakiotakis 等[7]的研究表明,当机器鱼的尾部推进部分为整个身体长度的1/3 时,机器鱼可以在机动性和姿态的连贯性之间取得平衡,因此机器鱼推进部分的长度为150 mm。
由图1(b)制作出仿生机器鱼的实物如图1(c)所示。
图1 机器鱼相关图像:(a)水箱,(b)机器鱼3D 模型,(c)机器鱼实物Fig. 1 Robotic fish related images:(a)water tank,(b)3D model of robotic fish,(c)physical robotic fish
2 运动控制和避障方法
2.1 动力学模型
基于鱼体波运动曲线方程,忽略环境因素的影响,双关节机器鱼的运动可抽象为以下数学模型:
式中:α、β分别为第一、二关节与机器鱼轴线的夹角;Kα为振幅系数,表示关节振幅与最大振幅的比值,当Kα=0 时,两个关节不摆动,当Kα=1 时,两个关节以最大振幅摆动;A1m表示第一个关节和鱼体轴之间的摆动振幅,A2m表示第二个关节和第一个关节之间的摆动振幅;K为偏斜系数,表示各关节摆动对称轴与鱼体轴的偏斜程度,其范围为-1~1,当K为0 时,表示鱼体轴与对称轴重合;T为摆动周期;φ表示第二个关节和第一个关节之间的相位差。
2.2 游动控制
机器鱼游动时,双关节摆动模型如图2(a)所示。图2(a)中,α1、β1分别是第一、二关节与机器鱼轴线的夹角。忽略外界环境的影响,根据机器鱼在直线游动时,K= 0,φ= -π[15],则A1m、A2m均转换为关节与鱼体轴之间的摆动振幅,用速度系数kv代替振幅系数Kα,代入式(1),可以得到机器鱼直线游动时的数学模型如下:
图2 机器鱼双关节摆动模型:(a)直线游动,(b)转向Fig. 2 Double joint swing models of robotic fish:(a)linear swimming,(b)turning
式中,A1、A2分别为第一、二关节摆动的振幅,T1为第一、二关节摆动的周期;kv为速度系数(范围0.1~1),其值越小、角度的幅值就越小、前进的速度也就越慢,通过改变kv的值就可以改变机器鱼的游动速度。
2.3 转向控制
机器鱼转向时尾部的运动状态与游动时不同,以机器鱼右转为例,双关节摆动模型如图2(b)所示。
转向时,以机器鱼轴线作为两个关节的摆动轴线,则K= 0;且两个关节均在机器鱼轴线一侧摆动,用转向系数kf代替振幅系数Kα,在式(1)的基础上,得到转向时的数学模型如下:
式中,A3、A4分别为第一、二关节摆动的振幅,T3、T4分别为第一、二关节摆动的周期;kf为转向系数(范围-1~1),正值表示右转、负值表示左转,kf的绝对值越大、转向半径越小,反之亦然;k是常数,其值为1 或者-1,与kf同号。
2.4 避障算法
5 个红外测距传感器用于实时避障。具体位置和朝向如图3 所示。
图3 传感器位置和朝向Fig. 3 Sensor position and orientation
图3 中,1 为正前方(FIRS)、2 为上侧(TIRS)、3 为下侧(BIRS)、4 为左侧(LIRS)、5 为右侧(RIRS)。
基于游动、转向、上浮、下潜控制原理,以及传感器的布局,提出一种基于模糊控制的复合三维避障方法。对于速度系数和转向角度,采用模糊控制,对于上浮下潜,采用建立规则库来实现避障。整个复合避障控制器的结构如图4 所示。
图4 中,l是速度系数模糊控制器的输入量,其值为
图4 复合避障控制框图Fig. 4 Block diagram of compound obstacle avoidance control
式中,FIRS、TIRS、BIRS、LIRS、RIRS分别表示其对应传感器测量到的距离。其论域为[10,80],模糊子集为{很近(NT)、近(N)、中(M)、远(F)},输出速度系数V的模糊子集为{VSM(最慢速)、VS(慢速)、VM(中速)、VN(正常速度)},速度系数kv的论域为[0.2,1]。速度系数模糊规则如表1 所示。
表1 速度系数模糊规则Tab. 1 Fuzzy rules of speed coefficient
ε是转向系数模糊控制器的输入量,其值为
根据左右两侧红外测距传感器的检测范围为10~80 cm,再加上一定的裕度,可得其论域为[-80,80]。ε的模糊子集为{右远(RF)、右中(RM)、右近(RN)、零(ZO)、左近(LN)、左中(LM)、左远(LF)}。当ε为正值时,其值越大则表明障碍物离机器鱼右侧越近;当ε为负值时,其值越小则表明障碍物离机器鱼左侧越近,鉴于红外测距传感器的精度,左右侧两个红外测距传感器的值基本不存在相等的情况,因此当ε等于0 时,此时可认为前方没有障碍物。输出转向系数kf的模糊子集为{PB(正大)、PM(正中)、PS(正小)、Z(零)、NS(负小)、NM(负中)、NB(负大)},转向系数kf的论域为[-1,1]。转向系数模糊规则如表2 所示。
表2 转向角度模糊规则Tab.2 Fuzzy rules of steering angle
对于上述速度系数和转向角度模糊控制器,输入、输出都采用三角隶属度函数,反模糊化采用最大隶属度法。
上浮下潜控制的输入信号来自上侧(TIRS)和下侧(BIRS)红外测距传感器,与速度和转向角度的控制方式不同,上浮下潜控制的输出为上浮或者下潜的二值离散变量,而不是连续变量,因此直接采用制定规则进行控制可以进一步减少算法的计算量。上浮下潜控制规则如表3 所示。
表3 上浮下潜控制规则Tab. 3 Control rules for floating and diving
表3 中,考虑到机器鱼的高度以及上侧和下侧传感器倾斜的角度,设定40 cm 作为临界距离。若TIRS和BIRS的测量值都小于40 cm,则表明机器鱼不能通过向前游动避开障碍物,只能通过转向来避障;若TIRS和BIRS的测量值都大于40 cm,则表明机器鱼可以直接前游,不用采取避障措施。在其余两种情况下,则往数值较大的一侧上浮或者下潜即可完成避障。
综合速度系数、转向系数模糊控制和上浮下潜的规则控制方法得到最终的复合避障方法。
利用MATLAB 进行仿真,设定一个长宽高均为10 cm 的三维空间,并在其中设置了6 组障碍物,每一组障碍物由若干个边长为0.3 cm 的正方体构成,仿真结果如图5(a)所示。
其中1 组障碍物的坐标为(2,1,a),其中整数a 的范围为8~10,2 组为(2,3,b),其中整数b的范围为8~10,3组为(3,5,c),其中整数c的范围为5~10,4 组为(2,8,d),其中整数d的范围为5~10,5 组为(6,e,f),其中整数e的范围为7~10,整数f的范围为5~10,6组为(g,6,h),其中整数g的范围为6~10,整数h的范围为1~10,起点坐标为(0.5,0.5,9.5),终点坐标为(9.5,9.5,0.5),得到仿真结果的立体图。
从图5(a)的避障仿真结果可以看出,利用本文中的复合避障算法,机器鱼可以成功避障并抵达目的地。选取图5(a)的俯视视角对避障效果和过程进行分析,俯视图如图5(b)所示。从俯视图可以看出,机器鱼出发时,右侧有障碍物1、左侧是边界(视为障碍物)、因此直行,一直到经过障碍物2,由于此时障碍物3 还较远,左侧是边界,因此右转,遇到障碍物3 时左转,又遇到障碍物4 时右转,由于障碍物5 下方有足够空间,因此下潜避开障碍物,最后到达终点。
图5 避障仿真结果:(a)立体图,(b)俯视图Fig. 5 Obstacle avoidance simulation results:(a)stereograph,(b)top view
3 控制系统设计
仿生机器鱼的控制系统硬件架构如图6 所示,以STM32F103ZET6 为控制核心,通过对5 个型号为GP2Y0A21YK0F 的红外测距传感器的信息进行处理和分析实现机器鱼的避障,水泵和舵机分别实现机器鱼的上浮下潜和前进转向,采用NEO-6M GPS 定位模块,无线通信采用传输距离较远的Lora 模块,使用双输出锂电池为STM32 和舵机提供5 V 电源、为水泵提供12 V 电源。
图6 控制系统总体框架图Fig. 6 Overall framework of control system
控制系统的软件由主程序、运动控制与避障程序、电源管理程序、PWM控制信号产生程序等组成。
根据机器鱼的控制系统总体框架,机器鱼控制系统电路原理图如图7 所示。红外测距传感器输出的是模拟信号,利用控制器的模拟数字转换器(analog to digital converter,ADC)采集数据;两个舵机由控制器输出两路PWM 信号控制转动角度;两个水泵由控制器的两个普通I/O 控制开通和关断,分别由两路脉冲宽度调制(pulse width modulation,PWM)信号控制水泵抽水和排水的速度;GPS 和Lora 无线模块都采用串口通信协议,通过串口与控制器相连;电源及电量检测的输出信号也是利用控制器的ADC 进行采集;STM32F103ZET6 控制器原本有144 个引脚,I/O 引脚112 个,图中只画出了实际用到的引脚,其余引脚可以作为后续扩展使用。
图7 控制系统电路原理图Fig. 7 Schematic diagram of control system circuit
3.1 电源管理程序
为了保证电量充沛,需要对锂电池电量进行监测和预警,确保仿生机器鱼有足够的电量返航。
耗电量测量程序流程如图8(a)所示。由于机器鱼到达目的地和返回起始点的耗电量可以近似看作相等,因此采用以下方法进行电池电量的检测。在机器鱼启动时、测得电池电量U1,机器鱼到达目的地时、测得电池电量U2,机器鱼执行任务完毕时测得的电量为U3,可以得到返航所需的最小电量为:
图8 流程图:(a)耗电量测量,(b)电量预警,(c)PWM 产生,(d)运动控制与避障Fig. 8 Flow diagram:(a)power consumption measurement,(b)electricity warning,(c)PWM output,(d)motion control and obstacle avoidance
机器鱼执行一次任务所需的最小电量为:
如图8(b)所示,机器鱼实际运动的过程中,每30 s 检测一次电池电量,考虑电池工作时的损耗,因此在原来的最低返航阈值的基础上乘以1.1,确保机器鱼电量报警时还有足够电量返航,如果U小于1.1Uc,说明系统电量只足够机器鱼返航,不能继续运动,如果U小于1.1Ue,说明系统电量不足以维持机器鱼执行任务,同样应该迅速返航。
3.2 PWM 信号产生程序
PWM 信号用于控制舵机,PWM 输出程序流程如图8(c)所示。STM32 控制器输出PWM 是基于高级定时器,首先需要初始化用于输出PWM 的I/O,包括使能I/O 的时钟和配置输出模式为复用输出,初始化定时/计数器,选取时钟频率为72 MHz;PWM 有两种输出模式:PWM1 和PWM2,两种模式在输出上没有区别;然后配置PWM 的周期和占空比,两者是舵机控制的决定性因素;最后使能定时器和PWM 输出。
3.3 运动控制与避障程序
机器鱼的运动控制与避障程序流程如图8(d)所示。机器鱼在运动时,若有1 个红外测距传感器检测到有障碍物,则将5 个红外测距传感器的测量值都进行数据处理,得到l、ε、TIRS和BIRS并将其输入到复合模糊避障控制器,分别作为速度系数、转向系数和上浮下潜控制器的输入,经过模糊控制器的处理,得到对应的速度系数、转向系数以及上浮下潜的距离,最后产生PWM 信号去控制舵机和水泵实现机器鱼的避障,成功避障后再向预定点游动,若没有检测到障碍物,则向预定点游动。
检测机器鱼是否到达预定点,若到达预定点,则执行水质采集任务,否则继续判断是否存在障碍物,以此循环,直到到达预定点。
4 样机测试及结果分析
制作样机进行测试,样机内部构成如图9所示。
图9 样机内部图Fig. 9 Prototype internal diagram
图9 中,1 为红外测距传感器(另外有2 个被遮挡未标出),2 为抽水水泵,3 为排水水泵,4 为继电器,5 为Lora 无线通信模块,6 为GPS,7 为STM32控制器,8 为蓄电池,9 为数据采集板(对水质测量传感器的数据进行处理,以RS-485 协议输出数据),10 为485 转串口模块(将数据采集板输出的数据以串口协议发到STM32 控制器),11 为溶解氧测量传感器,12 为pH 值测量传感器,13 为第一关节舵机,14 为第二关节舵机。
4.1 避障测试
在学校的静心湖对机器鱼进行了运动控制及避障测试,以湖泊堤坝作为障碍物,每隔4 s 拍摄一次图片,避障结果如图10 所示。从图10 可以看出,机器鱼可以成功避开障碍物。
图10 实际避障测试Fig. 10 Actual obstacle avoidance test
为了测试避障的成功率,进行了20 次避障测试,其中避障成功18 次,避障失败2 次,有触碰湖堤坝的情况,避障成功率达到90%。
4.2 巡游测试
为了测试机器鱼的低扰动性,在学校静心湖进行了巡游测试,在机器鱼巡游过程中,每隔2 s拍摄1 张图片,如图11 所示。
图11 机器鱼巡游情况Fig. 11 Robot fish cruise situation
从图11 可见,机器鱼在游动过程中,并未对水中的鱼类造成干扰,由此可以看出整个系统具有低扰动性。
4.3 实际应用测试
为了验证机器鱼的实际应用效果,在机器鱼上搭载溶解氧和pH 水质检测传感器(两种传感器均有温度补偿,因此也可以测出水温)采集水质参数并利用Lora 上传到远端服务器。
将采集到的溶解氧数据与台湾衡欣公司的高精度溶氧仪AZ8403 的测试数据进行对比。总共记录5 次数据,测量结果如表4 所示。
表4 溶解氧测量数据对比Tab. 4 Comparison of dissolved oxygen measurement data
从表4 可以看出,机器鱼搭载水质参数传感器可以完成水质参数采集工作,并且采集到的数据与溶氧仪测量的数据误差较小。同时,在长时间的应用测试中,机器鱼的故障表现为:在电池的电量不足时必须返航而中断数据采集工作,在电量充足的前提下整个系统可以处在正常的工作状态。
综合上所述:机器鱼采用本文的复合避障算法可以成功实现避障并且成功率较高;机器鱼在巡游过程中扰动低;机器鱼的水质参数采集测试说明机器鱼有实际的应用价值。
5 结 论
研制的仿生机器鱼以STM32 控制器为核心,搭载GPS 可以进行实时定位,搭载无线通信模块Lora 可以实现信息的交互,电源管理模块可以对电量进行实时监测和预警,利用双关节舵机实现前游和转向,利用水泵和水箱实现上浮和下潜。对机器鱼进行测试的结果表明,将红外测距传感器网络与模糊控制和规则控制相结合的复合避障方法可以有效实现机器鱼的三维运动和避障,并且避障成功率较高,在游动过程中扰动性低,同时机器鱼还能搭载水质传感器进行水质监测。