极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2361|回复: 0

轮式机械臂小车实现语音控制功能

[复制链接]
发表于 2023-5-12 09:20:15 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-5-12 09:20 编辑

1. 功能说明
       本文实例将实现语音控制R214e样机运动(前进、后退、左转、右转、拿起、放下)的功能。
2. 电子硬件
       在这个示例中,我们采用了以下硬件,请大家参考:

主控板
Basra主控板(兼容Arduino Uno)
扩展板
Bigfish2.1扩展板
传感器
语音识别模块
电池
7.4V锂电池

电路连接:
       ① 小车左轮电机连到Bigfish扩展板的D9,D10接口;小车右轮电机连到Bigfish扩展板的D5,D6
       ② 将语音识别模块HBR640连接到Bigfish扩展板的扩展坞上
       ③ 将关节模块的舵机线连接到Bigfish扩展板的D11端口上
       ④ 将机械爪的舵机线连接到Bigfish扩展板的D12端口上


3. 功能实现
    编程环境:Arduino 1.8.19
    实现思路:语音命令机器人前进、后退、左转、右转、拿起、放下。
3.1 配置语音库
    步骤1:将文末资料中的
\语音识别模块HBR640 文件夹拷贝至本机位置。
    步骤2:将语音HBR640模块更改为
“配置模式” ,并用一个USB线将主控板连接至电脑上,将下图中的空程序烧录至主控板中
              (注意:在烧录程序的时候,语音识别HBR640要从扩展板的扩展坞上拔下来)


    步骤3:打开 \语音识别模块HBR640\4 开发工具\HBR640开发工具:SRTool.exe(如下图所示)


    步骤4:先新建一个 “HBR640对话工程” 文件夹,然后在软件中点击 “新建”,选择“HBR640对话工程”文件夹后,再创建一个文件名“che”,点击 “保存”


    步骤5:在下图中的 “未命名” 区增加 “机器人” 分组。

    步骤6:在下图所示位置添加 “前进” 命令,然后点击 “增加” 按钮,即可将 “前进” 命令添加至左侧的词条列表中。


    步骤7:在下图所示位置再添加 “后退” 命令,然后点击 “增加” 按钮,即可将 “后退” 命令添加至左侧的词条列表中。


    步骤8:按照步骤6、步骤7的方式依次再分别添加 “左转”“右转”“拿起”“放下” 命令至左侧的词条列表中。


    步骤9:点击 “保存词条”


    步骤10:点击 “生成” 按钮。


    步骤11:选择端口号,并点击 “连接”,显示连接成功即可(这里以端口号COM17为例)


    步骤12:点击 “烧录” 并选择 “全部”。在烧录过程中尽量不要移动主控板,显示烧录成功即可。


    步骤13:点击 “测试” 按钮,会在左侧的词条列表下面出现 “候选命令” 区。


    步骤14:对着语音识别模块分别说出刚刚编辑的命令“后退”、“前进”、“左转”、“右转”、“拿起”、“放下”时,会在 候选命令区 出对应的识别结果。


    步骤15:测试成功后,点击“停止”按钮,并“断开”连接,此时语音库即已配置完成。


3.2 示例程序
      将机器人语音控制程序(ohmygod.ino)下载到主控板,实验效果可参考官网演示视频。
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-04-23 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*******************************************************************************************************

  8. 实现功能:

  9.           用语音640实现语音小车;


  10. 实现思路:

  11.           将语音640安装好后,如果接收到命令为“前进”,小车前进1秒后停止;如果接收到命令为“后退”,小车

  12.           后退1秒后停止;如果接收到命令为“左转”,小车左转1秒后停止;如果接收到命令为“右转”,小车右转

  13.           1秒后停止;如果接收到命令为“拿起”,机械爪抓取物体;如果接收到命令为“放下”,机械爪释放物体


  14. 实验接线:

  15.           小车左轮接到D9,D10;

  16.           小车右轮接到D5,D6;

  17.           语音640模块接到扩展板的扩展坞上;

  18. *******************************************************************************************************/

  19. #include<ServoTimer2.h>;

  20. ServoTimer2 servo_arm12;

  21. ServoTimer2 servo_leg11;

  22. #define servo_catch 63

  23. #define servo_release 80

  24. #define servo_up 30

  25. #define servo_down 70

  26. #include "HBR640.h" //语音640需要的函数库

  27. #define DelayTime 1000//小车执行相关动作的时间;

  28. HBR640 hbr640;      //实例化一个语音识别模块

  29. void setup(){

  30.   hbr640.open(); //开始进行语音识别

  31.   pinMode( 5 , OUTPUT);

  32.   pinMode( 6 , OUTPUT);

  33.   pinMode( 9 , OUTPUT);

  34.   pinMode( 10 , OUTPUT);//将直流电机设置为输出模式;

  35.   servo_arm12.attach(12);

  36.   servo_arm12.write(map(servo_release,0,180,500,2500));

  37.   servo_leg11.attach(11);

  38.   servo_leg11.write(map(servo_down,0,180,500,2500));

  39. }


  40. void loop(){

  41.   if(hbr640.isHeard()) //如果监测到识别语句

  42.   {

  43.     int value = hbr640.getSentence(); //获得识别语句的序号

  44.     switch (value)

  45.    {

  46.     case 0x00: MotorMode(1,DelayTime); hbr640.open();break;//如果接收到命令为“前进”,小车前进1秒后停止;

  47.     case 0x01: MotorMode(2,DelayTime); hbr640.open();break;//如果接收到命令为“后退”,小车后退1秒后停止;

  48.     case 0x02: MotorMode(3,DelayTime); hbr640.open();break;//如果接收到命令为“左转”,小车左转1秒后停止;

  49.     case 0x03: MotorMode(4,DelayTime); hbr640.open();break;//如果接收到命令为“右转”,小车右转1秒后停止;

  50.     case 0x04: down();delay(1000);Catch();delay(1000);up ();delay(1000); hbr640.open();break;//如果接收到命令为“拿起”,机械爪抓取物体

  51.     case 0x05: down();delay(1000);Release(); delay(1000);up ();delay(1000);hbr640.open();break;//如果接收到命令为“放下”,机械爪释放物体

  52.     default:   break;

  53.     }     

  54.   }

  55. }


  56. void Catch()//拿起

  57. {

  58.   servo_arm12.write(map(servo_catch,0,180,500,2500));

  59. }

  60. void up ()//拿起

  61. {

  62.   servo_leg11.write(map(servo_up,0,180,500,2500));

  63. }


  64. void Release()//放下

  65. {

  66.   servo_arm12.write(map(servo_release,0,180,500,2500));

  67. }

  68. void down()//放下

  69. {

  70.   servo_leg11.write(map(servo_down,0,180,500,2500));

  71. }


  72. void MotorMode(int mode,int t) //直流电机模式;

  73. {

  74.   switch(mode)

  75.   {

  76.      case 1: Forward(t); break;

  77.      case 2: Back(t); break;     

  78.      case 3: Left(t); break;

  79.      case 4: Right(t); break;   

  80.      case 5: Stop(t); break;   

  81.   }

  82. }

  83. void Forward(int t) //前进

  84. {

  85.    digitalWrite(5,LOW);digitalWrite(6,LOW);

  86.   digitalWrite(10,HIGH);digitalWrite(9,HIGH);

  87.    delay(t); Stop(2);  

  88. }


  89. void Back(int t)    //后退

  90. {

  91.    digitalWrite(10,LOW);digitalWrite(9,LOW);

  92.    digitalWrite(5,HIGH);digitalWrite(6,HIGH);

  93.    delay(t);   Stop(2);

  94. }


  95. void Left(int t)   //左转

  96. {

  97.    digitalWrite(5,HIGH);digitalWrite(6,LOW);

  98.    digitalWrite(9,LOW);digitalWrite(10,HIGH);

  99.    delay(t); Stop(2);

  100. }


  101. void Right(int t)   //右转

  102. {

  103.    digitalWrite(5,LOW);digitalWrite(6,HIGH);

  104.    digitalWrite(10,LOW);digitalWrite(9,HIGH);

  105.    delay(t); Stop(2);

  106. }


  107. void Stop(int t)   //停止

  108. {

  109.     digitalWrite(5,HIGH);digitalWrite(6,HIGH);

  110.     digitalWrite(9,HIGH);digitalWrite(10,HIGH);

  111.     delay(t);  

  112. }

  113. void serialEvent() //程序会自动调用该程序;

  114. {

  115.     hbr640.lisen(); //在串口接收事件中调用语音识别的监听指令

  116. }
复制代码

观察语音控制效果(注意:将语音识别HBR640模块更改为运行模式)。

4. 资料下载

资料内容:

​①语音控制-例程源代码
​②语音控制-样机3D文件
③语音识别模块HBR640
资料下载地址:https://www.robotway.com/h-col-150.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 11:38 , Processed in 0.041004 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表