APP下载

基于openmv智能机械手臂创新实践课程探索

2018-01-20李晋

电脑知识与技术 2018年31期
关键词:微控制器图像识别工程技术

李晋

摘要:图像识别技术的普及和应用在工程技术领域扮演很重要的角色,受制于硬件方面的限制,过去图像识别大多停留在理论研究环节,随着高性能微控制器芯片的诞生以及图像识别研究的成功,越来越多的工程应用将涉及这一技术。为了提高高等教育在工程技术教育的先进性,可以直接使用已有开源技术实现图像识别在教学上的应用。

关键词:工程技术,图像识别,微控制器,高等教育

中图分类号:G640      文献标识码:A      文章编号:1009-3044(2018)31-0197-03

Exploration of Creative Practical Course on AI Mechanical Arm with Openmv

LI Jin

(National Experimental Teaching Demonstration Engineering Technical Training Center, Shanghai University, Shanghai 200444, China)

Abstract: The popularity and application of image recognition technology plays an important role in the field of engineering technology. Image recognition almost stays in the theoretical research in the past,due to the limitation of hardware.With the birth of high-performance microcontroller chips and the success on image recognition field, Engineering applications will involve this technology increasincreasingly. In order to advance higher education in engineering technology education, it is possible to directly use open source technology to realize the application of image recognition in teaching.

Key words: engineering technology; image recognition; microcontroller; higher education

我国工程技术教育領域一直秉承实践为主,理论为辅的教学理念。然而实际要开发出一门既可以结合理论研究,又可以有效锻炼实践技术能力的课程往往具有一定难度。很大程度上在于理论研究不够成熟完善,或者实验设备器材受制于经费预算,人员技能素质等因素。过去人工智能学科中图像识别技术在工程技术教育领域的推广发展就比较迟缓,缺乏具体可以让学生使用并进行二次开发的实验套件。本文旨在介绍一种符合图像识别研究并可以广泛用在工程技术教学中的实验模型方案,为工程技术教学在创新课程上提供一定参考。

1 图像识别在工程技术教学中现状

1.1 工程教育在图像识别应用中的困境

图像识别一般包含三种文字数字识别,图形识别,图像识别,物体识别。其中物体识别是所有识别技术中最复杂的一部分,不仅需要大量可靠的算法,对底层硬件要求也很高,传统研究中,对图像识别也进行了“分门别类”,学术界就具体哪种算法更有效并没有统一的说法。在实践中,通常也没有一种可以包含将几种算法集合到一起的教学模型。

图像识别在实践课程的应用中需要具备一定的理论研究基础,目前我国高等教育一般要求在大学二三年级就必须完成修满实践课程的学分,从这个意义上,学生在一年级就要学会甚至理解图像识别的算法的核心,放眼从全球的高校来看,大多数学生并不具备这种能力,因此,要完成学分上的要求又要在实践环节加入所需的图像识别是必须考量的问题之一。因此需要开发一种最直观便于入门的实验课程。

1.2 openmv和图像识别

上文提及图像识别对教学模型要求较高,因此只要找到一款可以应用在图像识别,又可以一定程度“忽略”对理论知识高度要求,也就可以是一款合适的教学模型。从这点上,opemmv具备这样的优势。openmv是一款低价,可扩展支持Python的机器视觉模块。[1]低价主要体现在相对其他硬件资源定价并不高昂,可扩展则体现在该模块包含通用的扩展接口引脚可以直接与Arduino进行对接,也可以对接至其他微控制器芯片,这就为更多创新实践课程提供更多选择的机会。其核心是使用Python语言开发的机器视觉模块,Python在编写算法上应用比较广泛,这主要是由于其最大程度上精简了一些数据类型的表示方法,在图像识别算法中,经常会反复调用和图像有关的数据。Python在调用过程中将这些数据进行“打包”在使用它们的时候就可以以“包”的形式来传递它们。这样在代码上可以更直观地认识这些数据。此外,openmv外形体积小巧搭载了图像识别所必须的摄像头,并可以根据识别的不同需求更换镜头。其外观如图1。

图像识别上,openmv封装了用户想要使用的算法,如与二进制字符串特征描述子有关的BRIEF算法和BRISK算法。这是在应用方面最重要的部分,实际教学应用中,可以最大限度地减少实验结果对算法高度要求,教学目标可以最有效的化繁为简使用到图像识别技术,当然如果对于一些高级用户或研究人员,也可以使用openmv进行算法的优化。

2 智能机械手臂实验模型设计

2.1 实验模型概况

创新实践课程既要体现图像识别但又要包含传统工程技术课程的部分元素,如果脱离当前具备已有的实验器材重新设计开发新的实验模型将耗费大量资源,从实现效率的角度,可以在原有的实验模型上进行改动,就可以快速地开发出新的课程。当前工程技术课程包含机械部分和电子电路控制部分,就6舵机自由度机械手臂分析,只是将预执行的动作程序存储在控制器(arduino_uno)中,课程一般将花大量时间在机械结构设计,电子电路设计以及程序调试的工作中。如图 2虚线框外部分

新的课程在保留原有内容基础上加入openmv也就可以应用图像识别的有关实验,由于openmv使用了stm32f765微控制器芯片,其本身具备了有线串行通信的接口,这样通过Tx发送数据线和Rx接收数据线就可以和原有系统进行通信。模型的实质是通过openmv实现识别系统,arduino实现控制系统。整体实验模型,如图2。

2.2 简单的图形识别实验设计与实现

使用openm的主要目的是让学生接触图像识别中一些基本数据,并可以通过合理的编程实现图像识别的应用。智能机械手臂实验最终要实现的是,通过openmv来获取用户输入信息,并对不同位置的物块进行识别抓取。其主要通过openmv对几个不同位置的物块进行形状(物料块的横截面形状设定为正方形,三角形,圆形)识别,当识别完成后通过机械手臂进行抓取并放置在指定的位置,所要抓取物块的形状信息来源于用户的二维码。机械手臂在完成一个位置识别后判断其是否满足匹配用户二维码信息,如果匹配则进行抓取,不匹配则切换至下一个位置进行判断。如果所有位置的物料块都不满足二维码信息,那么机械臂复位至初始位置待用户扫描二维码信息。其程序工作流程,如图3:

完成程序流程图后就可以进行代码编写,openmv提供了易于调试的IDE工具并使用micropython完成整个代码,据程序流程图识别部分的伪代码如下:

import sensor,image

LAB_threshold=(minL,mixL,minA,maxA,minB,maxB)

#初始化openmv,LAB参数是色彩空间的一种表示方法,形状识别前设置LAB参数通过黑白来辨识色彩

sensor.reset()

...

#初始化摄像头

def expand_roi(roi):

# 设置采样窗口大小 QQVGA 160*120 ,roi为摄像头感兴趣区域变量

extra = 5

win_size = (160, 120)

(x, y, width, height) = roi

new_roi = [x-extra, y-extra, width+2*extra, height+2*extra]

#扩展感兴趣区域

...

return tuple(new_roi)

scaned_qrcode=None #初始化二维码信息变量

while(1):

for code in img.find_qrcodes():

#img.find_qrcodes()获取扫到二维码信息(正方形,圆形,三角形其中之一)

scaned_qrcode=code[4] #赋值给二维码变量

...

if is_rect==scaned_qrcode:#摄像头识别到的图形是否为正方形与二维码信息匹配

servo_seize() #执行舵机抓取并放置物料至指定区域

servo_ShifttoReset()#舵机复位至带扫二维码区域

if is_cir==scaned_qrcode:#是否為圆形

servo_seize()

servo_ShifttoReset()

if is_triangle==scaned_qrcode:#是否为三角形

servo_seize()

servo_ShifttoReset()

else

servo_ShifttoNext()#舵机切换至一个区域进行识别

position++;

if position==destination:#当前识别所在区域是否为最后一个识别区域

servo_ShifttoReset()

break;#跳出本次for循环在下一个区域重新获取识别信息

2.3 实验模型说明及探索

由于实验模型涉及到6个舵机的控制,在调试的过程中应注意舵机转动角度过大避免发生舵机内部齿轮过载导致烧毁,其次,舵机的每个动作使用了arduino进行控制,要执行的每个动作取决于来自openmv识别的结果,在通过串行通信时还要注意两者在时间上的衔接,识别系统和控制系统不能相互干扰,尤其还要注意舵机转动一次的响应时间,必须等待舵机一次动作完成后,openmv在发出下一条命令实现整套系统准确无误工作。实验中openmv仅尝试了二维码扫码获取用户输入信息对物块的形状进行识别,除此之外opmv还可以对条形码进行识别,实验只是简单地对三种形状进行识别,在进阶的实验环节可以利用其提供的库函数设计加入其他复杂图形的识别,在代码开始处关闭了色彩识别是通过设定LAB色彩阈值实现,实验调试时物料块的颜色必须与背景有较大反差(实验中使用白色背景板),同样也可以在后续实验中加入色彩识别的实验环节,最终测试结果符合预定的实验目标结果,智能机械臂可以识别出用户需要的物块,实验模型实物如图4。

3 结论

本文在工程技术课程中原有实验模型基础上加入了与人工智能学科有关的图像识别技术,文章介绍了openmv识别系统中一个图形识别功能,并使用该功能完成三种形状的识别,同时介绍了openmv其他图像识别的功能为工程技术创新实验提供必要的研究基础,通过本文研究可以深入开展人工智能机器识别方面的入门认知课程,也可以进一步利用实验中未用的功能完成创新课程的开发。

参考文献:

[1] 梅妍玭,傅荣.基于OpenMV的3D定位识别系统[J].新技术新工艺,2018(2).

[2] STMicroelectronics,STM32F765XX Datasheet-production data rev6[Z].2017.

[3] Kenneth Reitz,Tanta Schlusser《Python编程之美:最佳实践指南》[M].2018.

[4] 周莉莉,姜枫.基于FAST和BRIEF的图像匹配算法[J].计算机工程与设计,2015(5).

[5] 曲智国.基于图理论的图像结构化描述与匹配方法研究[D].国防科学技术大学,2013.

[6] 时磊,谢晓方,乔勇军.基于SURF算法和OpenCV的人脸特征检测技术研究[J].计算机与数字工程,2010(2).

[7] Herbert Bay,Andreas Ess,Tinne Tuytelaars,Luc Van Gool. Speeded-Up Robust Features (SURF) . Computer Vision and Image Understanding[J].2007(3).

[8] 米歇尔,麦克罗伯茨,杨继志,等.Arduino从基础到实践[M].北京:电子工业出版社,2013.

[9] 惠记庄,罗丽,杨永奎,等. 基于SURF-BRISK的目标识别匹配与定位方法研究[J].长安大学学报:自然科学版,2016(3).

猜你喜欢

微控制器图像识别工程技术
工程技术矩阵
工程技术研究院简介
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
图像识别在水质检测中的应用
物联网技术在微控制器实验教学中的应用
对磁浮工程技术的一些思考
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持