基于OPENCV手势识别的启蒙教育机器人的设计与实现

时间:2019-10-29来源:电子产品世界

  祝朝坤,魏伦胜 (郑州工商学院,河南 郑州450000)

  摘 要:基于视觉的手势识别与远程控制机械手相结合,通过摄像头采集用户的手势图像并提取手势命令,转换为机械手舵机的控制命令并通过无线蓝牙发送至机械手控制单元,实现视觉手势对机械手的远程控制,使操作简洁化。机械手端则由两个STM32协同进行控制。符合低龄儿童启蒙期的学习智商,帮助低龄儿童学习,娱乐,启蒙教育。从小培养儿童的学习积极性。

  关键词:OPENCV;STM32;无线传输;手势识别;启蒙教育

  0 引言

  在国外,机器人教育一直是个热点:早在1994年麻省理工学院(MIT)就设立了 “设计和建造LEGO机器人”课程(Martin),目的是提高工程设计专业学生的设计和创造能力。 随着机器人技术的进一步发展,机器人除了智能程度在持续提高,其应用范围也从工业向各个行业渗透。目前市面上的早教机器人仍是传统的人机交互模式,在当今人工智能全球化背景下,这一类型的智能机器人已经逐渐落后,无论是在先进性还是智能性,都对传统的人机交互提出了更多的要求。本设计对早教机器人加以更新型的改进,使得人机交互更加智能,更加符合时代潮流。

  1 启蒙教育机器人的设计框图

微信截图_20191112164832.jpg

  由图1可知:启蒙教育机器人主要分为两大系统,分别是手势识别系统和机械手控制系统。手势识别系统由PC端摄像头采集手势信息,进而通过OPENCV以及相应的算法进行图像预处理,从而得到手势所包含的控制指令;最后将手势指令信息通过无线蓝牙发送至机械手控制系统,按照设定程序,将运动指令转换为机械手各个舵机和语音模块的控制指令,通过各舵机的协同操作实现运动效果和不同功能从而实现更加智能的早教机器人,帮助孩子提升学习的兴趣。

  2 启蒙教育机器人的硬件设计

  本设计采用以STM32F429ZI6为核心,加载超声波测距模块、语音识别模块、蓝牙模块、TTS串口转语音播放模块、扩展SD卡模块、MP3播放器模块以及最核心的机械手舵机控制模块,通过各种硬件的配合从而实现了各种功能。其中STM32承载了全部的计算任务,是整个设计的“大脑”,而机械手和各类传感器则是设计的手足和五官,从而进行运动和收发信息的功能,该设计的整体电路如图2所示。

1573548664160632.jpg

  2.1 语音识别模块

  语音处理技术是人机交互的核心技术之一,随着智能化的提升,越来越多的场景需要用到语音处理技术,HBR740可以很简单地配置语音命令,实现语音识别功能。其系统架构如图3:

微信截图_20191112164856.jpg

  在该设计中,使用语音识别主要进行控制五大模式,为了使得识别误差更低,则采用二级指令进行校准识别。

  2.2 无线蓝牙通信模块

  机器人在进行手势识别时,用到的OpenCV手势识别技术需要在PC端进行操作,在PC端与机械手控制系统的信息传输中将手势指令信息通过蓝牙发送至机械手接收单元,故蓝牙模块的无线传输功能是两个系统沟通的桥梁,有着极为重要的作用。

  2.3 MP3播放器模块

  VS1003是一个单片MP3/WMA/MIDI音频解码器和 ADPCM编码器。在本设计中,其接收输入的MP3数据,经过VS1003内置的采样DAC转换为音频模拟量,最后通过Left﹑Right输出,该模块主要用于“儿歌播放模式”以及“讲故事模式”中进行音乐以及故事的播放。

  2.4 TTS串口转语音播放模块

  TTS串口转语音播放模块只需要用串口发送中文指令及可以实时输出语音,可以很方便地将文字转化为语音。本设计中使用该模块用来进行语音提示。例如总控制系统通过语音识别进入到猜拳模式时,该模块会播报“已进入猜拳模式”,从而提醒使用者机器人当前位于哪种模式,实现更加人性化的设计。

  2.5 超声波模块

  HC-SR04超声波测距模块可提供2cm至400cm的非接触式距离感测功能,本设计采用超声波传感器感应是否有人位于启蒙教育机器人的前方,从而判断是否触发自启动模式。

  3 启蒙教育机器人的软件设计

  3.1 软件设计概述

  软件设计主要分为两大部分,第一部分是PC端的OPENCV手势识别算法,其配合USB摄像头进行实时的手势图像采集;第2部分是STM32端的程序设计。

  3.2 OPENCV手势识别

  手势是一种人类的基本特征,手势识别技术的发展,为人与机器或其他设备的交互提供了可能。根据手势在时间和空间上的差异,手势可分为静态手势和动态手势,对静态手势的研究主要考虑手势的位置信息,而研究动态手势除了要考虑手势空间位置变化,还需要考虑手势在时序中的变化规律。

  整个设计中具有决定性地位的便是OPENCV动态手势识别算法,它是整个系统的核心。

  3.2.1 手势识别算法分析

  通过摄像头来完成对图像的捕获工作,摄像头类似人眼,对周围的环境和运动目标有着较强的感知能力。而摄像头获取的图像颜色信息非常丰富,直接用来进行识别和检测,会降低跟踪和识别效果,而通过颜色空间转换、降噪操作、二值化等方式处理之后,再用与识别和检测,效果会大大提升,其过程被称为图像的预处理过程。

  3.2.2 HSV颜色空间

  HSV 是由色调、饱和度、 亮度组合而成的,属于非线性色彩系统,如图4所示的圆锥体子集所组成的模型即为HSV模型:

微信截图_20191112164905.jpg

  HSV模型和RGB模型之间有着紧密联系,并且可以相互转换,而通过这种转换,最大的好处就是不同的颜色有着不同的HSV参数值,若取值V=S=1,则从色彩开始,颜色空间会随着黑白两种色彩的变化而变化,当不断增加白色时,发现参数V的值会保持不变,而参数S的值却会减小,正是由于这种特性,才便于对手势图像的预处理,有利于对动态手势的跟踪监测,且其受干扰程度很低,更方便后续的形态学噪声处理。

  3.2.3 OPENCV手势轮廓提取与指尖标定

  将基于肤色分割的类肤色图像与基于运动前景分割的动态手势图像进行与操作,得到手势的二值图像。该图像已排除了大部分类肤色区域,但仍包含较多的斑点噪声。因此,需要对该图像进行形态学处理消除这些区域,以减少后期手势识别过程中的干扰信息。采用OPENCV开源视觉库中的轮廓操作函数:轮廓查找( ovFindContours),轮廓绘制( cvDrawContours),轮廓凸包查找(ovConvexHull2),凸缺陷查找(cvConvexityDefects)。从图像中提取出可以描述连通域的特征分量:轮廓、骨架、凸包和凸缺陷,进而进行手势轮廓提取。

  对于设计中的指尖标定,采用最大曲率法可以求取图像上各点处的曲率,设置相应的阈值,提取到指尖和指缝,再根据其他条件分离指尖和指缝,最终实现指尖定位。这种方法很好滴避免了手腕和手臂上的干扰点对指尖定位的干扰,且曲率大小与手势朝向无关,这样增加了手势识别的灵活性以及准确性。

  3.2.4 手势识别核心代码

int main(){

MyImage m(0);//图像采集初始化

HandGesture hg;//定义手势采集信息变量

usartinit();//串口初始化,用于蓝牙发送到

STM32端

init(&m);//初始化颜色空间

m.cap>>m.src;

n a m e d W i n d o w ( “ i m g 1 ” , W I N D O W _

KEEPRATIO);//输出手势轮廓提取的图像

out.open(“out.avi”, CAP_OPENCV_

MJPEG, 15, m.src.size(), true);//输出实时的摄像头图像

waitForPalmCover(&m);//手势分割

average(&m);// 图像二值化

destroyWindow(“img1”);//关闭图像输出

initWindows(m);//初始化窗口

initTrackbars();//初始化拖动条

for(;;){

hg.frameNumber++;

m.cap>>m.src;

flip(m.src,m.src,1);//图像反转

pyrDown(m.src,m.srcLR);// 对图像进行高斯平滑,然后再进行降采样

blur(m.srcLR,m.srcLR,Size(3,3));//均值滤波

cvtColor(m.srcLR,m.srcLR,ORIGCOL2COL);//颜色空间转换

produceBinaries(&m);// 生成二进制

cvtColor(m.srcLR,m.srcLR,COL2ORIGCOL);//颜色空间转换

makeContours(&m, &hg);\计数

hg.getFingerNumber(&m);//输出手势识别的数字

showWindows(m);//打开窗口

out <<m.src;

if(cv::waitKey(30) == char(‘q’)) break;

}

destroyAllWindows();//关闭所有窗口

out.release();//向外释放内存空间

m.cap.release();

return 0;

}

  手势识别测试如图5:

微信截图_20191112164918.jpg

  3.3 STM32机械手程序功能设计

  在设计组成的两大关键中,机械手控制是不可或缺的一部分,当上位机识别手势识别完成后,将识别结果通过蓝牙传输发送至机械手控制系统。控制系统则进入相应的模式,完成各项指令任务,总程序分为若干部分,分开执行,其大致流程图如图6所示。

微信截图_20191112164924.jpg

  4 总结

  启蒙教育机器人其适用人群为儿童,当前市场上也有很多的儿童早前教育机器人。然而真正与手势识别完全结合在一起的却少之又少,与手势互动的更是几乎没有。因此,本文中的启蒙教育机器人在设计之初就为了能与儿童有更多的互动,增加其学习的兴趣,实现手势识别技术在人机交互中的创新意义。其对于启蒙教育而言则有了新的进步,能帮助儿童进行早期学前启蒙,是处于全球人工智能背景下的设计,实现了人工智能技术在教育领域的前沿探索。

  5 参考文献

  [1]张瑞,焦晓琼.基于OpenCV的图像处理技术在国画中的应用[J].自动化与仪器仪表,2019(09):226-229.

  [2]杨帆,徐军.基于人脸识别技术的电源开关控制系统[J/OL].传感器与微系统,2019(09):93-95,98[2019-10-09].

  [3]李杰,刘子龙.基于计算机视觉的无人机物体识别追踪[J/OL].软件导刊:1-5[2019-10-09].

  [4]王禾生,梁维保.一种自动夹取及码垛的机械手装置设计[J].机电信息,2019(27):103-104.

  [5]侯勇,毛润华,何献章,张晓宇,李金桐.CNC多工位自动上卸料机械臂设计[J].制造业自动化,2019(09):125-128,148.

  [6]周挺,杨荣.多媒体网络语音音调数据特征智能识别方法[J].自动化与仪器仪表,2019(09):132-135.

  [7]梁慧.嵌入式英语语音识别系统误差自动检测方法研究[J].自动化与仪器仪表,2019(09):55-58.

  作者简介:

  祝朝坤,男,硕士,主要研究方向:嵌入式系统、模式识别与图像处理

  魏伦胜,男,本科,主要研究方向:嵌入式系统、图像处理

  本文来源于科技期刊《电子产品世界》2019年第11期第77页,欢迎您写论文时引用,并注明出处。

关键词: 201911 OPENCV STM32 无线传输 手势识别 启蒙教育

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版