首页 百科知识 语音识别与机器人动作控制程序设计

语音识别与机器人动作控制程序设计

时间:2022-10-04 百科知识 版权反馈
【摘要】:基于语音识别模块控制机器人动作时,首先需要通过语音配置上位机,把需要的关键字让语音识别模块识别。一旦发出匹配的语音,语音识别模块就会通过串口发出4个字节的匹配地址命令,底层控制板接收到4个字节的匹配信息后,最终做出判断该执行什么样的动作。如果要通过语音识别模块控制机器人左转或者右转,即发出左转命令,机器人就会左转,发出右转命令,机器人就会右转,那么该如何操作呢?

基于语音识别模块控制机器人动作时,首先需要通过语音配置上位机,把需要的关键字让语音识别模块识别。一旦发出匹配的语音,语音识别模块就会通过串口发出4个字节的匹配地址命令,底层控制板接收到4个字节的匹配信息后,最终做出判断该执行什么样的动作。

下面举一个例子做说明。

如果要通过语音识别模块控制机器人左转或者右转,即发出左转命令,机器人就会左转,发出右转命令,机器人就会右转,那么该如何操作呢?

首先使用上位机进行关键字匹配,匹配代码如下:

0:11 22 33 44:xiao mi za::

1:A5 07 07 5B:zuo zhuan:p14=1:01

2:A5 08 08 5B:you zhuan:p14=0:01

通过上面介绍的方法将下载到语音识别模块中,然后把语音识别模块设置为串口输出模式。

接下来需要对底层控制板进行编程,根据识别信息控制机器人运动。底层控制板的程序代码如下:

/*

语音识别模块使用模拟串口

* RX is digital pin 2 (connect to TX of other device)

* TX is digital pin 3 (connect to RX of other device)

通过语音模块控制机器人左转或右转

*/

#include 〈Software Serial.h〉

Software Serial my Serial(2, 3);// RX, TX

Char addr[4];

int INA = 4; //电机 A 正反转控制端

int PWMA = 5;//电机 A 调速端

int INB = 7; //电机 B 正反转控制端

int PWMB = 6;//电机 B 调速端

void motospd(int sp1,int sp2) //电机速度控制函数,括号内分别为左右电机速度值

{ //范围-255~+255,正值为正转,负值为反转

if(sp1〉0)

digital Write(INA, HIGH);

else

digital Write(INA, LOW);

if(sp2〉0)

digital Write(INB, HIGH);

else

digital Write(INB, LOW);

analog Write(PWMA,abs (sp1));

analog Write(PWMB,abs (sp2));

}

void setup(){

my Serial.begin(9600);

}

void loop(){

if(my Serial.available()==4)//接收到4个字节

{

Addr[0] = my Serial.read();

Addr[1] = my Serial.read();

Addr[2] = my Serial.read();

Addr[3] = my Serial.read();

}

if(addr[1] == 0x07)

{

motospd(50,100);//左转

}

else if(addr[1]==0x08)

{

motospd(100,50);//右转

}

else motospd(100,100);//直行

delay(50);

}

在这个例子中,主要判断第二个字节就可以判断出识别的是哪一个声音,因为左转(A5 07 07 5B:zuo zhuan:p14=1:01)和右转(A5 08 08 5B:you zhuan:p14=0:01)的第一个字节全部为“0x A5”,无法判断,而第二个字节,一个为“0x08”,一个为“0x07”,则很容易判断出来。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈