之前做的机器人小车基本都属于电脑或手机控制操作。目前,使用语音控制机器人小车运动,让机器人导航去指定地点,已经成为热门,并且语音识别技术已经有落地方案,可满足生活中的基本需要。有些语音芯片通过高算力处理器运行神经网络识别,并集成若干条语音模型,然后通过串口对外输出识别结果,完成语音识别的使用,有些模快还有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协议特点
- 使用发布/订阅消息模式,提供一对多的消息分发,解除应用程序耦合。
- 消息传输对有效载荷内容不可知。
- 使用TCP/IP提供基础网络连接。
- 有3个消息发布服务质量级别。
- 轻量传输,协议交换最小化,以降低网络网络流量。
- 提供一种机制,当客户端异常中断时,利用 Last Will 和 Testament 特性来通知有关各方。
- 对于不需要搭建太复杂的机器人,笔者认位easy_mqos就可以满足自主建图和避障导航的功能.
- 支持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