Lukas Biewald卒业于斯坦福年夜学,取得数学学士学位和盘算机迷信硕士学位。Lukas曾任职Yahoo日本搜刮团队主管,以后作为高等数据迷信家就职于Powerset,该公司于2008年被微软收买。
深度进修和便宜硬件的摸索
晚期航空器,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分钟的时光。是以我建议多买两块备用电池,测试的时刻可以轮回应用。
给我的无人机编程
因为Javascript生成的驱动才能,是以长短常幻想的无人机编程说话。信任我,无人机飞翔中会碰到许多异步事宜。我固然没有在Node上消费许多时光,但这个说话让我印象深入。我比来一次卖力的为机械人编程应用的是C说话。用C说话处置线程和各类异常是非常苦楚的,是以最好罕用。我愿望有工资其它无人机平台树立Javascript开辟包,由于这个说话让我们处置不肯定性的开辟事宜,变得简略风趣。
架构
我决议在笔记本电脑上运转逻辑,在云端停止机械进修。比起直接在树莓派硬件上运转神经收集,这类架构的延迟更低。我以为这类架构对今朝的专业无人机开辟项目来讲是可行的。
微软、谷歌、IBM和亚马逊都有疾速、便宜的云端机械进修API。终究,我选择了微软认知办事API(Cognitive Service API)。由于这是独一一个供给定制脸部辨认功效的API。
△无人机的架构
入门
默许情形下,Parrot AR Drone2.0带有可供客户端衔接的无线收集。这个功效对编程者来讲异常费事。每次你愿望测验考试甚么的时刻,须要先断开你的收集然后连上无人机的收集。荣幸的是,有一个名叫ardrone-wpa2的项目异常有效。它可以经由过程剧本让无人机参加你本身的WiFi收集。
长途登录到无人机是件非常风趣的事。Parrot运转在一个剥离版本的Linux上。你比来一次应用长途登录功效是甚么时刻?衔接了甚么器械?以下是翻开终端并直接登录无人机的示例。
用敕令行形式飞翔
装置node库今后,创立一个node.js REPL(Read-evaluate-Print-Loop)并用它引诱无人机:
假如你一向随着做到这步,那末如今你的无人机确定曾经摔过至多几回了。我上千次从新粘贴了平安壳,直到它完全破坏,不能不买一个新的。我迟疑要不要提这个,现实上Parrot AR在不装置平安壳的情形下飞得更好。但无人机在没有平安壳的情形下加倍风险,由于当无人机撞上甚么器械时,螺旋桨能够会折断,并且会在家具上留下陈迹。
经由过程网页掌握飞翔
为无人机构建基于web的操作界面其实不艰苦,并且成果使人满足(见下图)。应用Express.js框架可以轻松的构建一个英俊的web办事器。
我设置了一个按钮来完成AJAX要求。
从无人机上取得视频流
我发明应用无人机摄像头发送反应的最好办法是翻开一个衔接,并将我的收集办事器中的PNG持续发送到我的网站。我的收集办事器应用AR无人机库从无人机摄像头中持续拉取PNG图片。
在无人机图象上运转人脸辨认
Azure的脸部API功效壮大且易用。它可以辨认你上传的同伙照片,也能够猜想年纪和性别,我发明这两个功效的精确率高得使人惊奇。延迟时光约为200毫秒,费用是1.5美元/1,000次。对我开辟的这个法式来讲,这是完整公道的。上面是关于若何发送一个图象并停止脸部辨认的代码。
我应用ImageMagick库来正文PNG图片中的面貌。在这点上有许多可以扩大的偏向,如应用情绪API肯定脸部的情感等。
运转语音辨认掌握无人机
语音辨认部门最辣手的不是语音辨认自己,而是以微软的Speech API请求的格局将音频流从网页传输到当地办事器,终究代码的年夜部门是为了完成这个功效。一旦你可以或许经由过程单通道收集到准确频率的音频,这个API便可以很好的任务,并且异常轻易应用。它的价钱是4美元/1000次要求,这关于营业喜好者的运用来讲,根本上算是收费的。
RecordRTC有一个很好的库,这是客户端收集音频录制的好终点。在客户端上,我们可以添加代码来保留音频文件:
我应用FFmpeg法式削减音频采样点,并将其归并为一个通道,上传到微软:
自立搜刮途径
我用ardrone-autonomy库为我的无人机绘制主动寻径地图。在无人机有数次坠落在客堂的家具和植物上后,我老婆好意的建议我把我的项目搬到车库里去。那边没有太多可损坏的器械了,但也没有太多的空间(见下图)。
△在我的“试验室”里试飞无人机
假如我能取得更年夜的试验空间,我会持续研讨智能搜刮算法。但如今我只须要让我的无人性能够腾飞、扭转,去寻觅我的同伙和仇敌:
小结
一旦树立好一切,你可以经由过程API掌握无人机视频源,无人机编程就变得异常风趣。随同着新的图象辨认技巧,给我们供给了各类运用的能够,不管从不雅察空中植物到在墙壁上作画。Parrot无人机不是为在室内小空间飞翔设计的,一个价钱更高的无人性能让全部运用酿成实际。终究,无人机遇变得加倍稳固,实际世界中将涌现年夜量相似的运用。
微软的认知办事云API易于应用并且价钱廉价。起首,我担忧无人机的异常广角摄像头会影响脸部辨认,而无人机螺旋桨的乐音会搅扰语音辨认。但整体来讲,表示要好过预期。延迟成绩也不像我所担忧的那样。应用云盘算处置及时图象流看起来仿佛是个奇异的架构,但它能够是很多运用的将来之路。