关键词:
《ROS理论与实践》学习笔记(七)机器人语音交互
在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第八讲:机器人语音交互 。主要学习了讯飞开放平台、ROS的语音识别、输出和交互。
课程内容
在进行课程之前突然发现不能联网了,在网上找了很多办法,包括修改网络共享,桥接模式、NAT模式、自定义模式之类的,都不行,最后发现重启以下网络连接就好了。
$ sudo service network-manager stop
$ sudo rm /var/lib/NetworkManager/NetworkManager.state
$ sudo service network-manager start
1.讯飞开放平台使用
登录讯飞开放平台,在控制台创建一个应用robot_voice_ros_zzy,下载SDK
-
语音识别例程
首先对samples中的iat_online_record_sample进行编译$ source 64bit_make.sh
出现错误提示
alsa/asoundlib.h: No such file or directory
解决方法:
$ sudo apt-get install libasound2-dev
在bin目录下运行代码:
$ ./iat_online_record_sample
出现错误提示:
./iat_online_record_sample: error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory
解决方法:
把libmsc.so文件复制到usr/local/lib文件夹下$ sudo cp libs/x86/libmsc.so /usr/local/lib/ $ sudo ldconfig
可以通过麦克风或者音频文件输入,运行能够输出对应的文字
-
文字输出为音频例程
首先对samples中的tts_online_sample进行编译$ source 64bit_make.sh
在bin目录下运行代码:
$ ./tts_online_sample
程序输出一个名为tts_sample.wav的音频文件
2.ROS语音识别与语音输出
-
语音识别
创建一个节点iat_publish,创建subscriber用于接收唤醒信号,将wakeupFlag变量置位,创建publisher用于调用SDK的语音识别功能,识别成功后置位resultFlag,将识别出来的字符串发布。即通过topic通信唤醒一次,通过麦克风输入语音信号,将语音识别结果打印在屏幕上
代码来自课程代码包,不再贴出
启动方法:$ roscore $ rosrun robot_voice iat_publish $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
-
语音输出
创建一个节点,创建subscriber用于订阅voiceWords话题,接收输入的字符串,创建voiceWordCallback用于使用SDK接口将字符串转换成中文语音
代码来自课程代码包,不再贴出
启动方法:$ roscore $ rosrun robot_voice tts_subscribe $ rostopic pub /voiceWakeup std_msgs/String "data:'啊喽哈'"
-
语音输入与输出结合
通过launch文件同时启动两个节点,通过话题唤醒,然后接收麦克风输入信号,语音识别成字符串后,转换为语音。
代码来自课程代码包,不再贴出
启动方法:$ roslaunch robot_voice repeat_voice.launch $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
3.语音交互
创建一个节点voice_assistant,创建subscriber订阅voicewords话题,接收输入的字符串,创建voicewordscallback,通过if判断关键词,完成语音回复。
代码来自课程代码包,不再贴出
启动方法:
```
$ roslaunch robot_voice voice_assistant.launch
$ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
```
运行效果:
本讲作业
通过语音输入控制Gazebo仿真器中机器人的运动,后续更新。
结语
本讲主要学习了机器人的语音交互 ,主要学习了讯飞开放平台、ROS的语音识别、输出和交互,并在作业中加深理解。
《ros理论与实践》学习笔记机器人自主导航(代码片段)
《ROS理论与实践》学习笔记(九)机器人自主导航课程内容ROS中的导航框架导航框架中的关键功能包move_baseamcl机器人自主导航案例导航仿真程序接口move_base+gmapping在学习《ROS理论与实践》课程时,记录了学习过程... 查看详情
《ros理论与实践》学习笔记机器人slam建图(代码片段)
《ROS理论与实践》学习笔记(八)机器人SLAM建图课程内容常用SLAM功能包应用gmappinghectorcartographerrtabmap本讲作业1.在Gazebo中构建一个用于建图和导航的虚拟环境2.将自己构建的机器人模型放置到虚拟环境中,使用gmapping... 查看详情
ros理论与实践:机器人系统设计
还有一些连接Kinect、激光雷达 查看详情
机器人技术创新与实践旧版本大纲
具体参考:tianbot_mini机器人上手ROS/SLAM/Navigation究竟有多简单???2017-2018-2019-2020使用此版本(以ROS1为主)。2021-2022-依据具体情况,做了较多调整。课程编号学分2开课学期6学时2周课程类型集中实践课... 查看详情
《分布式机器学习:算法理论与实践》——re
分布式机器学习:算法、理论与实践——【1】分布式机器学习:算法、理论与实践2)——【2】 《分布式机器学习:算法、理论与实践》——【RE】 查看详情
蓝桥ros机器人之现代c++学习笔记7.2互斥量与临界区(代码片段)
看如下三段代码://mutexexample#include<iostream>//std::cout#include<thread>//std::thread#include<mutex>//std::mutexstd::mutexmtx;//mutexforcriticalsectionvoidprint_block(intn,charc)// 查看详情
机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)
...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情
机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)
...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情
《分布式机器学习:算法理论与实践》pdf+刘铁岩+资料学习
《分布式机器学习:算法、理论与实践》旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。下载:https://pan.baidu.com/s/1XeOGCQK5qWCba8VK0KU21w《分布式机器学习:算法、理论与实践... 查看详情
郑捷《机器学习算法原理与编程实践》学习笔记(第七章预测技术与哲学)7.3岭回归
7.3岭回归7.3.1验证多重共线性7.3.2岭回归理论7.3.3岭际分析7.3.4k值的判断7.3.5辅助函数 (1)导入多维数据集:加载数据集defloadDataSet(filename):numFeat=len(open(filename).readline().split(‘ ‘))-1#getnumberoffieldsdataMat=[]labelMat=[]fr=ope 查看详情
opencv-python学习笔记:目标检测理论体系与实践说明(代码片段)
引言本次是接着python-opencv学习笔记(七):滑动窗口与图像金字塔一起在实验楼所做实验,为啥中间隔了四篇才接着发出来,主因是我发文比较随意(懒),当时这部分并没有总结完,至少我... 查看详情
机器人编程实践-ros2基础与应用-第⑦版
...版如下: 摘要:LearnRightNow,PrepareForFuture课程围绕机器人操作系统(ROS2)的应用展开,包括机器人学的基础理论和常用工具。借助立体多样的示例,课程可以为使用ROS2进行机器人开发设计的学员提供一个... 查看详情
ros理论与实践:ros基础(代码片段)
用以下方式,可以添加到bashrc中、 echo”source~/catkin_ws/devel/setup.bash”>>~/.bashrcsource~/.bashrc add_executable(talkersrc/talker.cpp)target_link_libraries(talker$catkin_LIBRARIES)#add_dependencies(talker$PROJECT_NAME_generate_messages_cpp)add_executabl... 查看详情
slam+语音机器人diy系列:slam建图与自主避障导航——3.ros-navigation机器人自主避障导航(代码片段)
... 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习。在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命。本章将围绕机器人SLAM建图、导航避障、巡航... 查看详情
双目立体视觉-zed2ros双目视觉开发理论与实践2(代码片段)
ROS-ZEDNodeTostartaZEDROSnodeyoucanusethefollowingcommandsinashellconsole:ZED:$roslaunchzed_wrapperzed.launchZEDMini:$roslaunchzed_wrapperzedm.launchZED2:$roslaunchzed_wrapperzed2.launchZED2i:$roslaun 查看详情
双目立体视觉-zed2ros双目视觉开发理论与实践2(代码片段)
ROS-ZEDNodeTostartaZEDROSnodeyoucanusethefollowingcommandsinashellconsole:ZED:$roslaunchzed_wrapperzed.launchZEDMini:$roslaunchzed_wrapperzedm.launchZED2:$roslaunchzed_wrapperzed2.launchZED2i:$roslaun 查看详情
《机器学习算法原理与编程实践》学习笔记
(上接第一章)1.2对象、矩阵与矢量化编程1.2.1对象与维度(略)1.2.2初识矩阵(略)1.2.3矢量化编程与GPU运算(略)1.2.4理解数学公式与NumPy矩阵运算1.矩阵的初始化#coding:utf-8importnumpyasnp#导入NumPy包#创建3*5的全0矩阵和全1的矩阵my... 查看详情
因果推断笔记——相关理论:rubinpotentialpearl倾向性得分与机器学习异同(代码片段)
文章目录1一些因果推断涉及概念1.0因果推断的几个境界1.1内生性问题1.1.1内生性解释1.1.2内生性问题有四种常见形式1.1.3内生性的解决方案1.1.3.1自然实验法——随机实验1.1.3.2双重差分法Difference-in-Difference(DID)1.1.3.3工具... 查看详情