基于树莓派的目标追踪系统的设计与实现*

2021-11-21 07:19咸阳师范学院计算机学院杨丙丽曹佩蕾姚玉莹
数字技术与应用 2021年12期
关键词:树莓舵机图像处理

咸阳师范学院计算机学院 杨丙丽 曹佩蕾 姚玉莹

本文主要针对基于树莓派的机器人运动时的物体识别、视觉循迹避障、物体追踪等问题展开研究。借助树莓派平台,以其丰富的硬件接口和大量开源的软件资源作为研究基础,采用Python程序设计语言编程,使用可以连接树莓派的摄像头经行画面采集,利用OpenCV进行图像处理,设计了基于树莓派的目标追踪系统,以摄像头为感应,把获取的图像视频进行分析处理后,判断物体运动轨迹,判断路径遇到的障碍,与目标经行对比,实现物体追踪。

0 绪论

人工智能已是现在研究的热点,在不同领域的机器人研究中,都少不了有关机器人运动的研究,目前对机器人物体追踪领域已有研究,但针对不同领域的研究主题大不相同,在不同的研究中,根据设定的不同需求展开特定的研究,尤其在学术论文中涉及的更多,如西北大学张少博的学位论文《基于SSD物体追踪算法的增强实现系统设计与实现》[1],科学中国人期刊出版的《基于Processing的移动物体追踪定位》[2]等都介绍了有关机器人运动的研究。本文主要是基于树莓派针对小车机器人的运动物体识别所涉及的研究,在小车运行过程中,根据实际情况与设计的特定需求,对小车进行控制运动的方向,保证机器人的正常的运动,最终实现物体识别、物体避障、物体追踪。

1 研究基础

1.1 树莓派平台

树莓派是一个开放源代码的硬件平台,其本身拥有大量且丰富的硬件接口和开源的软件资源,可直接进行使用。

1.2 OpenCV

OpenCV是一个开源发行的可跨平台计算机视觉库,它可以运行在Windows系统、Linux系统、Android系统和Mac OS等操作系统上[3],可使用的范围非常广泛,并且提供了Python语言的接口,实现了图像处理与计算机视觉处理方面的通用算法,可以直接进行使用。

在本项目的研究过程中,主要是通过Python语言编写程序,用Python语言实现代码编写,运用Pygame和树莓派自身的小车运动函数,通过分析比较摄像头传来的图像、视频,判定小车的运动轨迹,前进方向。

在图像获取方面,利用网络连接摄像头获取实况图像,采用OpenCV自带的库函数VideoCapture对获取的图像进行读取[4],并通过傅里叶变换、Morpholigical过滤、高斯模糊处理、膨胀等图像处理方法进行处理,来得到更清晰准确的画面,通过读取的图像判断小车的运动方向。在物体追踪方面,OpenCV本身内部的追踪算法可以直接使用,大大方便了我们的研究,也让小车的运动追踪更加容易实现。

2 目标追踪系统的总体设计

小车的主控模块选用的是树莓派平台。树莓派是一种高性能、价格低廉的微型电脑,采用ARM架构,可运行Ubuntu Linux操作系统,基于此,在本项目中利用树莓派平台用Python语言作为系统开发程序语言。

本系统由摄像头、树莓派主板、舵机驱动板、开发板、电源等部分组成。其中树莓派主板为图像处理模块,通过Ubuntu Linux操作系统为控制模块,小车机器人为执行模块。树莓派一方面负责与摄像头连接进行环境图像采集与手势识别,另一方面利用串口通信方式将图像识别数据下发至Ubuntu Linux操作系统。根据物体运行的轨迹,结合物体识别的影像,要求树莓派读取摄像头采集到的图像信息并进行图片处理与物体识别,然后将物体识别结果发送到Ubuntu Linux操作系统,驱动板根据Ubuntu Linux操作系统计算得到的舵机数据进行小车机器人舵机控制,同时机器人自身传感器采集状态,将状态信息发送至Ubuntu Linux操作系统,形成闭环控制,完成对小车机器人的控制。摄像头连接,利用网络读取摄像头获取的画面[5],树莓派获取后进行分析处理,再将信息传输给舵机,控制运转,舵机作为转向驱动。penCV算法找出物体的轮廓,利用霍夫变换找出物体的中心坐标和半径。物体的追踪使用的硬件为支持树莓派的USB摄像头,使用的软件为OpenCV,应用算法,通过WiFi与RPI进行数据、图像传输,实现远程控制,电源模块可为系统供电。

3 控制系统硬件设计

本文主要采用树莓派4B主板作为核心,它主要通过控制小车机器人的舵机运动来获取运动画面,然后对图像经行处理。树莓派拓展部可集成电源芯片,支持相应的电源输入,然后通过拓展板对树莓派经行稳压供电。随后,将讯号发送给舵机,舵机根据控制信号调转角度,控制马达转动。

舵机是一种位置伺服驱动器,主要应用于需要不断变换角度并且保持持续状态的控制系统[6]。舵机主要由外壳、电路板、驱动马达减速器和位置检测原件构成,操作使用方便。舵机的工作原理是由接收器将信号发送给舵机,由电路板上的IC驱动核心马达开始转到,通过减速齿轮将动力传输给摇臂,同时再由位置检测器将检测到的信号传输回去,判断小车机器人运动位置是否合理,控制小车运动。

4 软件设计与应用

OpenCV在计算机视觉处理上应用的非常广泛,且其本身是一个开源的计算机视觉库,可以通过对摄像头获取的图像视频进行分析处理,使运动轨迹更为准确,主要功能是实现小车前进、小车后退、小车左转、小车右转、小车停止。

当启用系统后,会根据指令进行相应的运行,根据摄像头采集的画面,对图像进行分块处理,截取需要的区域,进行运算。根据不同的阈值,确定对应的识别范围。在小车运行中不断检测摄像头获取的图片来调整小车的前进方向,当检测到的白色色块宽度大于一定值时,则停止运动。利用OpenCV图像处处理的常用函数如图像读取、图像边缘检测、高斯模糊、膨胀、侵蚀、获取边界等算法函数对采集到的图像经行处理、识别,操控小车的正常运行,变换方向,找到应识别的物体,并在运动过程中避开遇到的障碍物。

5 核心算法

5.1 图像获取与分析处理

图像获取主要是依靠从连接的摄像头获取输入,利用OpenCV的cv2.VideoCapture(0)函数读入,通过在树莓派连接的显示器上创建一个显示窗口,显示读取得到的图像视频画面,并通过调整窗口的大小,来提高树莓派的处理速度和人眼观看的舒适程度。图像获取完毕后,根据需要,使用cv2.detectMultiScale()函数对图像进行灰度处理,利用傅里叶变换、Morpholigical过滤、高斯模糊处理、膨胀等图像处理方法进行处理,来得到更清晰准确的画面,便于后续的其他处理操作。

5.2 小车运动

在本文研究的范围中,小车的运动主要是小车前进、小车后退、小车左转、小车右转、小车停止五大基础动作。利用Import Adafruit_PCA9685,使树莓派控制舵机驱动板,将舵机初始化,设置好舵机脉冲宽度,根据脉冲信号控制舵机转动。利用树莓派的运动函数,设置好运动速度和时间参数,构架起小车运动的运行框架指令,设置调用的关键字命令,在运行过程中,根据指令选择相应的运动方向,控制小车的运动方向。

5.3 物体追踪

根据处理好后的图像,利用OpenCV中Rectangle函数对需要确定追踪或者研究的物体进行绘制一个矩形框,锁定目标物体,以便其在以后的运动过程中被我们观察到,并通过观察目标物体的运动轨迹,确定小车的前进方向,对其实现追踪。

在OpenCV中主要使用的追踪算法是KCF算法[7],利用cv2.TrackerKCF_creat进行调用。先由CF算法得到一个滤波矩阵,CF算法将相关滤波的方法用到极致,其核心思想是利用循环矩阵乘以图片,使图像产生位移,从而得到大量样本。把由位移得到的样本存在一个矩阵中就会组成一个循环矩阵。KCF算法通过平移产生大量样本,采集大量样本信息,并且给每个样本赋予一个标签,这个标签会根据离中心的距离,使用高斯分布描述,加快图像处理速度。

此外,还可以运用形态学动态检测,根据对目标物体的图像进行颜色提取、腐蚀、膨胀、高斯模糊、二进制“与”等进行不同程度的处理,是目标图像与其他图像区分开来,便于识别,来找到目标物体。具体实现过程如下:

先进性掩膜处理;

使用cv2.inRange函数提取图像中想要的颜色,并把图像中需要提取的颜色区域设置为白色,剩下的部分设置为黑色,实现语句m a s k=c v 2.i n R a n g e(h s v,ball_yellow_lower,ball_yellow_upper);

使用cv2.erode 函数,对图像进行腐蚀处理;加上高斯模糊,可以加强图像处理,使色彩更加突出,mask=cv2.erode(mask,None,iterations=2);

使用cv2.dila te函数对目标图像进行膨胀处理,ask=cv2.dilate(mask,None,iterations=2;

使用cv2.GaussianBlur函数,添加高斯滤波,mask=cv2.GaussianBlur(mask,(3,3),0);

使用cv2.bitwise_and函数对图像每一个像素值进行二进制“与”操作,res=cv2.bitwise_and(frame,frame,mask=mask);

使用cv2.findContours函数来检测目标图像中需要追踪物体的轮廓,对物体的轮廓进行处理

cnts=cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2] ;

最后通过比较cnts的值,进行对应处理。

6 检测实验

考虑到实验环境和小车机器人的稳定性,本项目测试采用室内检测的方式,在组装好设备及其他电源、网络连接良好的状态下,进行检测。

在小车运动检测实验中,主要是通过计算机指令控制小车的运动,判断小车是否按指令进行运动,运动状态情况如何,是否会出现不按规定指令错误运行、出现卡顿、小车随意运动等现象。同时,在运动过程中还可以打开语音播报功能,小车机器人可以根据即将进行的运动状态自己语言播报要进入的运动状态,作为运动提示音。

在图像获取测试中,首先打开摄像头,连接网络,在显示器上窗口中查看获取的图像及视频,观察是否可以正确获取图像及视频,以及图片的清晰度、色彩度等。并根据图像处理函数调用,观察图像处理后的效果,并与原图像进行对比,观察两组图像的区别。

在目标追踪测试中,本项目主要是通过追踪乒乓球进行实验。首先由摄像头获取乒乓球的运动图像视频,确定以乒乓球为研究对象,结合图像处理分析乒乓球的运动轨迹,同时树莓派将运动指令传输给舵机及小车,控制小车按照乒乓球的运动轨迹进行运动追踪,最后找到乒乓球。

在避障测试中,主要是在小车运动过车中增加障碍物,影响小车当前的前进方向,阻碍小车运动,观察小车是否根据设定信息,停止运动。

7 结论

本文分析了运动机器人的研究现状,并通过对研究基础的大量分析,确定了研究的可行性,对本项目从目标追踪系统的总体设计、控制系统硬件设计、软件设计与应用、主要功能实现具体介绍等四个方面介绍了研究的过程与方法。

经过研究发现,小车可以在正确的操作下运动,并转换方向,正确获取图像并处理分析,根据分析处理后的图像判断物体的前进方向,经行追踪,观察,最后找到目标物体;同时,在遇到障碍物时,也可以经行调转、避让、停止运动,实现了最初的设计构想。

但在实验中也遇到一些问题,如:每一个指令完成后需清除上一指令,才能经行后续指定任务,连接过程不稳定等。在测试的过程中,因环境限制,测试的目标物体单一,对于简单的物体基本可以实现小车运动及追踪。因此,该小车的运动测试还应加强,改进运行环境,增强测试难度,再继续发现并更正存在的问题。在本轮测试中,小车仍还有很大的提升空间,舵机结构、语句操控、摄像头、语音提醒的方面还有待在后续研究中提高。

引用

[1] 张少博.基于SSD物体追踪算法的增强现实系统设计与实现[D].西安:西北大学,2018.

[2] 张雯,白文乐,李浩进.基于Processing的移动物体追踪定位[J].科学中国人,2016(33):39.

[3] 欧阳森,张真.基于树莓派的预防性轻型除冰机器人行走控制系统设计[J].电气传动,2021,51(8):71-76.

[4] 薛志峰,蒋刚,留沧海,等.基于树莓派的手势交互六足机器人[J].传感器与微系统,2021,40(3):87-89.

[5] 刘昕.实时视频中选定物体追踪算法的研究[D].长春:吉林大学,2006.

[6] 杨志勇,黄文锋,刘灿.基于树莓派的远程控制智能拍照小车[J].现代电子技术,2019,42(8):168-170+174.

[7] 张建鹏.基于KCF的视频中运动物体的跟踪算法研究[D].兰州:兰州交通大学,2019.

猜你喜欢
树莓舵机图像处理
含齿隙弹载舵机的全局反步模糊自适应控制
基于树莓派的骑行智能头盔设计
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
基于dsPIC单片机的飞艇舵机控制实现
基于树莓派的远程家居控制系统的设计
基于高速同步485总线通信的多通道舵机控制器设计
基于图像处理的定位器坡度计算
响应面法优化红树莓酒发酵工艺
基于云模型的舵机同步控制