高速三尾智能机器鱼设计


本项目的关键技术包括3D建模技术、舵机控制技术、巡线算法设计、漏油点检测算法设计、图像处理技术、报警技术和仿真分析技术。3D建模技术可以构建出理想的原型样机。舵机控制技术是保证鱼尾能够实现动态平衡和灵活运动的关键技术。巡线算法设计采用对比度算法进行巡线,并且对管道进行提取和消除反光处理,实现了对管道的快速准确的检测和跟踪。漏油点检测算法设计采用了一种基于RGB模型的算法,可以将漏油点从背景中分离出来,并进行检测和统计。图像处理技术中的图像分割和区域处理等关键技术也为巡线算法提高了运算速度。报警技装置包括LCD显示屏、扬声器和小旗子等。仿真分析技术在实际运行和调试过程中对作品进行了进一步优化。机器鱼通过视觉模块进行巡线和漏油点检查,通过语音播报、液晶显示屏变化进行漏油点警告和统计,启动方式为WIFI远程启动,停止方式为视觉识别自动停止。


研究背景

海洋石油污染是海洋污染中主要而复杂的污染问题之一。进入海洋环境的石油种类和途径很多,例如海洋石油勘探、开采和冶炼、海事溢油和船驳排污,以及陆源工业废物的海洋排放等,各种不同方式输入到海洋环境中油的种类各不相同,对海洋环境的危害程度和污染处理技术上的复杂程度也千差万别,因而使之成为海洋环境保护的一大难题1
因此,设计一种能够快速准确地检测漏油的机器人具有重要意义。该机器人能够检测出漏油源的位置和漏油的数量,并及时采取措施,以减少漏油对环境和人类的影响。


设计方案

硬件结构

仿生机器鱼通常参照鱼类游动的推进机理,利用机械、电子元器件或智能材料来实现水下推进的运动装置2。本研究的三尾鱼硬件结构包括五个部分:控制装置、视觉装置、动力装置、报警装置和供电装置。树莓派4B是控制装置的核心,完成处理摄像头采集的数据,检测漏油点,控制舵机和发出警报等任务。视觉装置由摄像头负责巡线和检测漏油点等任务。动力装置由三个舵机和橡胶仿生鱼尾组成,通过控制舵机旋转来控制鱼尾的运动。报警装置由LCD显示屏、扬声器和小旗组成,用于显示漏油点数量,发出声音警报和视觉提示。供电装置采用锂电池,并加入稳压器和低压报警器保证电路板正常工作。3D模型概念图如图1所示,实物图如图2所示。
图1 三尾鱼3D模型
图2 三尾鱼实物样机

模型与算法

多进程

本研究使用了 Python 的 multiprocessing 模块,实现了多进程通信。具体来说,本研究创建write_process和read_process两个进程,分别执行 action_1 和 action_2 函数。这两个函数通过一个 对象进行通信,其中 action_1 函数不断地读取摄像头数据,处理后实现漏油点警告并输出运动信息t,并将结果t存储在 中,而action_2 函数则从 中读取数据t并执行相关运动程序。
通过多进程的方式,可以让action_1 和action_2 函数并行地执行,提高了程序的效率和可靠性。同时,由于两个进程之间通过 进行通信,实现了数据的共享,使得程序的实现更加灵活和可扩展。实现原理如图3所示。
图3 代码框架及流程图

音频报警算法

本研究通过音频播报的方式来进行漏油点的警告,当检测到漏油点时,触发audio(p)函数运行.wav文件。
函数audio(p)是播放音频文件。它有一个参数 ,表示音频文件的文件名(不包括文件扩展名),例如,如果要播放名为 music.wav 的音频文件,那么 的值应该是 music。在函数体内,首先使用 pathlib 库中的 Path 函数生成音频文件的路径,这里使用了 f-string 格式化字符串语法,将参数 插入到字符串中生成完整路径,例如 music.wav。然后,使用 OMXPlayer 播放器来播放音频文件。OMXPlayer 是一个基于 OpenMAX IL 接口的命令行媒体播放器,可以在树莓派上播放音频和视频文件。在这里,使用 OMXPlayer 的构造函数来创建一个 player 对象,并将音频文件路径作为参数传递给它。最后,调用 player 对象的 Stop() 方法来停止播放器。这个方法会停止当前正在播放的音频文件,并释放相关资源。

视频显示算法

本研究采用LCD显示屏统计漏油点个数,当检测到漏油点时,触发screen(p)刷新屏内容,达到实时展示已经被检测到的漏油点个数的效果。
函数screen(p)用于在树莓派上连接的ST7789显示器上显示图像和文本。首先,代码使用Python标准库logging设置日志记录级别。然后,使用Pillow库中的ImageFont模块加载字体文件,并将其用于绘制文本。接着,使用try-except结构,在可能出现的错误情况下,代码将执行相应的异常处理。在try语句块中,调用名为ST7789的类,并使用Init()方法初始化显示器,使用clear()方法清除屏幕上的任何内容。接下来,代码创建一个图像对象,并将其填充为白色。然后,代码打开一张名为p.img将其粘贴到图像对象的左上角。接着,代码创建一个ImageDraw对象,并使用text()方法将文本插入到图像对象中。最后,代码使用rotate()方法将图像翻转180度,并使用ShowImage()方法将其显示在显示器上。如果用户按下Ctrl-C键,则将记录一条日志信息,然后退出程序。

巡线功能算法

本研究对比度算法进行巡线,首先提取图片四个角落的像素点作为基准点确定水面参考色域,然后根据管道与参考色域的对比度提取管道,在对管道进行精准定位后算出管道质心,最后通过质心所在的位置判定运动信息。最终处理效果如下图4所示。
图4 巡线功能算法图像处理效果

  1. 确定水面参考色域
    首先选取特定行列进行色域分析,转换为HSV色域。选择四角的四个参考点,转换为HSV并计算与蓝色参考色域的差值。遍历参考点数组,更新差值更小的点为当前参考点,选择与参考色域最接近的点作为最终参考色域$[H_{0}, S_{0}, V_{0}]$。
  2. 提取管道位置
    首先提取像素点在 HSV 色域中的 S 值,计算其与参考点的差值。用 inRange 函数,将中 S 值小于参考点80的像素点设为0,再将 中 S 值小于30的像素点设为0。最后对 和 进行逐像素乘法,得到去除蓝色和反光的结果,成功提取管道。

  3. 计算管道质心
    首先确定目标检测行,再计算每行目标像素数量。将每一行的质心横坐标的质心横坐标的平均值,并将对应的 Y 中的值求平均。则目标的质心坐标为$(pos_x,pos_y)$:

  4. 判定运动信息
    本研究采用极坐标系来判断运动信息。首先,以图像中心$(x_0,y_0 )$为原点,建立极坐标系。已知质心坐标为 $(pos_x,pos_y)$,则其极坐标为 $(ρ,θ)$,其中:运动信息与极坐标(ρ,θ)的对应关系如下图5所示。图5 运动信息判定示意图

漏油点检测功能算法

本研究使用BGR阈值限制,判断像素是否为漏油点。使用inRange函数得到二值图像n1和n2,元素级别与运算得到像素总数n。通过滑动窗口计算最近10个检测到的漏油点像素总数,若大于等于40,触发声音报警和屏幕报警。

运动控制算法

本研究使用了脉冲宽度调制PWM技术,舵机的控制信号占空比范围为[2.5%,12.5%],占空比ε的变化与舵机的单边转动角度φ线性关系如下所示。

尾鳍摆动幅值和频率是影响尾鳍推进仿生机器鱼游动速度的重要因素3。本研究通过中立位置占空比w和单边转动角度φ来决定占空比ε的大小。在相同的运动学参数下,振幅不变的鱼鳍波动模式产生更大的推进力,具有更高的游动稳定性4。如图6所示。
图6 舵机控制示意图

运动模型及性能分析

  • 建立运动模型

    关于鱼类运动的流体力学原理的研究,有助于实现高效推进下如何保持高机动性,稳定性等问题5。基于牛顿第二定律,通过对三尾鱼运动时的受力进行分析,可建立三尾鱼的运动模型如下所示,

    图7 三尾鱼受力分析

  • 结果分析
    通过四阶龙格库塔法对微分方程组进行求解,可得三尾鱼不同运动状态下的运动轨迹与运动速度,如图8、图9所示,可知三尾鱼具有较高的机动性能。可得三尾鱼船头运动速度和运动角速度峰值分别约为$1 \times 10^{-3}$ rad和$1 \times 10^{-2}$ rad/s,如图10、图11所示,表明三尾鱼具有较强的横侧稳定性,且前端摄像头不易被干扰。
    图8 运动速度
    图9 运动轨迹
    图10 船头角度变化
    图11 船头角速度变化

创新特色

  1. 本作品采用3D建模技术设计出理想的原型样机,并结合实际制造出机器鱼原型,实现了从虚拟到实际的转化,提高了制作效率和准确性。
  2. 动力装置采用三个舵机及其仿生鱼尾,并且通过两侧舵机非镜像运行修正了由于中间鱼尾产生的偏流现象,相比传统单尾机器鱼,三个动力装置同时运行可产生更大和更稳定的动力,提高了机器鱼的横侧稳定性和速度。
  3. 巡线算法采用对比度算法提取管道并除去反光而不是传统的HSV模型,该算法中的颜色参考点随着环境的变化而变化,可以有效地解决管道颜色和环境光线变化带来的干扰,并且有效除去水面反光等干扰因素,提高了管道跟踪的准确率与便捷性。
  4. 本作品选取特定的关键行列进行图像处理,而不是遍历图片中所有像素点,加快了程序运算速度,提高了机器鱼的实时性和修正性能。
  5. 本作品通过仿真分析技术,使用四阶龙格库塔法求解微分方程组,将数据可视化并进一步优化,提高了作品的设计和优化效率。

应用前景

本作品具有广阔的推广前景。首先,在海洋漏油事故中,机器鱼的使用可以大大缩短响应时间,提高漏油点的定位和检测准确率,减少漏油造成的环境和经济损失。其次,该机器鱼可以应用于其他需要在水下环境进行检测和探索的领域,如水下管道维修、水下资源勘探等领域。最后,该机器鱼还可以应用于水下科学探索和教育领域,为学生和科研人员提供一个更加直观的水下观测和实验平台。因此,本作品的推广前景非常广阔,具有重要的社会和经济价值。


  1. 1.Dhavalikar Anagha S., Choudhari Pranali C.. Detection and Quantification of Daily Marine Oil Pollution Using Remote Sensing[J]. Water, Air, & Soil Pollution, 2022, 233(8).
  2. 2.Tian Qunhong, Wang Tao, Wang Yunxia, Wang Zhiwei, Liu Cuiwei. A two-level optimization algorithm for path planning of bionic robotic fish in the three-dimensional environment with ocean currents and moving obstacles[J]. Ocean Engineering, 2022, 266(P3).
  3. 3.葛立明, 李宗刚. 尾鳍推进仿生机器鱼速度优化[J]. 兰州交通大学学报, 2016, 35(3): 18-23.
  4. 4.章永华, 何建慧. 仿生鱼鳍波动推进模式对游动性能影响的数值研究[J]. 机械科学与技术, 2013, 32(3): 435-440.
  5. 5.夏全新, 鲁传敬, 吴磊. 鱼类波状摆动推进的数值模拟[J]. 水动力学研究与进展:A辑, 2005(z1): 921-928.
分享到