1784浏览
查看: 1784|回复: 2

【临沂】语音控制机器人

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

Vibranium  高级技师

发表于 2020-4-27 16:35:09

谢谢分享,膜拜大佬
回复

使用道具 举报

DFrJ5KYVQaH  中级技匠

发表于 2020-4-28 10:21:53

谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail