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