微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SPCE061A在智能语音识别避障机器人中的设计应用

SPCE061A在智能语音识别避障机器人中的设计应用

时间:05-05 来源:互联网 点击:

线J2、测量模式选择跳线J1设置好后,用排线把J5与SPCE061A的IOB口低八位相接,J4与IOB口高八位相接,即可使用了。

2.2.8 注意事项
  ◆提供给模组的电源必须在4.5V以上,而且尽量保持电源电压的稳定。
  ◆模组外接电源接口J3接入的电源不要超过12V。
  ◆模组工作的性能与被测物表面材料有很大关系,如毛料、布料对超声波的反射率很小,会严重影响测量结果。
  ◆模组的中距测距模式的精度与程序设计有关,提供的范例程序中没有对测距结果进行标定,所以有3~5cm的距离误差时是正常的。

2.3 机器人简介
2.3.1 机器人驱动电路图
  机器人驱动电路图如图2-6所示:

图 2-6 机器人驱动电路图

机器人驱动电路采用功率较大的三极管搭成H桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。这些电机包括2个用于走路的电机与一个头部转向的电机。另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。

2.3.2 主要功能
  ◆通过语音命令对其进行控制;
  ◆可以跳两首舞曲;
  ◆走步功能、转向功能、转头功能;
  ◆发射飞盘功能;

2.3.3 机器人实物图

图 2-7 机器人实物图

2.3.4 注意事项
  ◆机器人在发射飞盘时不要面向人,避免受伤
  ◆机器人要轻拿轻放应该避免摔打
  ◆在安装电池时注意正负极,否则容易烧坏机器人电机或主控制板

3 系统总体方案介绍
  用61板来控制机器人,使用了IOA7-IOA15以及IOB2和IOB9资源,另外使用了扬声器。如图3-1所示:

图 3-1 系统的结构框图

系统主要由61板、超声波测距模组和机器人驱动电路构成。61板作为整个系统的主控板,超声波测距模组在机器人运动期间定期检测前方是否存在障碍物,驱动电路驱动电机,在主控板61板的控制下完成各个动作。另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。

4 系统软件设计
  在主函数中调用相关函数完成特定人语音的训练,然后在训练成功后进行语音识别,根据识别的命令执行相关的操作。程序流程如图4-1所示:

图 4-1 主程序流程图

根据FLASH中的标志位来进行判断是否为第一次下载。使用库函数BSR_ExportSDWord(uiCommandID)将训练好的语音模型导出存储到FLASH中进行操作,然后再调用读写FLASH函数。在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID)函数将语音资源载入内存。在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。
  避障的实现是在机器人活动期间完成的。
  在机器人活动期间会播放背景声音或音乐。播放采用后台方式,使用4096Hz时基中断处理语音解码。这样可以释放大量CPU资源在前台处理其他事务。
  语音播放函数流程图如图4-2所示。

图 4-2 语音播放程序流程图

在4096Hz时基中断中进行的处理流程如图4-3所示。

图 4-3 语音播放中断服务程序流程图

在播放背景音乐的同时,程序将调用超声波测距函数进行机器人前方障碍物检测。测距函数利用TimerB产生40KHz的PWM方波驱动超声波发射传感器。当接收传感器接收到回波后经过处理电路处理将引起SPCE061A的外部中断,计算从发射超声波到产生中断的时间,即可计算出目标物体的距离。测距函数流程如图4-4所示。

图 4-3 语音播放中断服务程序流程图

在播放背景音乐的同时,程序将调用超声波测距函数进行机器人前方障碍物检测。测距函数利用TimerB产生40KHz的PWM方波驱动超声波发射传感器。当接收传感器接收到回波后经过处理电路处理将引起SPCE061A的外部中断,计算从发射超声波到产生中断的时间,即可计算出目标物体的距离。测距函数流程如图4-4所示。

图4-5 编译、链接图

步骤二:下载程序代码到机器人的61板上。
  步骤三:打开机器人的电源,进行语音训练,训练过程按照下面进行:
按顺序训练以下15条指令:名称,开始,准备,跳舞,再来一曲,开始,向前走,倒退,右转,左转,准备,向左瞄准,向右瞄准,发射,连续发射。每条指令要训练两遍。当一条指令被正确识别时会提示进入下一条;如没有被识别会要求重复该指令,直到正确识别为止。
  步骤三:如果训练成功则进入语音识别状态,如果训练没有成功则重复训练。由于SPCE061A的FLASH存储器只有32K,所以15条指令需要分组存放。在这里分成3组,每组5条指令。在不同组指令中交换需要根据触发名称,所以在识别状态,要执行动作首先需要触发名称,就是训练的第一条命令,然后可以识别第一组的其余四条命令。在触发第一条指令,然后再触发第二条指令,就可以识别第三条指令,参考下图:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top