宜昌老张

用微软MSRDS软件的语音识别技术遥控乐高机器人

0
阅读(3369)

    用中文语音来遥控机器人,曾出现在科幻小说、美国IMAX大片以及YouTube科学纪录片里,现在用乐高NXT机器人套件搭建个机械手车,再免费下载个微软机器人软件MSRDS R4版,编写个简单的程序,即可。在夜晚书房的灯光照耀下,我用比较标准的普通话,发布了“前进、后退、旋转、抓、放下”等命令,机器人居然也按照我的语音命令行动了!这一时候,才感觉到作为一个创客,能体验到新鲜技术实践的那种快乐。下面请看这个实践视频。

日本开发出的能语音交流的仿人机器人视频 :

 

    日本是机器人研发领先的国家,他们正在开发用于家庭服务的类人机器人,可以帮助人类干些家务,还可以表演舞蹈和歌唱,我们发出语音口令,指挥他们按照人类的意愿做事,这是一个多么理想的场景啊!而我现在借助微软MSRDS软件和乐高机器人在自己的家里,也完成了这样理想场景的实验,而且并不困难,所以我一直认为尽管创客们资金有限,但也应紧跟国际科技潮流,购买些符合国际流行规则的创客工具,这样才能少走弯路,高效方便地借助这些国际标准的软硬件工具制做作品,来实现自己的创意想法。  

   乐高9797+9695机器人套件,网址:http://item.taobao.com/item.htm?id=12941550436&

    对于MSRDS R4版软件的安装和使用入门,可以参看下《基于微软MSRDS的XBOX手柄操控乐高机械手车的编程》,网址:http://blog.chinaaet.com/detail/27568.html。MSRDS R4一定要Win7操作系统,XP系统没有语音识别功能!

    下面介绍与语音识别关联的两个服务元件,Speech Recognizer Gui 与Speech Recognizer。见下图。

     按下菜单工具栏中的启动按钮,或者按F5热键,运行DSS服务。

    在Run窗口,逐个寻找各行“Service started”的记录,点击其左侧的“-”符号便可看到对应的服务元件网址,现在要找到“http://…:5000/speechrecognizergui”并点击它,以呼叫浏览器网页监控Speech Recognizer Gui服务元件。

    进入监控网址时,可能会让您输入PC机账号和密码,就是您进入Win7操作系统时,自己原先设置的用户账户和密码,输入进去,即可,没啥玄机。

      在Speech Recognizer GUI 服务元件的监控网页中,看到Speech Configuration的栏目,在“Text”和“Semantic Value”参数项,逐个输入中文语音命令,我一共输入了8个命令,下图所示,如果您发出了其中一个命令,从Speech Recognizer服务元件就会输出相应的命令文本。

       从在MSRDS开发环境左侧上方区域的「基本活动元件」(Basic Activities)区,拖出if活动元件,逐个填写[Text == “前进”]、[Text == “后退”]等条件选项,然后连线Speech Recognizer服务元件与if活动元件,随之出现“Connections”设置窗口,from选项选择“SpeechRecognized”。

 

    从下面程序全景图可以看出,如果您发出语音命令,比如“前进”,if活动元件的[Text == “前进”]成立,然后“LegoNXTDrivev2”NXT双电机元件通过蓝牙,驱使您身边的机械手车前进了,太酷了!

      然后具体谈谈与乐高NXT机器人相关的元件。从左侧下方区域的「服务元件」(Services)区,取出“LegoNXTBrickv2”NXT控制器和“LegoNXTDrivev2”NXT双电机以及“LegoNXTMotorv2”单电机元件。

    点击NXT控制器模块,在软件界面右侧「编程元件属性」“Properties”设置栏里,设置参数,PC机软件与NXT控制器的通讯方式为Bluetooth,根据操作系统的蓝牙软件中显示的串口号设置串口为“5”,注意:SerialPort的参数值必须是:电脑蓝牙设置软件和NXT控制器配对后,产生的“传出”端口号。

     下图,if活动元件与NXT电机元件的连接参数,显示了三种模式,“前进”和“后退”选项采用SetDrivePower模式,小车两个轮子的电机功率为正,而且功率值一样,小车就前进,为负,就后退。“旋转”也采用采用SetDrivePower模式,只不过我把小车两个轮子的电机功率设为一正一负,于是小车原地打转,直到发出停止命令。“停止”选项,小车两个电机功率为0。“左转”和“右转”选项采用RotateDegrees模式,在该模式对话框里设置偏转角度为20度和-20度。这样发出一次“左转”或“右转”口令,小车就偏转一个小的角度,以逐渐对准待抓取的物体。对于控制机械手的单电机元件用到的SetMotorRotation模式,我设置了反转1.6圈,就停下,这样正好物体从高处放下到地面。机械手抓起物体,还是采用了SetDrivePower模式,机械手从地面抓起物体,直到遇到挡块,产生闷车状态,闷车一段时间,NXT电机是可以承受的,但这样可以保证机械手紧紧抓住物体。

 

    到此,程序就讲解完了。程序编制后,按下F5,启动DSS服务,程序处于运行状态中,这时可以用语音遥控乐高机器人了,它蛮听话的!微软语音识别技术也不是百分之百成功,比如我如果输入“抓起”,识别后居然变成了“左转”,后来我改成“抓”,问题就解决了。还有如果普通话不标准或者孩子的声音,它也识别出错。成年人,标准普通话,然后带上耳麦,语音识别还是靠谱的,目前我做的语音控制实验,任务完成得相当顺利!

MSRDS R4版程序请下载:12975838056544.zip