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