张 川,喻 盈,黄晨华,文小玲
(武汉工程大学 电气信息学院,武汉430205)
水质监测仿生机器鱼作为一种灵活全方位的监测方法,成为近几年国内外研究的热点。仿生机器鱼具备仿生学外形,不仅成本低、便携性好,而且可以有效地减少对环境的破坏和影响,提高监测结果的准确性,因此将仿生机器鱼应用于水质监测有很大的优势。但是,水下环境未知且复杂,需要设计合理、高效的避障算法让机器鱼快速、安全完成水质监测任务。在仿生机器鱼避障传感器的选用及避障算法方面,国内外专家和学者开展了很多的研究。
在避障传感器方面,文献[1]采用了一个水下声呐系统作为避障传感器;文献[2]采用了红外传感器作为避障传感器。声呐传感器和红外传感器的本质相同,都是利用是否产生反射声波或者光波来判断前方是否有障碍物,虽然可以完成避障,但是无法检测障碍物的距离,也就没有办法做到对机器鱼进行更加精准的运动控制。
韩国中南国立大学(Chonnam National University)[3]将红外传感器和扫描红外传感器相结合,利用扫描红外传感器识别障碍物的形状,在一定程度上提高了运动控制的精确度,但是对于图像形状的分析较为复杂,并且会占用较多处理器的资源。在避障算法方面,文献[4]提出了一种基于快速扩展随机树(RRT)的避障算法,其在传统RRT 算法的基础上减少了节点的数量,并且增加了一个偏置函数,加快了搜索的速度,但是随机树有可能无法找到终止条件;文献[5]针对于三维水下环境,提出了一种基于生物激励神经网络的避障算法,将神经元与水下网格地图位置一一对应,利用神经元的活动值完成水下三维避障,并通过仿真结果验证了该算法的有效性,但是神经网络参数的调试以及训练过程具有不可控性,且过程较为漫长。
本文对于机器鱼的水下三维避障采用了计算量较小、鲁棒性强、实时性好的模糊控制算法。首先从通过分析水质监测机器鱼在水下的上浮、下潜、前进和转向运动方式,充分考虑水质监测所需要的稳定条件,得出机器鱼的运动控制方法,并进行仿真建模与分析。
水质监测仿生机器鱼的整体装配实物图如图1所示,工程图具体尺寸如图2所示。
图1 仿生机器鱼实物图Fig.1 Bionic robotic fish in kind
图2 仿生机器鱼的结构Fig.2 Struture of bionic robotic fish
水质监测仿生机器鱼的工作流程如图3所示。首先将机器鱼放置在水面,由终端(手机或者电脑)向机器鱼的无线模块发送目标位置,机器鱼进行目标位置与自身位置比对后游向目标点,到达目标地点通过传感器采集水质参数。由于水下通信受限,因此先将水质参数存储在内存卡中,采集结束后上浮至水面,最后通过无线模块将数据发送到终端,这样就完成了一次采集。由于水质数据短期内不会发生急剧的变化,因此每隔一段时间多次采集就可以实现对目标位置水域水质参数的监测。
图3 水质监测仿生机器鱼的工作示意图Fig.3 Water quality monitoring work diagram of bionic robotic fish
通过工作示意图可以看出,避障贯穿了整个监测过程,成功避障是完成水质监测的关键前提条件。
仿生机器鱼在进行水质监测的过程中,其运动方式分为前游、转向、上浮和下潜4 种。
2.1.1 前游
机器鱼采用尾鳍双关节推进模式,用舵机作为动力源。相比于伺服电机、步进电机等,舵机具有稳定性好、激活和响应迅速、结构和控制简单的优点。采用微控制器产生PWM 信号,并通过改变PWM 脉冲的宽度就可使舵机实现0°~180°旋转。
采用双关节的结构,既可保证机器鱼实现二维平面运动又能最大程度地降低机器鱼结构和控制的复杂程度。机器鱼尾部摆动示意图如图4所示。在机器鱼前进过程中,2 个关节摆动角度的幅值为正弦函数,幅值不同,周期不同,第2 关节摆动角度幅值的正弦函数相位滞后于第1 关节正弦函数的相位180°。
图4 机器鱼前进时尾部摆动示意图Fig.4 A diagram of tail swing of the robotic fish when going forward
忽略外界环境的影响,对双关节机器鱼进行运动分析可以得到关节摆动角度的数学模型为
式中:A1为第1 关节摆动的振幅;T1为第1 关节摆动的周期;A2为第2 关节摆动的振幅;T2为第2 关节摆动的周期。
根据对鳇科鱼类鲤鱼的实际观察,双关节机器鱼在无障碍物正常游动时,α 的幅值为20°,β 的幅值为40°,周期均为0.25 s[6]。由此可以计算出第1 关节舵机的最小转动速度为5.5851 r/s;第2 关节舵机的最小转动速度为11.1701 r/s。但是,根据舵机具体参数,其在4.8 V 电压下最大空载转动速度为7.5000 r/s;6.0 V 电压下最大空载转动速度为8.7266 r/s。由此可知,实际的舵机无法满足第2 关节舵机的转动速度要求,为此选择延长舵机的转动周期,使2 个舵机能够在实际参数条件下满足摆动幅值条件的同时保持周期一致,并考虑环境阻力,得出周期为0.35 s,采用6.0 V 电压供电,在舵机速度无法改变的情况下,可通过增加小的延时来使周期为0.35 s,最后可得机器鱼以正常速度直线游动时各关节的实际数学模型为
关节角度的波形如图5所示。
图5 正常速度关节角度波形Fig.5 Normal velocity joint angle waveform
2.1.2 转向
机器鱼的转向与前游的原理类似,据观察鳇科鱼类鲤鱼在实际转弯时,机器鱼以很低的角速度和恒定线速度转弯,其中α 的最大幅度约为45°,β 的最大幅度约为60°,周期均为0.3 s[1]。综合实际转弯情况和机器鱼前游计算得出的参数,将周期设定为0.35 s,在转向时,α 根据障碍物的位置固定为对应的角度,数学模型为
式中:k根据转向情况固定为一定角度,其范围为[-45°,45°]。
目前控制机器鱼上浮与下潜的方法主要分为改变重心法和改变重力法两类。考虑到机器鱼在采集水质参数时,整个装置应该保持静止,因改变重心法需要机器鱼一直产生动力来克服浮力或者改变重力来完成下潜和上浮,而改变重力法可以通过改变自身重力来与浮力相平衡使机器鱼处于静止状态,以提高水质参数的准确性,因此采用改变重力法。
通过控制2 个水泵(进水泵和出水泵)向水箱抽水和排水来改变机器鱼本身的重力实现机器鱼的上浮下潜,其控制流程如图6所示。
图6 机器鱼上浮下潜控制流程Fig.6 Robot fish snorkeling and diving control flow chart
为了实现机器鱼上浮下潜的精准控制,采用了PWM 作为控制信号的水泵,可以最大限度保持整个装置的稳定性,从而成功避障。根据模糊控制算法,当需要上浮或者下潜时,单片机根据需要上浮或下潜的距离产生PWM 信号去控制排水水泵或者抽水水泵,并且PWM 信号在机器鱼快要上浮或者下潜到所需距离时,占空比逐渐减小以减慢上浮或者下潜的速度,水泵PWM 信号控制仿真如图7所示。
图7 水泵PWM 信号控制仿真波形Fig.7 Pump PWM control simulation waveform
机器鱼搭载5 个红外测距传感器,分别位于机器鱼鱼头位置的正前方(FIRS)、左侧(LIRS)、右侧(RIRS)、上侧(TIRS)以及下侧(BIRS),其中上、下侧的红外测距传感器都向前倾斜一定的角度;左侧和右侧红外测距传感器向内倾斜一定的角度,安装位置如图8所示。
图8 红外测距传感器安装示意图Fig.8 Infrared ranging sensor installation diagram
根据红外测距传感器的配置,以及水质监测的实际要求,设计了3 个模糊规则库,分别为速度模糊规则库、转角模糊规则库以及上浮下潜模糊规则库。
将5 个红外测距传感器测得的最小值表示为
1=min{FIRS,LIRS,RIRS,TIRS,BIRS}
其中:论域为[10,80];模糊子集为{远(F),中(M),近(N),很近(NT)};输出速度系数V的模糊子集为{VN(正常速度),VM(中速),VS(慢速),VSM(最慢速)};速度系数V的论域为[1,0.8,0.5,0.2]。根据机器鱼的尺寸规定一个安全距离为60 cm,实际的最大检测距离设定为80 cm,当>60 cm(对应模糊子集为:远(F))时,机器鱼按照式(2)对应的摆动数学模型所对应的速度运动(VN(正常速度)),其它速度以式(2)为基础做相应改变即可,速度系数模糊规则如表1所示。
表1 速度模糊规则Tab.1 Speed fuzzy rule
将左侧(LIRS)红外测距传感器与右侧(RIRS)红外测距传感器所测距离的差值表示为
ε=LIRS-RIRS
根据左右两侧红外测距传感器的检测范围为[10,80],再加上一定的裕度,可得其论域为[-80,80]。当ε 为正值时,其值越大则表明障碍物离机器鱼右侧越近;当ε 为负值时,其值越小则表明障碍物离机器鱼左侧越近。当出现左侧(LIRS)与右侧(RIRS)红外测距传感器所测距离相等的情况时,有两种情况:一是障碍物位于两传感器中间;二是前方没有障碍物,这时需要借助于前侧(FIRS)传感器辅助判断。
ε 的模糊子集为{左远(LF),左中(LM),左近(LN),相等(EQ),右近(RN),右中(RM),右远(RF)};输出转向角度Φ 的模糊子集为{NB(负大),NM(负中),NS(负小),Z(零),PS(正小),PM(正中),PB(正大)},根据第2 节的转向运动模式,转向角度α 的论域为[-45°,-30°,-15°,0°,15°,30°,45°];转向角度模糊规则库如表2所示。
表2 转向角度模糊规则Tab.2 Steering angle fuzzy rule
上浮下潜避障与前游避障不同,上浮下潜避障时,应该让机器鱼加速游动,这样才能更有利于避开障碍物;而前游避障时,则需要减速游动,避免速度过快来不及转向而撞到障碍物;当两者同时发生时,应该减速[7]。在只需要上浮下潜避障时,考虑到水质监测的稳定性要求,机器鱼选用正常速度游动,不采用加速措施;考虑到机器鱼的高度以及上侧和下侧传感器倾斜的角度,设定上侧和下侧的安全距离为40 cm,将上侧(TIRS)和下侧(BIRS)红外测距传感器的实际最大测量距离设置为80 cm,这样设置的目的是当上侧与下侧红外传感器的测量值中一个小于安全距离40 cm,而另一个在40~80 cm 之间时,可以计算出上浮或者下潜的距离,其论域为[10,80],模糊子集为{上远(TF,>40 cm),上近(TN,<40 cm),下远(BF,>40 cm),下近(BN,<40 cm)};上浮下潜对应模糊规则如表3所示。
表3 上浮下潜模糊规则Tab.3 Snorkeling and diving fuzzy rule
利用Matlab 进行仿真,设定一个10×10×10 的三维空间,在其中设置有密集障碍物以及单个障碍物,图中红色边框的方框为单个障碍物,共有4 个,其余方块是密集障碍物,设定一个起点(图中红色圆点),一个检测点以及一个位于检测点上方的回传数据点(图中均为绿色圆点),红色实线是机器鱼运动的轨迹,机器鱼首先从起点游动到检测点,检测完成后上浮至水面回传数据,数据回传完毕后返回起点,这样就完成了一次水质检测的仿真,仿真结果如图9所示,三视图分别如图10、图11 以及图12所示。
图9 三维避障仿真图Fig.9 3D obstacle avoidance simulation
图10 三维避障仿真正视图Fig.10 Positive view of 3D obstacle avoidance
图11 三维避障仿真俯视图Fig.11 Top view of 3D obstacle avoidance
图12 三维避障仿真右视图Fig.12 Right view of the 3D obstacle avoidance
从仿真实验结果可以看出,在机器鱼完成一次水质检测仿真过程中,机器鱼可以通过转向、上浮以及下潜运动方式避开障碍物。仿真结果表明,采用本文的模糊控制避障算法,无论对于密集还是单个障碍物,机器鱼都可以有效地避开障碍物并到达目的地。
通过对机器鱼运动模式的研究,结合双关节舵机的驱动原理,得出机器鱼运动的数学模型;通过对5 个位置的红外测距传感器数据进行综合分析,得出速度、转角以及上浮下潜的模糊控制策略;最后在Matlab 中搭建三维空间,设置单个和密集的障碍物,实现了机器鱼在三维空间中的避障算法,并且模拟了机器鱼检测一次水质数据的路径。仿真结果验证了所提出的基于模糊控制的三维避障方法的可行性。