Lukas Biewald卒業(yè)于斯坦福年夜學(xué),取得數(shù)學(xué)學(xué)士學(xué)位和盤算機迷信碩士學(xué)位。Lukas曾任職Yahoo日本搜刮團隊主管,以后作為高等數(shù)據(jù)迷信家就職于Powerset,該公司于2008年被微軟收買。
深度進修和便宜硬件的摸索
晚期航空器,1818(起源:維基百科&美國國會數(shù)據(jù)庫)
在制作了一個圖象辨認機械人后,明顯下一步是制造一個可飛翔的版本。因而我決議打造一款可以或許停止臉部辨認并呼應(yīng)語音敕令的主動化無人機。
選擇一款預(yù)制無人機
對無人機停止編程,最難的部門是若何開端,我是從組裝無人機零件開端的。然則簡直和之前一切DIY項目一樣,本身組裝無人機花了我許多的錢。并且坦率的說,我手工打造的無人機一向沒有穩(wěn)固飛翔過。可以確定的是,直接購置預(yù)制版本才是加倍簡略經(jīng)濟的選擇。
年夜多半無人機制作商都宣稱供給API接口,但關(guān)于專業(yè)喜好者來講并沒有甚么顯著的優(yōu)勢。市情上帶仿佛可用的API接口的無人機,年夜多售價都跨越1000美元,這是一個很高的進入門坎。
經(jīng)由一些查詢拜訪今后,我發(fā)明了Parrot AR Drone 2.0(見下圖)。我以為關(guān)于專業(yè)喜好者來講,這是一款幻想的機械。它的價錢不高,還可以停止編程。你可以選擇花200美元買一臺新機械,但因為許多人買了無人機又歷來不應(yīng)用它們,是以購置一臺二手機械也是個不錯的選擇。在eBay上二手無人機的售價年夜約是130美元乃至更低。
△我珍藏的各類無人機,Parrot AR Drone無人機掛在最右邊
Parrot AR無人機飛翔的穩(wěn)固性沒有更貴的新款 Parrot Bebop 2.0 好(售價年夜約550美元),然則Parrot AR供給一個好用的node.js客戶端庫叫做node-ar-drone,很合適在下面停止開辟。
別的一個優(yōu)勢:Parrot AR無人機很壯實。在測試主動化法式的進程中,不管它被撞墻上、家具上、室內(nèi)植物上和主人身上,他依然可以或許優(yōu)越的飛翔。
比擬給空中機械人編程,給無人機編程最糟的處所是電池續(xù)航時光短。一塊電池須要充電幾個小時,能力飛翔年夜約10分鐘的時光。是以我建議多買兩塊備用電池,測試的時刻可以輪回應(yīng)用。
給我的無人機編程
因為Javascript生成的驅(qū)動才能,是以長短常幻想的無人機編程說話。信任我,無人機飛翔中會碰到許多異步事宜。我固然沒有在Node上消費許多時光,但這個說話讓我印象深入。我比來一次賣力的為機械人編程應(yīng)用的是C說話。用C說話處置線程和各類異常是非常苦楚的,是以最好罕用。我愿望有工資其它無人機平臺樹立Javascript開辟包,由于這個說話讓我們處置不肯定性的開辟事宜,變得簡略風趣。
架構(gòu)
我決議在筆記本電腦上運轉(zhuǎn)邏輯,在云端停止機械進修。比起直接在樹莓派硬件上運轉(zhuǎn)神經(jīng)收集,這類架構(gòu)的延遲更低。我以為這類架構(gòu)對今朝的專業(yè)無人機開辟項目來講是可行的。
微軟、谷歌、IBM和亞馬遜都有疾速、便宜的云端機械進修API。終究,我選擇了微軟認知辦事API(Cognitive Service API)。由于這是獨一一個供給定制臉部辨認功效的API。
△無人機的架構(gòu)
入門
默許情形下,Parrot AR Drone2.0帶有可供客戶端銜接的無線收集。這個功效對編程者來講異常費事。每次你愿望測驗考試甚么的時刻,須要先斷開你的收集然后連上無人機的收集。榮幸的是,有一個名叫ardrone-wpa2的項目異常有效。它可以經(jīng)由過程劇本讓無人機參加你本身的WiFi收集。
長途登錄到無人機是件非常風趣的事。Parrot運轉(zhuǎn)在一個剝離版本的Linux上。你比來一次應(yīng)用長途登錄功效是甚么時刻?銜接了甚么器械?以下是翻開終端并直接登錄無人機的示例。
用敕令行形式飛翔
裝置node庫今后,創(chuàng)立一個node.js REPL(Read-evaluate-Print-Loop)并用它引誘無人機:
假如你一向隨著做到這步,那末如今你的無人機確定曾經(jīng)摔過至多幾回了。我上千次從新粘貼了平安殼,直到它完全破壞,不能不買一個新的。我遲疑要不要提這個,現(xiàn)實上Parrot AR在不裝置平安殼的情形下飛得更好。但無人機在沒有平安殼的情形下加倍風險,由于當無人機撞上甚么器械時,螺旋槳能夠會折斷,并且會在家具上留下陳跡。
經(jīng)由過程網(wǎng)頁掌握飛翔
為無人機構(gòu)建基于web的操作界面其實不艱苦,并且成果使人滿足(見下圖)。應(yīng)用Express.js框架可以輕松的構(gòu)建一個英俊的web辦事器。
我設(shè)置了一個按鈕來完成AJAX要求。
從無人機上取得視頻流
我發(fā)明應(yīng)用無人機攝像頭發(fā)送反應(yīng)的最好辦法是翻開一個銜接,并將我的收集辦事器中的PNG持續(xù)發(fā)送到我的網(wǎng)站。我的收集辦事器應(yīng)用AR無人機庫從無人機攝像頭中持續(xù)拉取PNG圖片。
在無人機圖象上運轉(zhuǎn)人臉辨認
Azure的臉部API功效壯大且易用。它可以辨認你上傳的同伙照片,也能夠猜想年紀和性別,我發(fā)明這兩個功效的精確率高得使人驚奇。延遲時光約為200毫秒,費用是1.5美元/1,000次。對我開辟的這個法式來講,這是完整公道的。上面是關(guān)于若何發(fā)送一個圖象并停止臉部辨認的代碼。
我應(yīng)用ImageMagick庫來正文PNG圖片中的面貌。在這點上有許多可以擴大的偏向,如應(yīng)用情緒API肯定臉部的情感等。
運轉(zhuǎn)語音辨認掌握無人機
語音辨認部門最辣手的不是語音辨認自己,而是以微軟的Speech API請求的格局將音頻流從網(wǎng)頁傳輸?shù)疆數(shù)剞k事器,終究代碼的年夜部門是為了完成這個功效。一旦你可以或許經(jīng)由過程單通道收集到準確頻率的音頻,這個API便可以很好的任務(wù),并且異常輕易應(yīng)用。它的價錢是4美元/1000次要求,這關(guān)于營業(yè)喜好者的運用來講,根本上算是收費的。
RecordRTC有一個很好的庫,這是客戶端收集音頻錄制的好終點。在客戶端上,我們可以添加代碼來保留音頻文件:
我應(yīng)用FFmpeg法式削減音頻采樣點,并將其歸并為一個通道,上傳到微軟:
自立搜刮途徑
我用ardrone-autonomy庫為我的無人機繪制主動尋徑地圖。在無人機有數(shù)次墜落在客堂的家具和植物上后,我老婆好意的建議我把我的項目搬到車庫里去。那邊沒有太多可損壞的器械了,但也沒有太多的空間(見下圖)。
△在我的“試驗室”里試飛無人機
假如我能取得更年夜的試驗空間,我會持續(xù)研討智能搜刮算法。但如今我只須要讓我的無人性能夠騰飛、扭轉(zhuǎn),去尋覓我的同伙和仇敵:
小結(jié)
一旦樹立好一切,你可以經(jīng)由過程API掌握無人機視頻源,無人機編程就變得異常風趣。隨同著新的圖象辨認技巧,給我們供給了各類運用的能夠,不管從不雅察空中植物到在墻壁上作畫。Parrot無人機不是為在室內(nèi)小空間飛翔設(shè)計的,一個價錢更高的無人性能讓全部運用釀成實際。終究,無人機遇變得加倍穩(wěn)固,實際世界中將涌現(xiàn)年夜量相似的運用。
微軟的認知辦事云API易于應(yīng)用并且價錢廉價。起首,我擔憂無人機的異常廣角攝像頭會影響臉部辨認,而無人機螺旋槳的樂音會攪擾語音辨認。但整體來講,表示要好過預(yù)期。延遲成績也不像我所擔憂的那樣。應(yīng)用云盤算處置及時圖象流看起來仿佛是個奇異的架構(gòu),但它能夠是很多運用的將來之路。
