早期航空器,1818(来源:维基百科&美国国会数据库)
在制造了一个图像识别机器人后,显然下一步是制作一个可飞行的版本。于是我决定打造一款能够进行面部识别并响应语音命令的自动化无人机。
▍选择一款预制无人机
对无人机进行编程,最难的部分是如何开始,我是从组装无人机零件开始的。但是几乎和之前所有DIY项目一样,自己组装无人机花了我很多的钱。而且坦白的说,我手工打造的无人机一直没有稳定飞行过。可以肯定的是,直接购买预制版本才是更加简单经济的选择。
大多数无人机制造商都声称提供API接口,但对于业余爱好者来说并没有什么明显的优势。市面上带似乎可用的API接口的无人机,大多售价都超过1000美元,这是一个很高的进入门槛。
经过一些调查以后,我发现了Parrot AR Drone 2.0(见下图)。我认为对于业余爱好者来说,这是一款理想的机器。它的价格不高,还可以进行编程。你可以选择花200美元买一台新机器,但由于很多人买了无人机又从来不使用它们,因此购买一台二手机器也是个不错的选择。在eBay上二手无人机的售价大约是130美元甚至更低。
△我收藏的各类无人机,Parrot AR Drone无人机挂在最左边
Parrot AR无人机飞行的稳定性没有更贵的新款 Parrot Bebop 2.0 好(售价大约550美元),但是Parrot AR提供一个好用的node.js客户端库叫做node-ar-drone,很适合在上面进行开发。
另外一个优势:Parrot AR无人机很结实。在测试自动化程序的过程中,无论它被撞墙上、家具上、室内植物上和客人身上,他仍然能够良好的飞行。
相比给地面机器人编程,给无人机编程最糟的地方是电池续航时间短。一块电池需要充电几个小时,才能飞行大约10分钟的时间。因此我建议多买两块备用电池,测试的时候可以循环使用。
▍给我的无人机编程
由于Java天生的驱动能力,因此是非常理想的无人机编程语言。相信我,无人机飞行中会遇到很多异步事件。我虽然没有在Node上花费很多时间,但这个语言让我印象深刻。我最近一次认真的为机器人编程使用的是C语言。用C语言处理线程和各种异常是十分痛苦的,因此最好少用。我希望有人为其它无人机平台建立Java开发包,因为这个语言让我们处理不确定性的开发事件,变得简单有趣。
架构
我决定在笔记本电脑上运行逻辑,在云端进行机器学习。比起直接在树莓派硬件上运行神经网络,这种架构的延迟更低。我认为这种架构对目前的业余无人机开发项目来说是可行的。
微软、谷歌、IBM和亚马逊都有快速、廉价的云端机器学习API。最终,我选择了微软认知服务API(Cognitive Service API)。因为这是唯一一个提供定制面部识别功能的API。
△无人机的架构
入门
默认情况下,Parrot AR Drone2.0带有可供客户端连接的无线网络。这个功能对编程者来说非常麻烦。每次你希望尝试什么的时候,需要先断开你的网络然后连上无人机的网络。幸运的是,有一个名叫ardrone-wpa2的项目非常有用。它可以通过脚本让无人机加入你自己的WiFi网络。
远程登录到无人机是件十分有趣的事。Parrot运行在一个剥离版本的Linux上。你最近一次使用远程登录功能是什么时候?连接了什么东西?以下是打开终端并直接登录无人机的示例。
% /connect “The Optics Lab” -p “particleorwave” -a 192.168.0.1 -d 192.168.7.43
% telnet 192.168.7.43
用命令行模式飞行
安装node库以后,创建一个node.js REPL(Read-Evaluate-Print-Loop)并用它引导无人机:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !