基于SPCE061A单片机的机器人设计.docx
《基于SPCE061A单片机的机器人设计.docx》由会员分享,可在线阅读,更多相关《基于SPCE061A单片机的机器人设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于SPCE061A单片机的机器人设计
2011年度本科生毕业论文(设计)
基于SPCE061A单片机的机器人设计
学院:
电子信息工程学院
专业:
电子信息科学与技术
年级:
2007级
学生姓名:
刘转 转
学号:
07406051005
导师及职称:
郑心武 (实验师)
2011年1月
2011AnnualGraduationThesis(Project)oftheCollegeUndergraduate
Microcontroller-basedrobotdesignSPCE061A
Department:
CollegeofElectronicsandInformationEngineering
Major:
ElectronicInformationScienceandTechnology
Grade:
2007
Student’sName:
LiuZhuanzhuan
StudentNo.:
07406051005
Tutor:
ZhengXinwu(Technician)
January,2011
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解琼州学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
刘转转毕业论文(设计)答辩委员会(答辩小组)成员名单
姓名
职称
单位
备注
主席(组长)
摘要
凌阳16位SPCE061A单片机内嵌32K字闪存,2K字SRAM,内置10位ADC、DAC,有多达14个的中断源。
它的CPU内核采用16位具有DSP功能的微处理器芯片,而且CPU可最高工作在49MHz的主频下,能够非常容易地、快速地处理复杂的数字信号,因此与其他类型的单片机相比,在数字语音处理方面SPCE061A更具有优势。
当今,机器人的发展越来越趋于智能化和人性化,语音是人和机器人之间交流的最自然、最方便的手段之一。
语音识别的目的是通过语音,使机器人了解人的意思从而执行相应的命令,完成相应的动作。
实现了机器人的智能性和先进性。
基于以上机器人的发展方向,该设计制作了一个以凌阳单片机为核心的智能机器人软件系统。
系统主要包括语音识别模块,语音播放模块以及机器人动作控制模块。
该系统利用凌阳单片机在数字信号处理及语音处理方面的优越性,通过语音辨识技术,可以让机器人在语音指令控制下实现前进,后退,跳舞,发射以及连续发射飞盘等多种功能。
经过训练,训练人可使用各种命令让机器人完成许多有趣的动作,使得人机交互更具智能化。
关键词:
SPCE061A单片机;机器人;语音识别
ABSTRACT
Sunplus16-bitSPCE061ASCMisembeddedwith32KwordFlashand2KwordSRAM,withbuilt-in10-bitADCandDACaswellasmorethan14interruptsources.ThecoreofitsCPUisa16-bitmicroprocessorchipwhichhasthefunctionofDSP.Besides,theCPUcanworkwithafrequencyupto49MHz,andprocesscomplexdigitalsignalseasilyandquickly.Therefore,comparedwithothertypesofSCM,SPCE061Ahasmoreadvantagesinspeechprocessing.Today,thedevelopmentofrobotsbecomemoreandmoreintelligentandhumane,andthevoiceisthemostnaturalcommunicationbetweentherobot,themostconvenientmeans.Thepurposeofspeechrecognitionbyvoice,sothatpeopleunderstandthemeaningofthemachinetoperformtheappropriateorder,completetheappropriateaction.Realizeintelligentrobotsandadvanced.Basedontheabovedirectionoftherobot,whichdesignedamicrocontrollercorewithSunplusintelligentrobotsoftwaresystem.Systemincludesvoicerecognitionmodule,thevoiceplaybackmoduleandtherobotmotioncontrolmodule.ThesystemusesSunplusmicrocontrollersindigitalsignalprocessingandspeechprocessingadvantages,throughvoicerecognitiontechnologyallowsvoicecommandstocontroltherobottoachieveforward,backward,dancing,launchandcontinuouslyfiringFrisbeeandotherfeatures.Aftertraining,thetrainingofpeoplecanusevariouscommandstotherobottocompleteanumberofinterestingaction,makingmoreintelligenthuman-computerinteraction.
Keywords:
SPCE061ASCM;Robot;SpeechRecognition
前言
近年来,消费类电子产品中智能化趋势日益明显,其中语音识别技术的应用起到了关键的作用。
从实现手段看,当前以电子技术为基础实现语音识别可以利用单片机数字信号处理或语音识别专用集成电路芯片来完成从设计成本功能实现程度等综合来看,利用单片机来实现语音识别是一种高性价比的方法。
随着科学技术的快速发展和人们物质生活水平要求的提高,机器人已经渐渐地融入人们生活的各个领域,去代替或者协助人们去完成高危,繁琐或者帮助残障人群的工作。
语音识别是人机接口设计的一项重要内容,也是语音信号处理中非常重要的应用技术,正逐步成为信息技术中人机交互的关键技术。
目前,语音识别技术己经在诸多领域得到应用。
随着信息产业的迅速发展,包括计算机、办公自动化、通信、国防、机器人在内的各个领域,都迫切需要采用语音识别技术来改变极其不方便的人机接口方式。
语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的一种技术,其根本目的是研究出一种具有听觉功能的机器,这种机器能直接接受人的语音,理解人的意图,并做出相应的反应。
把这种具有语音信息处理能力的机器和设备纳入人的语音交互对象,使之像人一样具备听、说、写功能,能对语音做出理解和反应,并在交互方式上不受时间和地点的限制,这是研究机器人语音识别的重大意义。
将语音识别技术引入机器人领域解决人机交流障碍势在必行。
在这种趋势的引领下,各国纷纷加大语音机器人的研发力度,并出现了一批高智能的语音机器人。
我国在语音机器人领域发展进步很快,如凌阳智能语音识别机器人,以凌阳单片机SPCE061A为核心,改装市场上的玩具机器人,使改装后的机器人具有语音识别能力,通过语音命令对其进行控制,这也正是本课题所研究的。
提高了语音信息处理速度,可以快速对语音进行应答。
采用了先进的非特定人语音识别技术,对口音和噪声不敏感。
更加入了独有的噪声检测技术,当环境噪声很大时,能给用户相应的提示;并且加入了可信度评估和拒识技术,对于命令以外的语音或者干扰声音可以拒识。
在语音交流的过程中,抗噪音能力得到了很大的提高。
随着语音识别技术与机器人技术的进一步结合,未来高智能的人机交流将不是梦想。
第一章系统总体方案设计
机器人共有五个直流电机。
除发射电机和推进电机外,其它三个电机均是正反两用电机,即加在电机驱动端的两路输入为高低电平时电机转动,改变输入高低电平的顺序,电机反向转动,这样可以控制机器人的前进,后退,左右摇头等双向动作。
发射电机和推进电机的转动方向是固定的。
发射电机的转速较高,高速的旋转带动转盘依靠摩擦力把飞盘发射出去。
推进电机的任务就是把发射所需要的飞盘从存储仓输送到发射转盘位置。
它依靠的是电机带动一个机簧的机械装置。
电机转动一圈,机簧就会弹射一下,从而完成输送飞盘的任务。
用61板来控制机器人,使用了IOB7-IOB15资源,另外使用了扬声器。
如图1.1所示:
图1.1系统的总体框图
系统主要由61板与机器人驱动电路构成。
61板作为整个系统的主控板,驱动电路驱动电机在主控板61板的控制下完成各个动作。
另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。
第二章硬件系统设计
2.1SPCE061A的简介
2.1.1概述
SPCE061A是台湾凌阳科技公司研制的一个16位结构的微控制器。
它的内核采用本公司最新推出的(MicrocontrollerandSignalProcessor)16位微处理器芯片(简称“0nSPT"')。
SPCE061A既具有体积小、集成度高、可靠性好的特点,又具有较强的中断处理能力、高性能的价格比和功能强、效率高的指令系统及低功耗、低电压的特点,以u'nSP(TM)为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。
2.1.2SPCE061A结构图
SPCE061A的结构如图2.1所示:
图2.1SPCE061A的结构
2.1.3芯片性能
SPCE061A的主要性能特点如下:
(1)16位u'nSP(TM)微处理器;
(2)CPU的工作电压为2.6V-3.6V,I/O的VDDH为3.0V-5.5V;
(3)CPU时钟为0.32MHz-49.152MHz;
(4)内置2k字SRAM;
(5)内置32K字Flash存储器;
(6)可编程音频处理;
(7)晶体振荡器;
(8)系统处于备用状态下(时钟处于停止状态),耗电小于2uA/3.6V;
(9)2个16位可编程定时器/计数器(可自动预置初始计数值);
(10)2个10位DAC(数/模转换)输出通道;
(11)16位通用可编程输入/输出端口;
(12)14个中断源可来自定时器AB,时基,2个外部时钟源输入,键唤醒;
(13)具备触键唤醒的功;
(14)锁相环PLL振荡器提供系统时钟信号;
(15)32768Hz实时时钟;
(16)7通道10位电压模-数转换(ADC)和单通道声音模-数转换器;
(17)声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
(18)具备串行设备接口;
(19)低电压复位(LVR)功能和低电压监测(LVD)功能;
(20)内置在线仿真电路接口ICE(ln-CircuitEmulator);
(21)具有保密能力;
(22)具有WatchDog功能;
(23)可编程音频处理,使用凌阳音频编码SACM_S240方式(2.4Kb/s),能容纳210s的语音数据。
2.1.4SPCE061A最小系统
SPCE061A最小系统当中,包括SPCE061A芯片外围的基本模块,有:
晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图2.2所示。
图2.2SPCE061A最小系统
2.1.5适用于语音信号处理的主要特点
SPCE061A除了具有集成度高、性能可靠、价格低廉的特点外,在A/D和D/A中都设有针对语音信号处理的功能,若把A/D,D/A转换接口与其内核u'nSP的DSP运算功能配合使用,就可方便地实现语音识别功能,从而使其能更好地用于声控和语音识别领域。
2.2机器人
2.2.1主要功能:
◆通过语音命令对其进行控制;
◆可以跳两首舞曲;
◆走步功能、转向功能、转头功能;
◆发射飞盘功能;
2.2.2实物图
图2.3机器人实物图
2.2.3注意事项
机器人在发射飞盘时不要面向人,避免受伤;
机器人要轻拿轻放,应该避免摔打;
在安装电池时注意正负极,否则容易烧坏机器人电机或主控制板。
2.2.4硬件驱动电路
机器人硬件原理图如图2.4所示:
左右腿、脖子电机驱动
加速度、发射电机驱动
图2.4机器人驱动电路原理图
机器人驱动电路采用功率较大的三极管搭成H桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。
这些电机包括2个用于走路的电机与一个头部转向的电机。
另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。
2.3组装
2.3.1机器人线路的辨认
需要改装的控制线共有14条,10根电机连线、2根眼睛连线、2根喇叭连线。
可以根据颜色和部位辨别线路的作用,下面分别介绍:
该机器人载体共有5个电机,腿部有2个电机,控制机器人的行走方向;胸部有1个电机,控制机器人的头部转向;头部有2个电机,1个是加速电机,1个是发射电机,配合使用可以发射簧片。
5个电机共有10条连线。
腿部电机:
粉色(或相近颜色)和黑色一组,蓝色和浅蓝色(或相近颜色)一组。
胸部电机:
红色和黑色的连线。
头部发射电机:
蓝色和浅蓝色连线。
头部加速电机:
一般是黑色和绿色的连线,或棕色和绿色的连线。
眼睛连线:
白色和土黄色的连线。
喇叭连线:
两条粉色的连线。
电源连线:
红色的是正极,黑色的是负极。
2.3.2机器人电机线路、电源线路与驱动电路板的连接
驱动电路板上面一排焊孔就是电机与驱动电路板的接口。
其中标号的意义为:
M表示Motor,电机的意思,L表示Left,左边,M_L1合起来就是左腿电机的意思,同理M_L2是另一条左腿电机连线。
根据前面辨认,左腿电机是粉色和黑色两根连线,具体是粉色接M_L1还是黑色接M_L1将影响电机的正转还是反转,根据控制信号需要连接。
中间的标号VCC与M_J1是连接加速电机的两个接口。
该电机是单向电机,只可以向一个方向旋转。
根据前面电机连线的辨认,该电机是黑色和绿色的连线或者是棕色和绿色的连线,一般黑色或棕色的连线接VCC,绿色的连线接M_J1。
下面列出标号意义,按照从左向右的顺序:
EYE_N——眼睛接口,接眼睛的负极连线(白色);
IOB12——眼睛接口,接眼睛的正极连线(土黄色);
M_F1——发射电机接口,接蓝色连线;
VCC——发射电机接口,接淡蓝色连线;
M_J1——加速电机接口,接绿色连线;
VCC——加速电机接口,接黑色或棕色连线;
M_T1——旋转电机接口,接旋转电机的一根连线;
M_T2——旋转电机接口,接旋转电机的另一根连线;
M_R1——右腿电机接口,接右腿电机的一根连线;
M_R2——右腿电机接口,接右腿电机的另一根连线;
M_L1——左腿电机接口,接左腿电机的一根连线;
M_L2——左腿电机接口,接左腿电机的另一根连线。
焊接完毕,机器人按拆的反过程装上,把电池盒盖稍作处理,固定背板,在背板上固定61板,组装就完成了。
第三章系统软件设计
3.1程序分析
在主函数中调用相关函数完成特定人语音的训练,然后再训练成功后进行语音识别,根据识别的命令执行相关的操作。
程序流程图见附表A。
3.1.1擦除Flash模块
判断是否为第一次下载根据FLASH中的标志位来进行判断。
将训练好的语音模型导出存储到FLASH中使用库函数BSR_ExportSDWord(uiCommandID);进行操作,然后再调用读写FLASH中的函数进行。
在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID);函数将语音资源载入内存。
在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。
3.1.2位操作模块
由于SPCE061A没有位操作指令,而在程序控制电机的时候需要经常操作某一位,为了方便程序的编写,增强可读性,编写了位操作模块。
函数voidSet_IOB_Bit(unsignedint,unsignedint,unsignedint,unsignedint,unsignedint);参数依次为IO的位、Dir、Attrib、Data、Buffer例如操作IOB11为同相低电平输出为Set_IOB_Bit(11,1,1,0,0)。
3.1.3语音播放函数
图3.1SACM_S480自动播放流程图
在本系统的软件设计当中,将语音播放的程序设计为语音播放模块,可方便地调用;语音播放程序分为两部分,一是播放流程控制,一是中断播放服务程序。
播放控制流程图如上图3.1所示.
3.1.4走路、跳舞等其它函数模块
这些函数就是控制电机的通与断的组合完成不用的动作,在需要的时候播放语音,实现一定的效果,具体请参考函数原形。
在一般动作中,控制电机的正转或者反转就可以了。
比如左腿向前走,那么控制左腿的电机正向旋转就可以了;如果左腿向后走,那么只要控制电机向相反方向旋转就可以了。
机器人眼睛点亮,只要IOB12口送高电平就可以完成。
只有跳舞动作稍微复杂了一点,在跳舞动作中采用语音与动作同时进行的方法。
将语音资源分成小段,播放一点语音,执行一点动作,然后再播放语音……。
将语音分成小段的目的就是便于调整机器人动作,否则播放语音时不能调整机器人的动作,这样机器人的动作就单调了。
在整个函数中对IO口操作用到了2种方法,一种是使用指针直接操作IO口,这种方法在频繁修改IO口的位时显得麻烦,但是在一般操作的时候比较好用。
另一种方法就是调用函数对IO口进行位操作,这里调用的函数为Set_IOB_Bit(unsignedint,unsignedint,unsignedint,unsignedint,unsignedint);第一个参数为需要对IO口的哪个位进行操作,然后参数依次为操作IO口的Dirretory、Attribion、Data、Buffer。
3.2API函数的介绍
SPCE061A实现语音识别的步骤,分为训练部分与识别部分,以及在训练、识别过程中中断的情况,如图3.2。
图3.2语音识别的实现
3.2.1初始化过程
【API格式】C:
intBSR_DeleteSDGroup(0)
【功能说明】SRAM初始化。
【参数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。
【返回值】当SRAM擦除成功返回0,否则返回-1。
【备注】语音命令的特征模型是通过BSR_Train函数保存在RAM空间中的。
如果所需的RAM空间已被旧的特征模型数据占满,新特征模型则无法保存到RAM中。
利用BSR_DeleteSDGroup函数可以把RAM空间中所有的特征模型删除,释放出所需空间。
3.2.2训练过程
【API格式】C:
intBSR_Train(intCommandID,intTraindMode)
【功能说明】训练函数。
【参数】CommandID:
命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。
TraindMode:
训练次数,要求使用者在应用之前训练一或两遍:
BSR_TRAIN_ONCE表示要求训练一次。
BSR_TRAIN_TWICE表示要求训练两次。
【返回值】训练成功,返回0;
没有声音,返回-1;
需要更多的语音数据来训练,返回-2;
当环境太吵时,返回-3;
当数据库满,返回-4;
当两次输入命令不同,返回-5;
当序号超出范围,返回-6。
【备注】
①在调用训练程序之前,确保识别器正确的初始化;
②训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近;
③为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音;
④调用函数后,等待1~2秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。
3.2.3识别过程
【API格式】C:
voidBSR_InitRecognizer(intAudioSource)
【功能说明】辨识器初始化。
【参数】该参数定义语音输入来源,通过MIC语音输入还是LINE_IN电压模拟量输入。
【返回值】无。
【API格式】C:
intBSR_GetResult(Void)
【功能说明】辨识中获取数据。
【参数】无。
【返回值】当无命令识别出来时,返回0;
识别器停止、未初始化或识别未激活返回-1;
当识别不合格时返回-2;
当识别出来时返回命令的序号。
【备注】该函数用于启动辨识。
【API格式】C:
voidBSR_StopRecognizer(void)
【功能说明】停止辨识。
【参数】无。
【返回值】无。
【备注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。
中断过程:
【API格式】ASM:
_BSR_FIQ_Routine
【功能说明】在中断中调用。
【参数】无。
【返回值】无。
【备注】
①该函数在中断FIQ_TMA中调用;
②当主程序调用BSR_InitRecognizer(intAudioSource)时,辨识器便打开8K采样率的FIQ_TMA中断并开始将采样的语音数据填入辨识器的数据队列中;
③应用程序需要设置一下程序段在FIQ_TMA中。
3.2.4其它语音识别API介绍
BSR_PauseRecognizer()
暂停识别,但不释放中断等资源
BSR_ResumeRecognizer()
恢复被暂停的识别
BSR_GetRecognizerScore()
获得识别结果的可信度,返回值从-4096到4096,数值越大表示输入语音与特征模型的匹配度越高。
BSR_EnableCPUIndicator()
开启CPU状态监测功能。
开启该功能后,IOA0和IO