题目要求:通过对科大讯飞SDK的使用,实现对机器人的语音控制。
提前说明:本贴只是能识别两个英文(forward,stop)。其余语音同理。
个人思路:因为我们根据视频中所讲,已经知道iat_publish.cpp的功能是:语音听写(iFly Auto Transform)技术能够实时地将语音转换成对应的文字。发布一个话题"voiceWords"
ros::Publisher voiceWordsPub = n.advertise<std_msgs::String>("voiceWords", 1000);
所以只需要创建一个node订阅voiceWords这个话题,并在回调函数中实现对速度的赋值,并在cmd_vel话题中将消息
geometry_msgs::Twist vel_msg
发布,就能实现对小车的控制。
解决方案:
1> 创建voice_controll.cpp,其内容如下,
/*
*此节点订阅语音消息,发布速度指令
*/
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
#include<std_msgs/String.h>
#include<string>
//string forward = "forward";
//String backward = "向后";
//String leftward = "向左";
//String rightward = "向右";
geometry_msgs::Twist vel_msg; //发布的速度消息
void voiceCallback(const std_msgs::StringConstPtr& msg)//回调函数,接收到voice后启动该函数
{
//ROS_INFO("msg get!");
// 将接收到的消息打印出来
ROS_INFO("I heard: [%s]", msg->data.c_str());
if (msg->data == "forward\u3002")
{
vel_msg.lin