【临沂】语音控制机器人

2020-04-273255
AI 快速预览详细 收起
本教程介绍了如何使用树莓派主板、红外遥控扩展板等器材,通过古德微机器人的编程网站,实现语音控制机器人。首先搭建好硬件,然后在编程网站上连接设备,测试语音唤醒功能,并设置变量和判断语句来解析语音指令。通过处理语音指令中的句号干扰问题,确保机器人能够准确执行指令。最终,通过编写程序,控制机器人完成前进、后退、左转、右转等动作。
制作了会跳舞的机器人是不是很不过瘾呢?这节课我们让机器人根据我们的语音指令做出对应的动作,我们开始吧!
本课所需要的器材有:树莓派主板,红外遥控扩展板,音箱、全向麦克风,红外遥控机器人,将器材按图中所示搭建好。
【临沂】语音控制机器人图1
打开古德微机器人的编程网站http://www.gdwrobot.cn连接设备,首先测试小度小度语音唤醒,在wakeup函数中,播放语音“你好,主人,请发送指令!”,然后新建变量“语音指令”并赋值为将5秒语音输入转换成文字输出,把时间改为3秒。
【临沂】语音控制机器人图2
新建变量“语音解析结果”、“有滑行”、“有前进”、“有后退”、“有左转”、“有右转”并进行赋值
【临沂】语音控制机器人图3
然后对语音指令的内容进行判断,如果有滑行,在判断是否有前进,如果有前进,赋值语音解析结果为“滑行前进”,如果有后退,赋值语音解析结果为“滑行后退”,如果有左转,赋值语音解析结果为“滑行左转”,如果有右转,赋值语音解析结果为“滑行右转”,否则,如果有前进,赋值语音解析结果为“前进”,如果有后退,赋值语音解析结果为“后退”,如果有左转,赋值语音解析结果为“左转”,如果有右转,赋值语音解析结果为“右转”。
【临沂】语音控制机器人图4
  
新建函数“执行指令”新建一个参数为“指令名称”并对指令名称进行判断:如果指令名称等于“前进”控制机器人前进,等待两秒;如果指令名称等于“后退”控制机器人后退,等待两秒;如果指令名称等于“左转”控制机器人左转,等待两秒;如果指令名称等于“右转”控制机器人右转,等待两秒;如果指令名称等于“滑行后退”控制机器人滑行后退,等待两秒;如果指令名称等于“滑行前进”控制机器人滑行前进,等待两秒;如果指令名称等于“滑行左转”控制机器人滑行左转,等待两秒;如果指令名称等于“滑行右转”控制机器人滑行右转,等待两秒。
【临沂】语音控制机器人图5
在wakeup函数中调用执行指令函数,函数的指令名称为“语音解析结果”
【临沂】语音控制机器人图6
运行测试,
我们发现我刚才语音输入的指令不能够被识别,这是怎么回事呢?我们先将指令输出看一下,可以看到我么输出的指令中包含有一个“句号”,而我们对语音指令进行判断时并没有句号,虽然文字相同,但是没有句号的文字和带句号的文字是不能完全等同的,所以我们需要先去掉句号。
新建变量“句号位置”并赋值为自文本“语音指令”中寻找第一个出现的文本“。”这时候变量“句号位置”储存的是语音指令中句号的索引值,当句号位置不等于0时,我们重新赋值语音指令为:自文本语音指令中取得第一个字符到句号位置减1字符之间的部分文本,我们再输出一下经过处理后的语音指令,为了对比我们再一开始输出未经处理的语音指令,可以看到末尾的句号已经被去掉。
【临沂】语音控制机器人图7
我们再测试一下。
我们发现在我们控制机器人的过程中,机器人还是会发出一些声音,我们控制动作类积木比如前进后退时,语音指令不会受到机器人自身的声音干扰还是能够准确的识别出来,我们把这种现象称为程序设计的鲁棒性,我们可以理解为语音指令虽然受到机器人自身的声音影响,但是这种影响不会对程序造成很大的影响,仍能比较准确的识别。
我们对机器人腿部动作的积木进行了设置,我们知道机器人有很多的动作,我们以其中的几个为例编写一些程序。
新建变量“左手上”“讲科普”“发射导弹”“调高音量”,并分别进行赋值。
【临沂】语音控制机器人图8
然后判断:
【临沂】语音控制机器人图9
在执行指令函数中加入执行程序:
【临沂】语音控制机器人图10
写的比较乱,附上完整程序图:
【临沂】语音控制机器人图11
【临沂】语音控制机器人图12
【临沂】语音控制机器人图13
【临沂】语音控制机器人图14
赶紧编写程序去控制你的机器人吧,下节课再见!

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
DFrJ5KYVQaH
DFrJ5KYVQaH
谢谢分享
这个人很菜
这个人很菜
谢谢分享,膜拜大佬
- 没有更多了 -