0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于机器视觉笔迹识别和Arduino控制机器人的设计

电子设计 来源:网络整理 作者:工程师吴畏 2018-07-03 11:20 次阅读

0 引言

伴随着现在日益高性能的计算机硬件和完善的理论技术,机器视觉技术已开始得到广泛的应用。结合机器视觉技术的智能机器人在现今人工智能趋势下扮演一个重要角色,在智能制造推进、智慧城市建设、家居生活质量提高等方面,都有广阔的施展空间[1]。

1 整体设计思路及方案

本设计将能胜任机器视觉处理能力的计算机与单片机作主控的机器人相结合,通过无线通信方式构建一个相比其他低成本机器人具备更高自主性和智能性的机器人模型,目的在于:(1)对比评估主流手写数字识别模型的实际识别表现;(2)探究低成本机器人实现更高智能性的方法[2]。

本设计结合现今热门的机器视觉技术以及Arduino单片机实现了一个能够通过上位机识别手写数字并发送至下位机进行执行的机器人模型,当上位机得到待识别的图片后,将进行图片的处理转化为数据并输入已经在前期构建好的识别模型,计算后输出识别的内容并通过无线通信发送到下位机,下位机根据接收到的识别信号执行相应动作。

本设计总体可分为上位机识别与下位机执行部分。上位机识别部分包含前期输入信号的处理、手写字符的识别模型构建、与下位机通信构建等部分;下位机执行部分采用Arduino单片机结合各类电子元器件和电路模块实现了所期望的执行内容,包括电源供电设计、表盘指示器电路设计、人机交互显示设计以及无线通信设计[3]。

1.1 下位机硬件设计方案

该下位机硬件使用Arduino单片机作为主控,并结合步进电机以及步进电机驱动模块构成了指针数字指示盘,OLED与单片机相连构成人机交互显示界面,NRF2401L无线串口模块与上位机进行通信,使用LM2596稳压模块输出9 V电源为Arduino单片机供电,并且由单片机供电给各个执行模块。采用1.3寸OLED显示屏作为显示器,输出经过上位机识别后发送至下位机的信号,采用SSD1306作为驱动的OLED显示屏显示出数字[4]。

采用步进电机作为仪表盘指示器执行部件,其需要相应电机驱动模块进行驱动。设计仪表指示器需要对步进电机进行正转、反转控制,从而造成指针的顺时针旋转和逆时针旋转,以便能够使其根据输入的识别信号转动相应角度(有对应的正向角度和负角度)。电机接收到单片机输出的特定脉冲时,步进角(步进电机每前进一个步序所转过的角度)便会进行相应的转动,当电机接收一个脉冲信号就会转过一个步进角,二者呈相互的线性关系。通过此线性关系,再根据原有角度与现在应该转动角度做差值计算,求出相差角度,控制电机转动相应角度,便可以实现电机的仪表指示功能。

1.2 数据收集以及上位机识别模型

上位机部分主要负责手写图片的识别,其流程包括手写数字图像预处理、识别模型训练、识别模型验证和测试等。选择MNIST手写库作为模型的数据,并给出了将MNIST数据库进行图像处理的方法,通过比对SVM、BP神经网络、KNN三种识别模型的发展历程、数学原理以及算法步骤等,最终选用BP神经网络识别模型。

1.3 BP神经网络的手写数字识别模型及验证

BP神经网络是神经网络的一种,目前大多数神经网络模型都是由BP神经网络扩展而来。对于本设计所需手写数字识别这一应用来说,神经网络主要用于关于数字0到数字9的分类问题。BP神经网络算法又称为反向传播算法,其连接神经元的权值训练从最末层(即网络的输出层)开始,从输出到输入依次更新每一层的权值,所以被称为反向传播。

BP神经网络的学习算法采用方法为δ学习规则(步长最优化),目标函数为:

关于机器视觉笔迹识别和Arduino控制机器人的设计

式中:Yk表示真实的值,即期望值,是真实图片中所代表数字,k为样本编号;Tk为预测值,即经过模型所计算出来的值;E为真实值与预测值得平方误差求和。整个式子的目标便是使平方误差和最小。

其算法过程的流程描述如图1所示。

关于机器视觉笔迹识别和Arduino控制机器人的设计

BP神经网络由于只应用了均分误差函数对权值和阈值的一阶导数(即梯度)的信息,在实际程序中该算法存在收敛速度慢从而计算时间长、容易陷入局部最小(忽略了全局最优解导致不能正确求解)等问题。在实际的应用中,应注意这些问题的解决,可以与LM神经网络、RBF神经网络等结合使用来解决[5]。

2 使用CV2库进行图像预处理

在设计中使用OpenCV库的扩展库CV2库对图片进行了图像预处理,过程主要包括手写数字图像的归一化以及二值化数据形式,并保存为逗号分隔符的csv文件。

图像处理时间如表1所示,T1时间为转化训练集图片所用时间,用时352 s;T2时间为转化测试集图片所用时间,用时55 s。

关于机器视觉笔迹识别和Arduino控制机器人的设计

2.1 PCA降维操作

本设计使用Python的sklearn库中的PCA方法,输入原始数据集,即可完成PCA降维操作,其降维结果如表2所示。

关于机器视觉笔迹识别和Arduino控制机器人的设计

在经过PCA(主成分分析法)降维操作去除影响较小的变量影响后,得到了59 989行、67列的X_pca数据集,手写数字图片数量不变,但维数从784列缩小为67列,从而有效地减轻了支持向量机、神经网络以及KNN模型的计算过程。在后续的模型训练以及模型识别准确度评估中,也同样使用了PCA操作对数据简化计算量[6]。

2.2 模型比较以及上位机识别模型的选取

本测试模型中,经过转化的训练集数据大小1.09 GB(59 989张图片转化完成的数据),测试集数据大小为186 MB(9989张图片转化完成的数据),经过PCA降维操作后,测试集数据大小为97.7 MB(由原来的864列数据降维为67列数据),训练集数据大小为16.2 MB。模型数据采用PCA降维操作后的数据[7]。

从表3中可知,3种模型中,SVM(支持向量机)模型识别的准确度最高,但训练时间比其他两个模型稍长。BP神经网络模型最小,训练时间比SVM(支持向量机)稍短,测试时间用时也最短,明显短于其他两个模型,说明识别速度是最快的。KNN(K近邻)模型训练时间虽然最短,但从测试时间来看用时最长,测试近10 000个数据的时间比其他两个模型训练近60 000个数据的时间还长了两倍多,模型识别速度最慢。准确率上来看,小数据量时准确率只有百分之五六十,只有大数据体量下准确率才有明显提升,与SVM(支持向量机)和BP神经网络相比,在手写数字识别方面逊色很多。

关于机器视觉笔迹识别和Arduino控制机器人的设计

对上面3个模型根据识别时间、准确率进行比较评估后,决定以准确率优先,次而考虑识别时间,最终决定使用SVM(支持向量机)作为本设计的手写识别模型[8]。

3 手写笔迹图像识别机器人整体设计

在整体设计中,首先选择NRF2401L无线通信模块完成了通信硬件的搭建,并根据其配置表进行命令配置完成了硬件的初始化。上位机方面,使用Python结合win32u库和serial库完成上位机读取识别程序的设计。下位机方面,使用串口结合下位机处理硬件完成数字接收处理的设计。整个系统构成一套上位机对手写图像进行识别,通过无线发送至下位机处理的手写笔迹图像识别机器人。

4 结论

通过本设计与研究,取得的主要结果如下:

(1)选择了MNIST手写数字图片库作为手写识别模型的原始数据,设计实际情况完成了MNIST库图像的处理和转化,从而得到了原始的训练数据集和测试数据集。

(2)分别对SVM(支持向量机),BP神经网络,KNN(K近邻)3种分类模型进行了对比,并使用Python分别对3种模型进行了构建和测试。通过3个模型的训练时间、测试时间以及准确度等指标,比较了3个模型的优劣性,最终以准确率优先原则选取准确度最高的SVM(支持向量机)作为手写数字识别模型并进行应用。

(3)使用NRF2401L无线通信模块和串口功能构建了上位机和下位机之间无线通信,完成了二者的对接,将单片机在电子硬件方面的处理和计算机对手写图片的识别进行了结合[9]。

(4)实现了Python设计上位机应用程序,功能包括图像读取、图像预处理以及转化、图像识别、串口发送、异常处理等。完成了整个上位机的功能,构成了一套上位机手写图像识别,完成了整个设计。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    211

    文章

    28405

    浏览量

    207012
  • 机器视觉
    +关注

    关注

    162

    文章

    4369

    浏览量

    120301
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187007
收藏 人收藏

    评论

    相关推荐

    LPC2106在足球机器人控制中的应用设计

    LPC2106在足球机器人控制中的应用设计足球机器人融合了计算机视觉、模式识别、决策对策、自动控制
    发表于 03-28 14:03

    机器人视觉——机器人的“眼睛”

    目前产业机器人仅能在严格定义的结构化环境中执行预定指令动作,缺乏对环境的感知与应变能力,这极大地限制了机器人的应用。利用机器人视觉控制
    发表于 01-23 15:02

    nao机器人与其他机器人的区别

    机器人在之前的机器人的基础上,加入了可以自由便捷的运动功能,两个摄像头精准拍摄、全方位的视觉功能,还有一个超声传感器功能。传感器可以识别人类和NAO
    发表于 02-13 15:43

    【mBot申请】视觉机器人

    申请理由:现在正在参与视觉机器人的项目,想了解更多的关于机器人的产品与知识。项目描述:水果采摘机器人
    发表于 10-29 11:00

    自律型机器人制作入门.基于Arduino

    了一层硬件接口的Dreamer,使得硬件模块的连接更加方便、简单。《自律型机器人制作入门:基于Arduino》是关于Drearner控制板的第一本书,内容循序渐进,图文并茂。从最基础的
    发表于 06-23 11:18

    先进机器人控制

    ,运动学部分从坐标变换人手,介绍了正向运动学方程的建立、逆向运动学的求解以及机器人的微分运动等内容。控制结构篇着重介绍机器人的传感技术、位置控制和力
    发表于 09-19 15:30

    【下载】《机器人学、机器视觉控制――MATLAB算法基础》

    `内容简介本书是关于机器人学和机器视觉的实用参考书, 第一部分“基础知识”(第2章和第3章)介绍机器人及其操作对象的位置和姿态描述,以及
    发表于 01-17 17:38

    【下载】《机器人学、机器视觉控制――MATLAB算法基础》

    `内容简介本书是关于机器人学和机器视觉的实用参考书, 第一部分“基础知识”(第2章和第3章)介绍机器人及其操作对象的位置和姿态描述,以及
    发表于 04-08 18:19

    LabVIEW 的Tripod 机器人视觉处理和定位研究

    为对几何体的识别和抓放过程ꎮ利用边缘提取、滤波去噪、圆心检测等算法采用LabVIEW视觉模块及其库函数进行了图像的预处理、特征提取以及中心点定位ꎮ研究结果表明基于LabVIEW的Tripod机器人系统能够准确
    发表于 06-01 06:00

    机器人如何识别

    现在想做机器人图像识别方面的研究,有问题请教大家,比如说:现在有十种瓶子,机器人识别我指定的瓶子,并把它从A位置移动到B位置,关键是如何识别
    发表于 11-04 09:02

    服务机器人视觉系统怎么设计?

    随着计算机科学和自动控制技术的发展,越来越多的不同种类的智能机器人出现在工厂、生活当中,机器人视觉系统作为智能机器人系统中一个重要的子系统,
    发表于 04-07 07:27

    机器人视觉机器视觉有什么不一样?

    的三维世界的识别机器人视觉主要研究用计算机来模拟人的视觉功能从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制
    发表于 08-28 10:48

    四元数数控:工业机器人使用机器视觉系统的原因

    和提高工作效率,就必须引入机器视觉技术来实现对目标的识别和定位。目前,装备了机器视觉系统的工业机器人
    发表于 04-29 09:42

    工业机器人视觉实训平台介绍

    ZN-RAI02工业机器人视觉实训平台一、概述1、ZN-RAI02工业机器人视觉实训平台以工业机器人
    发表于 07-01 06:38

    工业机器人视觉装配实训平台实验

    、模块化综台平台各个功能模块的认识与实训,可以让学生了解机器人末端央具的机械组成、电气控制回路、气动控制回路、视觉
    发表于 07-01 12:05