如何使用ROS和easymqos快速搭建一辆语音控制导航的机器人

之前做的机器人小车基本都属于电脑或手机控制操作。目前,使用语音控制机器人小车运动,让机器人导航去指定地点,已经成为热门,并且语音识别技术已经有落地方案,可满足生活中的基本需要。有些语音芯片通过高算力处理器运行神经网络识别,并集成若干条语音模型,然后通过串口对外输出识别结果,完成语音识别的使用,有些模快还有TTS,任意文本输出语音,和机器人交互更方便。

如何快速搭建一辆语音控制导航的机器人?

将语音控制导航分为:

语音识别、控制、导航3部分。
一 、语音识别技术

第一种常见的是将语音识别算法封装于集成芯片内。

在这里插入图片描述

常见的有LD3320 和AI离线识别的芯片。

此类模块的优点在于将算法集成到芯片内部,对外提供串口、IIC等接口,用户使用指定协议和模块通信并得到识别的结果。

另一种AI算法,将算法集成到Linux处理器中,直接得到语音识别结果,

作者已经验证可在树莓派用的有whisper.cpp 的AI神经网络。

whisper目录
在这里插入图片描述

图片

在这里插入图片描述

树莓派接插USB免驱麦克风

使用arecord 指令确定设备是否存在

pi@pi-desktop:~/whisper.cpp$ sudo arecord -l
**** List of CAPTURE Hardware Devices ****
card 3: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]Subdevices: 1/1Subdevice #0: subdevice #0

接着使用whisper 中编译出来的command 指令测试语音识别

目前笔者仅实现了英文的识别,普通话识别会抱溢出,大概率猜测树莓派没有安装中文包之类的输出,后续接着测试。

最后的树莓派语音识别效果:
https://www.bilibili.com/video/BV15C411W7BR/?spm_id_from=333.999.0.0

二、 控制 与 导航

控制与导航的功能可以认为是SLAM中定位的实现,具体就是定位精确与导航,导航能实现路径规划、航点跟随、避障等。

在我们所开发的机器人中,将语音算法融合到处理器中,先完成建图后,借助网页UI设定地点,然后通过语音识别后将命令发给navigation包。

控制与导航可以用ROS 实现,也可以快速用easymqos实现,也可以将两者优势结合,更快做出。

EasymqOS 机器人分布式开发框架
easy_mqOS 是笔者仿照ROS 搭建的基于MQTT的简易机器人分布式开发框架,是一种轻量级并且十分容易上手的框架,支持多个节点的主题的订阅和单topic发布,节点之间独立、解耦合。没有复杂的文件配置,一定的make编程基础,像正常启动服务一样,就可以运行。甚至可以在嵌入式linux上使用,而不用安装Ubuntu没有复杂的插件,很容易上手和学习。支持c.c++ ,python,js.MQTT协议特点

  1. 使用发布/订阅消息模式,提供一对多的消息分发,解除应用程序耦合。
  2. 消息传输对有效载荷内容不可知。
  3. 使用TCP/IP提供基础网络连接。
  4. 有3个消息发布服务质量级别。
  5. 轻量传输,协议交换最小化,以降低网络网络流量。
  6. 提供一种机制,当客户端异常中断时,利用 Last Will 和 Testament 特性来通知有关各方。
  7. 对于不需要搭建太复杂的机器人,笔者认位easy_mqos就可以满足自主建图和避障导航的功能.
  8. 支持ros

启动程序

/easymqOs_navigation$ ./navigation
/easymqos_basecomm$ ./basecomm_node
/easymqos_imu$ python3 read_bno.py

适合的人群:

想入门学习机器人规划和导航的同学。
2. 快速入门SLAM建图的同学。
3. 学习自主导航的同学。
4. 学习局部规划的同学。
5. 学习避障算法的同学。
6. 想快速测试效果的同学。
7. 关注神经网络和机器人应用的同学。
8. 机器人爱好者。

三、演示效果

https://www.bilibili.com/video/BV1Nj421f7HV/?spm_id_from=333.999.0.0&vd_source=2056365a3e689ccb27ee312065d1714c
在这里插入图片描述
视频中使用easymqos+ros快速实现。
另外,控制页面基于HTML+css 和mqtt协议专门开发了一个交互的web软件,

在这里插入图片描述
感兴趣的可以关注公号下载。部分源于《轮式自主移动机器人编程实战》

公号:视觉动力机器人
qq:583302177

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析:未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…

XDP学习笔记

XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。 概念 eBPF BPF(Berkeley Packet Filter)是一种灵活且高效的数据包过滤技术,最初由 BSD Unix 中的网络子系统引入;BPF 允许用…

WebRTC:真正了解 RTP 和 RTCP

介绍 近年来,通过互联网进行实时通信变得越来越流行,而 WebRTC 已成为通过网络实现实时通信的领先技术之一。WebRTC 使用多种协议,包括实时传输协议 (RTP) 和实时控制协议 (RTCP)。 RTP负责通过网络传输音频和视频数据,而RTCP负责…

植物miRNA数据库PmiREN2.0的使用

前记 miRNA数据库是一个用于存储和分析microRNA(miRNA)序列和相关信息的数据库。miRNA是一类具有约20-24个核苷酸的非编码小RNA分子,通过调控基因表达来参与细胞生物学过程。miRNA数据库中通常包含miRNA序列、miRNA靶向基因、miRNA表达谱、m…

以题为例浅谈文件包含

什么叫做文件包含 文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制, 包含其他恶意文件,导致了执行非预期代码。 文件包含漏洞(File Inclusion Vulnerability)是一种常见的网络安全漏洞,它允…

2023年总结:一个普通程序员如何挑选出价值千万的职业赛道

​​​​​​​ 引言 随着2023年的序幕缓缓落下,我终于在岁月的流转中捕捉到了一条隐秘而又公开的真理。它悄然告诉我们,成功并非单纯由勤劳的双手雕琢,一份耕耘未必有一份收获,而是在于我们如何在命运的十字路口作出关键选择。那…

结构体联合体枚举和位段

文章目录 结构体结构体类型的声明特殊的声明 结构的自引用结构体变量的定义和初始化结构体内存对齐为什么要内存对齐结构体传参结构体实现位段(位段的填充&可移植性)位段位段的内存分配空间如何开辟位段的跨平台问题位段的应用 枚举枚举类型的定义枚…

重学SpringBoot3-整合SSM

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-整合SSM Spring Boot整合SSM示例1. 创建Spring Boot项目2. 配置数据源3. 配置MyBatis4. 实现数据访问对象(DAO)5. 编写服务层和控…

【C++庖丁解牛】List容器的介绍及使用 | 深度剖析 | list与vector的对比

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. list的介绍1.1 list的…

CentOS Stream9更改ip地址,网关(设置静态ip)

使用grep命令查询ens160文件所在的文件夹处 grep -rnw /etc -e ens160 然后用vi命令打开文件进行修改 vi /etc/NetworkManager/system-connections/ens160.nmconnection 配置: 假设将ip地址改为192.168.200.130 [connection] idens33 uuid0050f214-01a7-395e-…

环形链表2(C++), test ok

1. 题目 2. 思路分析: 与环形链表1一样,我们需要定义慢指针和快指针,确定链表是否有环,如果链表没有环的话,直接置空即可。如果链表有环,则需要向环形链表1一样,让快指针不断追赶慢指针&#x…

汽车电子零部件(4):行泊一体ADAS

前言: 现阶段智能汽车行业正在大规模力推无限接近于L3的L2++或L2.9自动驾驶量产落地,类似于当初智能手机替换传统手机的行业机会期。智能汽车常见的智能驾驶功能包括: 行车场景:自适应巡航控制ACC;自动变道辅助ALC;交通拥堵辅助TJA;车道居中LCC;领航辅助NOA; 泊车场…

YOLOv9改进策略:注意力机制 | EMA:基于跨空间学习的高效多尺度注意力,效果优于ECA、CBAM、CA

💡💡💡本文改进内容:加入EMA注意力,一种基于跨空间学习的高效多尺度注意力,效果优于ECA、CBAM、CA等经典注意力。 yolov9-c-EMA summary: 970 layers, 51011154 parameters, 51011122 gradients, 238.9 GF…

JavaScript 基础知识

一、初识 JavaScript 1、JS 初体验 JS 有3种书写位置&#xff0c;分别为行内、内部和外部。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

pytorch 入门基础知识二(Pytorch 02)

一 微积分 1.1 导数和微分 微分就是求导&#xff1a; %matplotlib inline import numpy as np from matplotlib_inline import backend_inline from d2l import torch as d2l def f(x):return 3 * x ** 2 - 4 * x 定义&#xff1a; 然后求 f(x) 在 x 1 时的导数&#xff…

接口测试之文件下载

在工作中对于下载接口&#xff0c;经常会有这样的疑问&#xff1a;这类接口一般功能比较稳定&#xff0c;但是又比较重要&#xff0c;需要占用回归测试时间&#xff0c;有没有可替代的方式&#xff1f; 答案肯定是有的&#xff0c;可以从接口测试/UI自动化测试介入&#xff0c…

Postman-Installation has failed

如图&#xff1a; 解决方法&#xff1a; 打开文件夹 Postman-win64-Setup 点击Postman.exe 即可

c语言的字符串函数详解

文章目录 前言一、strlen求字符串长度的函数二、字符串拷贝函数strcpy三、链接或追加字符串函数strcat四、字符串比较函数strcmp五、长度受限制字符函数六、找字符串2在字符串1中第一次出现的位置函数strstr七、字符串切割函数strtok&#xff08;可以切割分隔符&#xff09;八、…

【C语言】分支语句(逻辑运算符与关系运算符)

文章目录 **逻辑运算符(&&、||、!)**逻辑运算符特点短路短路-逻辑与短路-逻辑或 **关系运算符&#xff08;relational expression&#xff09;**运算操作符的结合律、运算符 **选择结构/分支结构****if 语句****复合句的if语句(if...else..语句)****不良风格的程序** *…

sqllab第十八关通关笔记

知识点&#xff1a; UA注入 不进行url解析&#xff0c;不能使用 %20 编码等操作出现在User-agent字段中一般为insert语句 insert 表名(字段1&#xff0c;字段2&#xff0c;。。。) values(数据1&#xff0c;数据2&#xff0c;。。。) 通过admin admin进行登录发现页面打印出了…