A project that using mandarin Chinese to control drones
这是一个致力于使用普通话的自然语音来控制无人机的本科毕设项目
这是一个勉强可行的方案,项目事实上没有完全达到预期目标,仅是勉强完成项目要求
但我认为已完成的部分,仍有较好的参考价值,尤其对尝试建立和PC上位机协同的无人机控制系统的初学者或本科生
将项目整理于此,希望可以帮到你
项目的总体架构如下所示:
这个项目架构看着复杂,但是大多使用的是已有的开源架构,本项目核心工作量是三点:
1.运行于PC上位机的语音识别与无人机飞行指令程序
2.运行于机载树莓派上的无人机飞行控制程序
3.以恰当的方式搭建系统,使得语音识别程序和飞行指令程序得以协同工作
尤其对于第2点,需要注意的是,本项目目前的实现程度为“通过语音指令,命令无人机运行已写好的不同的运动脚本”,其中已写好的运动脚本是不可时刻更改的,需要停机重新上传才能修改脚本
即和“一般意义上的用语音控制无人机”的含义不同,这是一种低配版的语音控制手段。但是本项目已建立了系统的数据连接,推测修改位于机载树莓派的运动脚本可以达到“一般意义上的用语音控制无人机”的目标
语音识别程序基于这个项目开发,语音识别算法部分使用的是MASR的deemo
事实上本项目完全可以采用其他的语音识别算法,语音识别和无人机飞行指令部分耦合性较低,使用MASR的主要原因是,这是一个开源且端到端的语音识别算法,完全本地化运行且和其他项目耦合性低
无人机飞行指令程序基于DroneKit库开发,参考了苍穹四轴的项目文件
蓝牙麦克风,一插就行,带个Pyaudio库就可以了
出于便携性的考虑(由于技术水平不够),无人机飞行指令程序写在了自动语音转文本的程序下面,即当语音转换为文本后,提取文本中的部分有关飞行指令的术语,准备将其发送给树莓派执行,目前做到的是这一部分的系统协同也没有问题
这两个程序的通信主要是通过组网后SSH登录实现的
组网:PC连接树莓派上的热点进行组网,当然也可以用其他方式
调试:PC开了一个Ubuntu的虚拟机便于SSH调试,当然也可以用其他方式
自动化通信:主要通过Paramiko库进行,具体实现请看这里的“树莓派test.py”文件
执行:SSH登陆后,执行已写好的命令,如这里的命令
使用已有的成熟接线方法,比如这个,当然也可以用其他方式进行接线
本来这并不需要单独开一个写,但是实在坑踩得太惨了,强烈建议试图复现的工作者完全按照该文件中第三行的要求进行环境配置
顺便,至少在2021.7前,DroneKit库仅支持python2,即树莓派上的运行环境不能是python3.x系列,需要是python2.x系列
以上,希望可以帮到你
自述文档未来会继续更新,添加更多细节 当前版本为:2.3