机器人技术(6)AtdRobot语音控制教程

来源:互联网 发布:mac装不了软件说版本低 编辑:程序博客网 时间:2024/06/10 19:56

语音识别模块介绍(Xu, Chen et al. 2016)

       上一章节我们介绍了如何用无线手柄控制我们的机器人底盘运动。除了手柄的遥控控制,实际使用过程中,我们还有用语音控制机器人底盘运动的需求。因此,我们在机器人底盘中内置了语音识别模块。

 

    本系统争对机器人语音控制内置了四条控制指令:前进,后退,左转,右转。在每条指令被识别后,机器人将会分别回复:我将前进,我将后退,我将左转,我将右转。这几条指令也可以进行修改,例如将 “前进” 修改为 “向前走”。

现在先让我们运行这个语音识别的例程,体会语音控制小车的魅力。

运行语音识别DEMO

       开启一个终端,运行底盘控制主节点,输入:

       ssh hong@192.168.31.200

       roslaunch ros_arduino_python arduino.launch

       如下图所示,节点即开启成功。

 

 

       重新打开一个终端,输入:

       ssh hong@192.168.31.200

       rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB1  _baud:=9600

       运行成功后,如图所示:

 

    这时,就可以通过说出“前进”、“后退”、“左转”、“右转”的指令来控制底盘运动了。

核心代码讲解

    我们所用到的语音模块是ASR语音识别模块。根据语音模块的使用说明,我们将“前进”命令所对应的音频文件命名为0001.wav(里面录有“我将前进”的音频),保存在模块的SD卡上,这样,当我们说出“前进”的指令时,模块就会播放0001.wav,也就是发出“我将前进”的声音,并且返回“001”。同理,将“后退”指令所对应的音频命名为0002.wav(里面录有“我将后退”的音频),将“左转”指令所对应的音频命名为0003.wav(里面录有“我将左转”的音频),将“右转”指令所对应的音频命名为0004.wav(里面录有“我将右转”的音频)。语音识别的代码烧录至底盘控制器中,实现过程是通过判断模块的返回值,转化为ROS系统下的cmd_vel话题,小车底盘通过订阅该话题来决定自己的运动状态。向该主题发布的消息类型是twist,其中twist.linear是底盘运动的线速度,twist.angular是底盘运动的角速度。

最后

        到这里我门就实现了通过语音控制小车运行的一个简单例程。如果需要修改指令,增加关键过滤词汇,提高识别准确率,可以参照语音模块的开发手册,修改语音模块识别的指令以及播放的音频。

 

阅读全文
0 0
原创粉丝点击