主要成员
道-391308的标识图片 道-391308 [创建者
张远城的标识图片 张远城 [未验证
小高高的标识图片 小高高 [普通成员
zhhj-391306的标识图片 zhhj-391306 [普通成员
Quinn-398349的标识图片 Quinn-398349 [普通成员
超越每一天
申请参加这个项目
了解该团队的信息
帮助文档
 
项目信息
项目名称:基于Zynq的伺服机器人设计  
项目信息:
应用领域:工业控制、科研、医疗
设计摘要:
本次设计针对图像识别、语音识别以及机器人的控制问题,以ARM Cortex-A9核以及FPGA为核心设计了伺服机器人。
系统原理和技术特点:

 

 

系统原理以及技术特点

1  Linux 移植

Linux操作系统简介

Linux操作系统,通常包括与硬件相关的底层驱动软作为件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。Linux操作系统具有通用操作系统的基本特点:能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。

必要性:

1.         语音识别模块:在语音识别模块中,识别器juliUS必须运行在linux平台上。

2.         发声模块:我们计划移植Mplayer播放器来播放“欢迎光临”的语音,而Mplayer也必须运行在linux平台上。

3.         人脸识别:人脸识别算法比较复杂,如果纯粹使用硬件描述语言来实现将会花费大量的精力,而在linux上使用C语言实现该算法能够简化该系统的实现。

移植过程:

1.       移植U-BootU-Boot是一段小程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。

2.       移植Linux内核:特定于嵌入式板子的定制内核以及内核的启动参数。内核的启动参数可以是内核默认的,或是U-Boot传递给它的。

3.       文件系统的移植:包括根文件系统和建立于flash内存设备之上的文件系统。里面包含了Linux系统能够运行所必须的应用程序、库等。

4.       用户应用程序的移植:用户的应用程序也存储在文件系统中。

 

手机通信模块

该模块用于与机器人进行通信,给机器人发送命令,并接受机器人传回的会议室使用的图像情况。

手机端程序组成:

       应用程序是由一个Activity组成,该Activity中首先使用socket向机器人发送巡视会议室的命令,然后接收机器人通过WIFI传回的会议室使用情况的照片。最后将该应用程序下载到Android手机上。我们已经具备在Android智能手机上开发应用程序的经验,成功实现了通过WIFI实时接收心电和脉搏数据,并将其实时显示在手机上。机器人端接收手机命令的程序

机器人端程序组成:

WIFI模块插入FPGA的外接接口,并分配相应的管脚。在FPGA中使用verilog语言解析接收到的命令,并将拍摄的照片通过WIFI传送到手机上。

 

 

语音识别模块

基于HMM的语音识别原理:

       语音识别系统是一种模式识别系统,系统首先对语音信号进行分析,得到语音的特征参数,然后对这些参数进行处理,形成标准的模板。这个过程称为训练或学习。当有测试语音进入系统时,系统将对这些语音信号进行处理,然后进行参考模板的匹配,得出结果。

     HMM:隐马尔科夫模型,是一种基于概率方法的模式匹配方法。基于HMM模式匹配算法的语音识别系统表现为:在训练阶段,采用HMM训练算法为每一个词条建立一个HMM模型。词条经过反复训练后,将得到的对应HMM模型加入HMM模型库中以数据的形式保存。在匹配阶段,也就是识别阶段,采用HMM匹配算法将输入的未知语音信号与训练阶段得到的模型库中的模型进行匹配,输出语音识别的结果。

语音识别系统构建:

在语音识别的机器人控制系统中,cortex-A9为训练学习机大脑,它主要完成语音识别的功能。FPGA作为机器人本体上的核心智能控制器,接收cortex-A9识别后的结果,发出控制命令。一个完整的语音识别系统一般包括3部分:声学模型、语言模型和识别器。在本系统中只建立基于控制命令(动词)的识别语法,其他词忽略,因此没有构建语言模型;识别器采用Julius开源平台,此部分只用配置参数和相关文件。本文主要工作是声学模型训练和语音识别系统构建。

声学模型训练:

声学模型是识别系统的底层模型,是语音识别系统中最关键的一部分,它是每个声学单元的声学模型参数集合。本系统的声学模型是使用HTK对采集的语音库进行多次迭代训练后提取的,基于词的声学特征向量集。HTK(HMM Tools Kit)是由英国剑桥大学工程系的语音视觉和机器人技术工作组(Speech Vision and Robotics Group)开发,专门用于建立和处理HMM的实验工具包,主要应用于语音识别领域,也可用于语音模型的测试和分析。其具体训练步骤如下:

(1)数据准备:收集汉语标准普通话的语料库,并将语料库中的语音标记,创建语音识别单元元素列表文件。(2)特征提取:本系统采用MFCC进行语音的特征参数提取,训练中将每一个语音文件用工具HCopy转换成 MFCC格式。

(3)HMM定义:在训练HMM模型时要给出模型的初始框架,本系统中的HMM模型选择同一个结构,如图4所示。该模型包含4个活动状态{S2S3S4S5),开始和结束(这里是S1.S6),是非发散状态。观察函数bi是带对角矩阵的高斯分布,状态的可能转换由aij表示。


(4)HMM训练:本系统先使用HInit工具对HMM模型进行初始化,再用HCompv工具来对模型进行平坦初始化。HMM模型的每个状态给定相同的平均向量和变化向量,在整个训练集上全局计算而得。最后用HRest的多次估计迭代,估计出HMM模型参数的最佳值,经多次迭代,将训练得到的单个HMM模型整合到一个hmmsdef.mmf文件中。声学模型HTK训练流程如图5所示。


识别器Julius

Julius的运行需要一个语言模型和一个声学模型。利用Julius,通过结合语言模型和声学模型,可以很方便地建立一个语音识别系统。语言模型包括一个词的发音字典和语法约束。Julius支持的语言模型包括:N-gram模型,以规则为基础的语法和针对孤立词识别的简单单词列表。声学模型必须是以分词为单位且由HMM定义的。

应用程序可以有两种方式与Julius交互:一种是基于套接字的服务器一客户端通信方式,另一种是基于函数库的嵌入方式。在这两种情况下,只要识别过程结束,识别结果就被送入应用程序中,应用程序就能得到Julius引擎的现有状态和统计。Julius概述如图1所示。


JuliUS部署

       在本系统中语音识别部分是部署在cortex-A9上,而cortex-A9上首先需要移植linux操作系统。语音识别的核心部分是Julius识别器。要确保linux系统中有以下支持库:zlibflexOSS音频驱动接口、Esoundlibsndfile

发声控制

       发声控制模块部署在cortex-A9上。在已经移植linux上实现Mplayer的嵌入式移植。利用可移植性强的C语言在宿主机上交叉编译Mplayer再利用交叉编译调试工具链接生成可执行代码,最后向目标平台移植运行。最后使用Mplayer播放录制好的音频文件。

Mplayer介绍

       Mplayer是一款开源的多媒体播放器,以GNU通用公共许可证发布,此款软件可运行在linux系统上。支持的音频格式包括AACMP3WMA等。

人脸识别

人脸自动识别系统的框图如下所示:


图像获取:

图像获取部分负责获取图像,图像来自摄像头,程序将其转换为可处理的数字图像格式。

基本图像处理:

包括最基本的图像操作,为检测定位部分和正规化部分提供必要的服务,比如检测定位部分常常需要对图像进行边缘提取、二值化等操作;正规化部分常需要进行图像的灰度归一等操作。

检测定位:

通过对输入的图像处理分析,判断图像中是否有人脸,如果有人脸则作出准确的定位。基于模版的人脸检测方法是一种有效而普遍适用的方法。利用人脸模版同原始图像进行匹配可以检测到图像中的人脸,进而可以用模版定位脸部的器官位置。但模版匹配的方法计算量巨大,实现速度较慢,不适用于实时系统。一般需要采用辅助方法先缩小检测范围,然后在一个小的区域内再利用模板的方法,以实现检测速度的提升。

正规化:

将提取的人脸图像作大小、灰度的归一化处理,使得不同图像中人脸大小和亮度统一。

特征提取:

特征提取部分在前面正规化后的人脸图像中按照某种策略抽取出用来识别的特征,将原始的脸空间中的数据映射到特征空间。由于原始的图像数据量是相当大的,为了有效地实现分类识别,就要对原始数据进行变换,得到最能反映分类本质的特征。一般把原始数据组成的空间叫测量空间,把分类识别赖以进行的空间叫特征空间。通过变换,可把在维数较高的测量空间中表示的模式变为在维数较低的特征空间中表示的模式。

本次设计打算采用LLPLBP+LDA+PCA)特征提取。LBP(局部二值模式)一种描述图像局部空间结构的非参数算子。在纹理分析方面,LBP算是一种最好的描述符。LBP算法一般定义为3*3的窗口,以窗口中心的像素值为阈值对窗口内其他像素进行二值化,再根据像素的不同位置进行加权求和,得到该窗口的LBP值。PCA(主元分析法)的主要思想是在原始人脸空间中求得一组正交向量,保留其中重要的正交向量,并以此构成新的人脸空间,是的所有人脸的均方差最小,达到降维的目的。LDA(线性鉴别分析)其目标在于从高维特征空间里提取出最具有判别能力的低维特征,这些特征能帮助将同一个类别的所有样本聚集在一起,不同类别的样本尽量地分开,即选择使得样本类间离散度和样本类内离散度的比值最大的特征。

分类器:

分类器设计部分是在后台进行的,这是一个分类器的训练过程,此过程结束后将生成可用于分类识别的分类器。事实上,模式识别问题可以看成是一个分类问题,即把待识别的对象归到某一类中。在人脸识别问题中就是把输入的不同的人脸归入某个人这一类。这部分的基本做法是在样本训练集基础上确定某个判决规则,使得按照这种判决规则对被识别对象进行分类所造成的错误识别率最小。

分类决策:

利用已经设计好的分类器做分类识别,给出最后的识别结果。

信件识别与投递

       这个模块主要完成机器人拿起信件后的信件识别与投递功能。当正确采集到信件图像后,针对国内信件信封的格式,在一副完整的图像中根据灰度值找到信封面上的收信人一栏,初步确定识别的文字区域后,对目标区域在进行文字的分割,识别,匹配,最后根据已经存储的所有可能的收信人的名字,将信件正确送到其办公室内。其具体实现可分为以下步骤:

指令输入(无线指令接受或语音命令接受)、将信件拿到合适的位置、采集图像、存储图像、分析图像得到收信人的大概位置、对每个字符进行识别、对目标位置进行字符分割、、对识别结果进行匹配、得到收信人名字、将信件送到其办公室,其流程如下所示:

 


指令接收

由于系统已经做了语音识别模块,加上利用手机wifi也可以和系统通信,所以可以通过语音说话或手机发命令的方式实现送信件的功能。当为语音识别识别的方式时,首先是利用了语音模块正确识别出所说的话,然后就是识别的结果转化成命令,高速机器人将信件拿到合适位置进行图像采集,以便后续处理;当为无限指令方式时,通过wifi模块接收到数据后分析数据指令,得到指示后,将信件拿到合适的位置采集图像,以便后续处理。

采集图像

由于本系统在人脸识别、拍照等技术上都需要用到采集图像功能,所以这部分功能是通用的,利用外接的摄像头采集到图像后进入FPGA,将CMOS摄像头采集的数据进行Bayer转成RGB彩色信号后进行存储。

图像分析

当正确采集到图像后,首先对图像进行分析,根据国内信件的信封格式,可以知道收信人的名字一栏所在的大概位置,以及根据信封上的三排信息或四排信息两种信封格式,进一步确定收信人名字所在的位置,以方便后面对锁定区域进行字符处理。

字符分割

字符分割可能会受到噪点,字符粘连、断裂文字的影响,可利用垂直投影,水平投影的方法,利用字符间距,字符宽度等信息进行字符的分割。除此之外,由于收信人名字可为手写或打印等方式的不同,需要多不同的情况进行不同的处理。字符分割将文字分割为单一的字符,以便后面进行识别与匹配。

字符识别

字符的识别是将已经分割出来的单个字符进行字符判断,本系统是实现名字的识别,故事先已经所有可能的收信人的名字存储起来作为模版库,同时模板库可以通过液晶交互界面随时进行更新。这样在进行字符识别就将大大简化,同时也提高识别成功率。

名字匹配

当识别出每个字符后,将得到的名字与名字库里面的名字进行匹配判断,由于并不能确定每个字符都判断准确,但是根据多个字符同时与名字相比较时,便能够准确的判断出当前的收信人的名字。

投递信件

当得到收信人的名字之后,便可进行投递信件,根据已存储的收信人的所在办公室,讲信件送过去。

 

 

 

 

 

系统框图.jpg
系统框图:系统框图.jpg
计划书:机器人计划书11-20(最终版).doc [332.5 KB]
当前项目状态:
参赛信息:
指导老师姓名: 何伟
指导老师职称: 教授
学校: 重庆大学
研究方向: 现代信号处理、图像信息处理、集成化芯片设计、嵌入式系统设计、现代数字系统设计、智能交通
参赛情况: OpenHW12开源硬件与嵌入式计算大赛
需求信息:
拟采用的平台:ZED板
是否需要设计扩展板?
需要的基本功能:
最新版本:
暂无发布的版本信息   了解目前项目的开发进度
相关评论:  
添加评论  更多评论
正在读取数据……
关于OpenHW | OpenHW使用说明 | FAQ | 相关法律 | 版权声明 | 网站地图
联系邮件:aimei@eefocus.com  联系电话: 0512-80981663-8069    Fax:0512-80981279
Powered by eefocus.com