上篇介绍了ros里如何编写话题订阅者和发布者,本篇来做一个简单的应用,语音控制机器人行动。
视频展示地址:http://blog.jiutucao.com:9000/upload/2018/07/speech_move.mp4
在写代码之前需要电脑里配置pocketsphinx,这是一个开源的离线语音识别包,配置的方法自行百度,需要自己训练字库,建议字库不要太复杂,毕竟中国人说英文不是那么标准,太复杂的字库识别率太低。
程序思路很简单:
Pocketsphinx识别出语音后,会将识别出的语音发布到/Rog_result话题上,我们只需要订阅/Rog_result的消息,对数据做个判断,然后在回调函数里对速度数据进行处理,最后发布到控制速度的/cmd_vel话题上。由于训练的字库并不复杂,Pocketsphinx只能识别出字库里的内容,所以判断也并不复杂。
代码:speech_teleop.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <geometry_msgs/Twist.h>
#include <string>
#include <iostream>
using namespace std;
class voicespeech{
public:
float line;
float angle;
ros::Subscriber sub;
voicespeech(ros::NodeHandle n);