(原標題:專訪賓夕法尼亞大學Vijay Kumar:無人機背后的故事)
提到無人機,有人也許會想到巡航在海上的大型的軍用武器,而近年來,隨著消費級無人機的技術革新和價格優勢,這類無人機開始被大眾所熟悉。無論是攝影還是送貨,只要一提起無人機,人們馬上會聯想到大疆(DJI)、Parrot(一家總部位于法國巴黎的無人機及無線產品制造商)、3D Robotics(由前《連線》雜志主編Chris Anderson和時年20歲的Jordi Munoz創建,主打北美市場)、AscTec(德國Ascending公司旗下的無人機品牌)這些生產商。
然而,在美國賓夕法尼亞大學有這樣一間實驗室,早在2006年就開始了無人機相關技術的探索,至今他們的無人機算法和技術在農業、救災、建筑、娛樂等方面有著廣泛的嘗試。相對于常見的攝影或物流類的無人機,他們所研究的無人機應用的場景更多樣、處理的問題更復雜、涉及的技術領域和更為寬泛。可以說,他們的每一個新進展,都引領著整個無人機領域的技術變革,同時也是推動無人機和人工智能領域發展的杠桿。
近日,《程序員》雜志在CCF–GAIR全球人工智能和機器人峰會上專訪了美國賓夕法尼亞大學工程學院院長,IEEE、ASME Fellow,美國國家工程院院士,Vijay Kumar。他就自己實驗室最新的研究成果與我們進行了交談。
除了攝影,無人機還能干什么?
Vijay Kumar是位印度裔機器人科學家,1983年畢業于印度理工學院坎普爾分校(IIT),后進修于美國俄亥俄州立大學,1987年獲得機械工程博士學位。Vijay是世界上第一批研究無人機的科學家之一,早在2006年,Vijay和他的團隊便第一次成功開發出了四軸飛行器原型,并積極推廣無人機在多個實用場景下的應用。十年后的今天,無人機產業早已變的炙手可熱,市場規模實現了百億美元的增長,有人估計,到2020年,無人機市場將達到250億美元。盡管市場越來越熱,但學術界和產業界之間,依然存在一定的距離。這也讓Vijay坦言,他并不關心無人機市場,眼下自己的重點,依然放在無人機的四個核心研發問題上:體型、安全、智能、速度。雖然這四點看似簡單,但要是一一展開,無疑會讓我們看到一幅關于無人機的更大的畫卷。Vijay的最新研究成果,就是對這四點最好的詮釋。這些成果包括以下幾類。
自主小型飛行器(Autonomous Micro UAVs),這種飛行器可以利用GPS在復雜的三維環境中巡航,可以用于搜尋工作和精細農作(Precision Farming)。這種無人機的重量只有20克,通過傳感器來規劃路線和監控當前環境,傳感器包括IMU(Inertial Measurement Unit)、攝像頭、激光測距儀、測高儀等。
飛行器矩陣(SWARMS,Scalable sWarms of Autonomous Robots and Mobile Sensors),在矩陣中,每臺飛行器都是以自主(Autonomic)的狀態完成任務,在沒有中央控制系統的情況下,僅根據傍邊飛行器的反應而作出調整,從而達到協作的目的。
微型生物機器人(Micro Bio Robots),這些微型機器人只有10~100微米,由生物傳感器和馬達制動。他們可以被用于藥物探索、微創治療以及微型裝配。同時,他們還可以被應用在生物傳感器和生物電路的合成,幫助行成“傳感——驅動——通信”的閉環。
飛天手機(Flying Smart Phones),智能手機是當下最常見的高性能、低成本處理器和傳感器集成,用無人機搭載智能手機,相當于擁有了一個給力的CPU/GPU、兩個攝像頭、一塊電池、GPS、Wi-Fi、藍牙模塊、IMU、電信數據接收器,以及相應的內存。這無疑給飛行器賦予了更好的性能。
通過上述研究,無人機可以被應用在很多場景,例如可以放進大樓作為報警器,一旦有入侵者,馬上報警;在建筑內尋找生化/煤氣泄漏,或者把飛行器送進倒塌的樓房或核反應堆,來探測放射強度;室內建模,在陌生的空間內構建實時地圖,甚至連一些室內細節都可以反映出來;搬運重物;搭建建筑龍骨(目前,根據Vijay一位學生開發的算法,飛行器矩陣可以自己建造矩形的龍骨),飛行器根據對周圍飛行器的探測,可以自行選擇用什么材料、用在哪里、什么時候用。
除此之外,Vijay研究的飛行器還有很多實際用途,例如精細農作,通過熱感攝像機和普通攝像頭捕捉的數據,分析每株作物的特定需求,并且將結果反饋給農戶,比如作物A需要澆水、作物B需要施肥、作物C需要除蟲等。通過這一方式,無人機還可以計算每株作物的果實數量,從而幫助農戶對收成進行預估,以及找出染上疾病的作物。
仿生學在無人機領域的應用
對仿生學的應用是Vijay研究中最重要的思想之一,也是很多創新技術誕生的基石。在上面提到的無人機四個要素中,體型大小會對其他因素造成不同程度的影響。通過對蜜蜂的觀察,Vijay發現,這種小型飛行生物可以很好地跟環境互動,即使相撞也不會受傷。同時小體型意味著慣性更小,速度更快,受到撞擊時也可以很快恢復。但小體型的代價卻是搭載的傳感器更少,單個飛行器能做的事情也有限。
為了彌補這一缺憾,Vijay和他的團隊發明了飛行器矩陣,即通過一組飛行器來配合完成某項任務,這也是Vijay團隊無人機研究中最重要的概念。為了讓一組飛行器更有機地配合,他們再次借鑒了仿生學規則。通過對切葉蟻亞科的盤腹蟻屬(Aphaenogaster)進行觀察(如圖1所示),Vijay總結了三個重要的自然生物協同工作的原則。
切葉蟻亞科的盤腹蟻屬通過協作搬運重物
獨立自主(Decentralized),蟻群不受任何“中央命令”的控制,每只螞蟻都是按照自己的本能做事;
臨近感知(Neighbor Sensing),單只螞蟻的行為根據自己“鄰居”的行為作出調整;
匿名(Anonymity),單只螞蟻對自己的“鄰居”是誰并不清楚,因此無論“鄰居”換成誰,都不會對自己的行為造成影響。
受到上述自然規則的啟發,Vijay設計了原理類似的飛行器矩陣,這種矩陣被稱為Swarm(如圖2所示)。在Swarm中,每臺飛行器都裝有本地傳感器,并且擁有本地通信和計算能力。兩臺相鄰的飛行器通過傳感器控制彼此的距離,傳感器以100次/s的頻率將數據發送到處理器,并由處理器將解決方案傳送給電機。在圖2的示例中,Swarm利用鄰近感知原則,可以在障礙物前轉換陣型(Formation),由于匿名原則,在一個Swarm中,即使抽掉(或增加)了幾臺飛行器,陣型依然可以保持原樣。
Swarm無人機矩陣
而由于每臺飛行器都是獨立運算行動的,在另一個例子中,飛行器通過自身對環境的探測,完成了一系列高難度的動作,比如在狹窄的通道前轉體,鉆過通道后迅速恢復原樣;以及鉆過向上拋出的鐵圈等(如圖3所示)。這兩個例子的原理在于,人們先為飛行器預先編入飛行軌跡,但飛行器需要在預設的軌跡上加一個動作,這需要它們先積聚動能再改變方向,再回到預設的軌跡上來。它們知道怎樣完成每段獨立的軌跡,然后把每一小段的軌跡組合起來。
為了更好地理解Swarm,Vijay通過一個理論來進一步說明,他稱這個理論為Consensus,Consensus解決的是在Swarm中到底該怎樣形成陣型(Formation),哪臺飛行器該飛到哪,矩陣如何保持一致性的問題。Vijay舉了一個例子。假設你身處一個5個人的房間,每個人腦子里都想一個數字(事先不能交流),這時5個人都想到同一個數字的概率小到可以忽略不計,而這時你把你想到的數字告訴“鄰居”,“鄰居”再把自己聽到的數字相加再除以人數。比如A說1、B說4、C說10,當你問C的數字是幾的時候,C會說5(1+4+10=15,3/15)。如果你們重復這一步驟,那么幾輪之后,你們就會得到相同的數字了。這就是為什么每臺無人機都有自己的飛行路線,但最終卻能協同起來的原因。
盡管在充分訓練的情況下,Swarm已經擁有良好的表現,但Vijay也坦言,隨著飛行器的數量增多,Swarm的組織也越難,原因有二。其一是隨著飛行器數量的增加,單個飛行器對“鄰居”動態的感知更難,需要掌握的數據也更多;其二在于,當不同特征(Traits)的飛行器同時加入編隊后,對陣型的優化影響很大。
Vijay團隊曾做過一項實驗。實驗中,他們為不同的飛行器賦予不同的特征(Traits),使具備相同特征的飛行器成為一個“種群”(Species),讓不同“種群”的飛行器組成一個陣列,去完成某項任務。結果發現,種群的基數越大陣型就越難被優化。
無人機,走出實驗室要面臨更多的挑戰
今天,無人機在現實世界中的真實應用案例還相當有限,盡管2011年,Vijay的無人機曾被用來日本地震災后的探測工作(如圖4所示),但要想讓無人機在更多的任務中發揮作用,依然面臨著不小的技術挑戰,外部世界的復雜性遠遠超過實驗室的模擬,除了上文提到的Swarm之外,無人機在室外甚至是災難現場工作,還面臨著風速、無GPS定位、懸停電量消耗、陡坡降落等難題。由于Vijay研究的無人機是“獨立”且完全“自動”的(Autonomic),即使要完成從A點到B點這樣簡單的動作,都要穿過一個12維的空間。
上圖是2011年在日本一所被地震震塌的房子內構建三維地圖,為了節省“體力”無人機由一臺地面機器人載入房間,之后再進行飛行探測”。
Vijay的方法是把這個12維空間翹曲成一個4維空間(如圖5所示),這個4維空間由橫軸、縱軸、豎軸、旋轉軸組成。飛行器在這個4維空間中以10~100次/s的頻率規劃“最小化加速軌道”(Minimum Snap Trajectory),同時通過對位置向量、導數、速度和加速度的推導,創造一個優雅的飛行曲線,并且繞開障礙物。
無人機的飛行算法
然而當飛行速度達到一定的量級之后,上面的方法就不利于避障了。由于無人機上的傳感器無法探測20米外的范圍,這時如果無人機以20m/s的速度運行,一秒鐘后就會飛到一個完全陌生的環境或撞上障礙物。這時就需要建立一個二維地圖,在二維地圖中找到安全軌跡作為矢量集合,飛行器可以在這個矢量集合中去調整“最小化加速度軌道”。
下面我們來看看Vijay團隊在實際應用方面的一些關鍵技術研究
地圖構建
地圖的構建分為兩種,一種是在未知環境,且傳感器數量和信號都不好(尤其是無法使用GPS)的情況下創建拓撲地圖;另一種是構建SLAM(Simultaneous Localization And Mapping)。關于第一種,Vijay和他的團隊開發了一套創建拓撲地圖的算法工具,通過ROS呈現(機器人操作系統)。這一算法需要先對自由空間進行覆蓋,然后建立起該覆蓋環境的基本維諾圖(Voronoi Graph,如圖6所示)。
陌生環境下室內拓撲地圖的構建
而SLAM的構建則要復雜一點,在講解技術原理之前,我們不妨簡單地看一看這個近幾年在機器人、VR/AR領域經常用到的技術。簡單來說,SLAM是指當某種設備(如機器人、VR設備等)來到一個完全陌生的環境時,它需要精準地建立時間和空間的對應關系,并能完美地回答以下一系列問題:我剛才在哪里,現在在哪里?我看到了什么?現在看到的和之前看到的有哪些異同?我過去的行走軌跡是什么?我現在看到的環境是什么樣子,和過去相比有怎樣的變化?我的軌跡抖嗎?我的位置飄嗎?我還能跟蹤到自己的軌跡嗎,如果我丟了應該怎么辦?我過去建立的對環境的認識還有用嗎?我能在已有環境的抽象里快速對現在的位置進行定位嗎?
半密集重建與全密集重建圖
在Vijay的實踐中,他們采用了一種叫做“直接視覺SLAM”(Direct Visual SLAM) 的方法。與傳統的用來構建“稀疏重建”(Sparse Reconstructions)的功能性算法相比,直接視覺SLAM更適合建立“半密集重建”(Semi-Dense Reconstruction)和“全密集重建”( Fully-Dense Reconstruction),如圖7所示。Vijay告訴我們,他們目標是在一個標準CPU環境下,將視覺數據和慣導數據連接起來。整個過程被拆分為三個線程,第一個線程利用視覺數據和慣導數據做非線性優化,對攝像頭的移動做出判斷,這一過程以幀速率運行,然后構建出半密集地圖(Semi-Dense Map)。第二線程則需要構建出一個擁有高梯度區域(High-Gradient Area)的半密集地圖,目的依然是對攝像頭位置進行追蹤。第三線程則以較低的幀速率構建出該場景的全密集重建。
無GPS環境下,微型無人機矩陣部署系統
只裝有少量傳感器的微型無人機矩陣,是否可以在惡劣的環境下工作(比如無法使用GPS等)?為了解答這一問題,Vijay團隊在礦井和大風的戶外進行了試驗,他們開發了一套叫做“基于視覺的穩定系統”(Visual-based Stabilization),這套系統被部署到了多個應用模式中,包括:主從無人機矩陣(Leader Follower)、Swarm矩陣在監控環境下的部署與穩定、合作無人感知測量等。實驗中,這些飛機的控制、運動規劃、穩定性和軌道規劃都有不俗的表現。
高速無人機在陡坡的降落
救援型無人機需要在災難現場長時間實時傳輸信息或構建地圖,然而續航時間短仍然是個重要的短板。為了解決這一問題,Vijay和他的團隊,希望通過讓無人機隨時降落來“保存體力”,包括降落在各種質地和各種角度的平面。Vijay為微型無人機設計了“抓器”,它可以牢牢“抓住”不同的平面,還可以抓取重物。下圖展示了高速飛行的無人機在陡坡降落的情況,目前Vijay的無人機可以在90度的陡坡實現高速降落(如下圖所示)。
高速飛行的無人機在50度和90度的平面降落
這個“抓器”不是一般的“爪子”,而是一個真空吸盤,通過微型真空泵來驅動。他們對吸盤的設計和它與放氣、激活力度、最大抓舉力之間的關系作了很多次測試,最終這一吸盤做到了既可以抓取各種物體,又可以在陡坡上降落。
為了節省“體力”,Vijay和他的團隊還做過其他嘗試。比如2011年他們讓一臺機器人背著無人機進入一棟坍塌的大樓,進到大樓呢,無人機才開始工作,用了兩個半小時繪制出了大樓內部的地圖。
近景遙感技術在農業上的應用
通過近景遙感(Close-Range Remote Sensing)技術對柑橘屬果樹進行檢測,并對患青果病的果樹進行識別。在佛羅里達,青果病是威脅果樹健康的主要因素。在同一景深下,通過測量黃色偏振光的反射比,可以找出患病的果樹。此外,他們還制定了一套標準用來測量患病果樹樹葉中的淀粉沉積。在獲得這些信息之后,他們再加上一個景深維度,和機器學習算法,識別的準確率達到93%。不僅能識別患病的果樹,連青果病的傳染和早期受到感染的果樹也能分辨。
與Vijay Kumar對話實錄
程序員:你最近的研究并不太依靠外部設施,飛行器是完全“自動”(Autonomic)的,而用到的技術卻談不上創新,你怎么看?
Vijay:目前我們所用到的技術,比如動作捕捉等確實稱不上新技術,這類技術我們早在2008年就有所嘗試。但技術背后的算法卻是新的,理論也是新的,比如上面提到的陡坡降落等。新的理論讓“舊”的技術發揮新的作用。
程序員:你用手機作為傳感器集成,比起載有等量傳感器的無人機,具體可以減重多少?
Vijay:一般一個載有等量傳感器的飛行器大約重3千克,懸停的時候會更重,電纜、傳感器、外壁的重量占45%~50%,要240瓦才能帶動。而一臺iPhone6只有129克,只相當于原來十分之一的重量。
程序員:既然無人機對重量的要求如此苛刻,那么執行救災任務時很難載人離開?
Vijay:的確。懸停是最大的問題,懸停時每千克消耗200瓦電力,要是載一個50公斤的人,每次懸停就要消耗一萬瓦以上的電力,這不是個小數字。但也不是沒有解決辦法,我們可以看看客機,無人機也可以像客機那樣用飛機燃料、汽油或柴油當作燃料。
程序員:你認為無人機要想真正普及,技術是最大的門檻嗎?
Vijay:我不這么認為。技術創新固然重要,但很多需求我們已經知道該如何實現了。但商業創新現在依然處于摸索的階段。無人機要想實現普及,需要由商業創新來推動,這是我不擅長的。你看Uber和嘀嘀出行這兩家公司,他們的崛起并非因為他們在技術上有很大突破,而是因為商業創新。