让无人机听懂我们说话

大部分无人机都要靠手机或手持遥控器控制。

总而言之,不管是转向还是拍照……都离不开双手来控制。

如果能让无人机听懂我们的诉求,根据语音提示来行动,那就太棒了。

之前曾有一款名叫 XEagle 的语音控制无人机在 Kickstarter 上众筹。

有了它之后,运动爱好者和户外工作人员获得了极大的解放。因为 XEagle 无需双手就能操控,其语音控制、智能手表一键控制、智能避障等功能,不仅将无人机的操控极简化,还能进行自动跟踪拍摄。

不过我们今天的重点不 XEagle,而是要给大家介绍如何构建无人机语音模块。

先来看一段演示:

当然,不是所有无人机都提供了类似的 SDK。所以目前这个方案主要支持的是 Parrot minidrone 系列产品。

相关 Python 和 JS 代码:

https://github.com/IoToutpost/dronecontrol

硬件需求:

1、Cargo 或 Mambo 这类支持蓝牙遥控的 Parrot minidrone 无人机。

2、负责把 AWS 云服务连接到无人机的 树莓派 。

软件需求:

1、配置遥控用的 Alexa 框架。

2、配置 lambda 将 Alexa 语音命令连接到 AWS。

关于AWS的 lambda 请访问:

https://aws.amazon.com/lambda/

3、在树莓派上安装这个 kickass 库(由@amymcgovern创建):

https://github.com/amymcgovern/pyparrot

这个库提供了python-api 来通过蓝牙连接无人机。

主要流程:

1、调用 AWS lambda 函数,该函数接收操作请求并将事件发送到队列(AWS SQS)。

关于 AWS 的 SQS 消息队列服务请访问:

https://aws.amazon.com/cn/sqs/

2、树莓派上的 DroneService 轮询 SQS 并处理事件

3、DroneService 通过蓝牙向 Parrot 无人机发送移动指令。

DroneService:

无人机服务是一个做以下工作的微循环程序:

轮询AWS的SQS,如果消息可用,则提取有效信息并调用相应的方法。

例如:”TakeOffDroneIntent” -> takeOff()
该方法调用 pyparrot 库来执行无人机的动作,如“向上移动”、“向下移动”、“着陆”。

Alexa 技能:

这个技能包支持6种类型的语言表达:
TakeOffDroneIntent: 无人机起飞
LandDroneIntent: 无人机降落
RotateDroneIntent: 无人机旋转+90或-90度。
位置:RotationType(2个值:[+ 90,-90])
定位精度:“顺时针” -> 90,“逆时针” -> -90。
DroneMovementIntent: 无人机在6个可能的方向上移动。
位置:DirectionType(6个值:[“向上”,“向下”,“向左”,“向右”,“向前”,“向后”])
HoverDroneIntent: 徘徊一次。
FlightPlanIntent: 无人机在 flight_plan 中调用硬编码的飞行计划

构建模型将各种话语指向这个任务集合。

一些提示和计划:

队列应该只有一个执行者和一个发布者,它不适用于多个树莓派轮询相同的队列。

除了AWS,其他云计算提供商也有类似的语音识别、消息队列服务。

该项目未来计划在树莓派中添加面部识别以支持“请无人机来找我”类型的用例,以及支持无人机内部通信。

小结:

以上内容只是用语音代替了双手,遥控器依然需要。之前也有其他人用 Alexa 实现了类似功能,但 IoT前哨站 认为改进的空间依然很大,希望大家可以继续创新。让无人机变得更加人性化!

作者:长空无名

本文内容来自IoT前哨站,转载请注明作者和出处。