兩年來,大疆精靈系列更新了兩代,飛控技術(shù)更新了兩代,智能導(dǎo)航技術(shù)從無到有,諸多新的軟件和硬件產(chǎn)品陸續(xù)發(fā)布。同時我們也多了很多友商,現(xiàn)在多旋翼飛行器市場火爆,諸多產(chǎn)品琳瑯滿目,價格千差萬別。為了理解這些飛行器的區(qū)別,首先要理解這些飛行器上使用的傳感器技術(shù)。我覺得現(xiàn)在很有必要再發(fā)一篇科普文章,定義“智能導(dǎo)航”這個概念,順便字里行間介紹一下兩年來大疆在傳感器技術(shù)方面的努力。
1. 飛行器的狀態(tài)
客機、多旋翼飛行器等很多載人不載人的飛行器要想穩(wěn)定飛行,首先最基礎(chǔ)的問題是確定自己在空間中的位置和相關(guān)的狀態(tài)。測量這些狀態(tài),就需要各種不同的傳感器。
世界是三維的,飛行器的三維位置非常重要。比如民航客機飛行的時候,都是用GPS獲得自己經(jīng)度、緯度和高度三維位置。另外GPS還能用多普勒效應(yīng)測量自己的三維速度。后來GPS民用之后,成本十幾塊錢的GPS接收機就可以讓小型的設(shè)備,比如汽車、手機也接收到自己的三維位置和三維位置。
對多旋翼飛行器來說,只知道三維位置和三維速度還不夠,因為多旋翼飛行器在空中飛行的時候,是通過調(diào)整自己的“姿態(tài)”來產(chǎn)生往某個方向的推力的。比如說往側(cè)面飛實際上就是往側(cè)面傾,根據(jù)一些物理學(xué)的原理,飛行器的一部分升力會推著飛行器往側(cè)面移動。為了能夠調(diào)整自己的姿態(tài),就必須有辦法測量自己的姿態(tài)。姿態(tài)用三個角度表示,因此也是三維的。與三維位置、三維角度相對應(yīng)的物理量是三維速度、三維加速度和三維角速度,一共是十五個需要測量的狀態(tài)。
這十五個狀態(tài)都對多旋翼飛行器保持穩(wěn)定飛行有至關(guān)重要的作用。拿“懸停”這件看起來是多旋翼飛行器最基本的能力來說,實際上飛行器的控制器在背后做了一系列“串級控制”:在知道自己三維位置的基礎(chǔ)上,控制自己的位置始終鎖定在懸停位置,這里的控制量是一個目標的懸停速度,當飛行器的位置等于懸停位置時,這個目標懸停速度為0,當飛行器的位置偏離了懸停位置時,飛行器就需要產(chǎn)生一個讓自己趨向懸停位置的速度,也就是一個不為零的目標懸停速度;飛行器要想控制自己產(chǎn)生目標懸停速度,就需要根據(jù)自己當前的三維速度,產(chǎn)生一個目標加速度;為了實現(xiàn)這個目標加速度,飛機需要知道自己的三維角度,進而調(diào)整自己的姿態(tài);為了調(diào)整自己的姿態(tài),就需要知道自己的三維角速度,進而調(diào)整電機的轉(zhuǎn)速。
讀者可能會想哇為什么這么復(fù)雜。其實我們身邊的許多工程產(chǎn)品都在簡單的表現(xiàn)背后藏著復(fù)雜的過程。比如汽車的油門也是類似的,踩下油門之后,有傳感器測量汽油的流速、控制汽油的流速;然后有傳感器測量發(fā)動機的轉(zhuǎn)速、控制發(fā)動機轉(zhuǎn)速……從踩油門到加速的過程中也有許許多多的傳感器在測量汽車的各個狀態(tài)量,并對這些狀態(tài)量施加控制。
知道十五個狀態(tài)量是多旋翼飛行器做任何動作的基礎(chǔ)中的基礎(chǔ),但是讓飛行器在任何情況下都準確知道這十五個狀態(tài)量是非常困難的事情,因為現(xiàn)在的科技水平還沒有能夠?qū)崿F(xiàn)讓一個傳感器同時測量這么多的物理量。幾十年來,人們發(fā)展出了一套復(fù)雜的技術(shù),叫做組合導(dǎo)航,用GPS加上慣性測量元件、氣壓計和地磁指南針來讓飛行器測量自己的十五個狀態(tài)量。
2. 組合導(dǎo)航
慣性測量元件是一種能夠測量自身三維加速度和三維角速度的設(shè)備(實際上慣性測量元件有兩種,一種加速度計,一種角速度計,為了行文方便,我們把這兩種元件當做一種,統(tǒng)稱為慣性測量元件)。根據(jù)物理學(xué)原理,加速度的積分是速度,速度的積分是位置,角速度的積分是角度,理論上單靠慣性測量元件,我們就可以知道十五個狀態(tài)量。
人類的科技水平也的確實現(xiàn)了這一點:GPS還沒被發(fā)明以前,導(dǎo)彈上通常都裝著一個精密的慣性測量元件,導(dǎo)彈打出去以后靠這個裝置測量自己的十五個狀態(tài)量,然后控制自己飛越海洋和大洲。然而這種慣性測量元件會在測量的過程中慢慢累積誤差,元件本身的工藝、技術(shù)、成本越差,積累誤差的速度就越快。導(dǎo)彈上價值幾百萬的慣性測量元件飛幾萬公里后會積累十幾米到幾公里的誤差,這種水平的導(dǎo)彈已經(jīng)非常了不起了,畢竟不是每個國家都可以在背后豎著洲際導(dǎo)彈和國際社會講道理。
人體內(nèi)也有慣性測量元件,人的耳蝸充滿液體,人運動的時候這些液體有慣性,可以被耳中的神經(jīng)感受到,因此測出了運動的加速度。然而人的慣性測量元件非常差,閉上眼睛,也不摸周圍的東西,只靠耳蝸感受的移動,人基本沒法走直線。
而多旋翼飛行器上用的低成本MEMS慣性測量元件,精度就更差了,它測量的速度和位置在幾秒鐘內(nèi)就會發(fā)散到幾十米開外去,完全沒法用來規(guī)劃控制自己的飛行路線。
此外,慣性測量元件還會受到溫度、制造工藝的限制,產(chǎn)生一些測量的偏差,比如說有時溫度突然變化之后,一個靜止的慣性測量元件會覺得自己轉(zhuǎn)動了起來,雖然它靜止著,但是會輸出不為零的角速度。這類測量的偏差需要比較仔細的算法進行修正,而且往往不能單靠慣性測量元件自己的測量完全消除。
地磁指南針是一種測量航向的傳感器。指南針在人們的生活中作用重大,在未知的環(huán)境中,不分南北可能寸步難行。飛行器的機身正方向朝南還是朝北這個狀態(tài)量用導(dǎo)航的術(shù)語來說叫做航向,也就是飛行器姿態(tài)的三維角度中的一個,他在組合導(dǎo)航系統(tǒng)中是非常重要的一個狀態(tài)量。
地磁指南針能夠指南指北是因為地球表面空間中有看不見的橫貫?zāi)媳钡牡卮啪€,地磁指南針可以測量出穿過自身的地磁強度,從而指出當前自身相對于地磁線的偏轉(zhuǎn)。同樣地,這個理論雖然非常簡單,但是地磁線的強度非常弱,很容易受到干擾。比如多旋翼飛行器通用的無刷電機,在運轉(zhuǎn)的時候就會產(chǎn)生變化的磁場,和地磁場疊加之后,地磁指南針就找不到正確的方向了。地磁指南針的這個特性非常令人惱火,但是早期的多旋翼飛行器開發(fā)人員毫無辦法,因為這是唯一的能夠確定飛行器在空間中絕對航向的設(shè)備。如果不知道這個航向,就基本沒辦法進行組合導(dǎo)航。
無人機/圖 來源網(wǎng)絡(luò)
氣壓計的原理最為簡單。因為地球表面海拔越高,空氣越稀薄,氣壓越低,因此氣壓就能夠給出飛行器的海拔高度。不過,不出意料的是,尺寸和重量適合在多旋翼飛行器上使用的氣壓計有很大的缺陷,它的測量值會受到溫度、濕度、空氣流速、光照、振動等因素的影響,單靠氣壓計非常難實現(xiàn)對高度的穩(wěn)定測量。
組合導(dǎo)航技術(shù)結(jié)合GPS、慣性測量元件、地磁指南針和氣壓計各自的優(yōu)缺點,使用電子信號處理領(lǐng)域的很多技術(shù),融合多種傳感器的測量值,獲得較為準確的飛行器十五個狀態(tài)量的測量。前面說慣性測量元件的測量容易發(fā)散,這個發(fā)散可以通過GPS來抑制:GPS可以獲得三維位置也可以獲得三維速度,慣性測量元件可以獲得三維加速度,加速度的積分也是速度。在通過地磁指南針獲得航向的基礎(chǔ)上,兩種速度的觀測就可以融合起來,通過GPS的測量值來發(fā)現(xiàn)并抑制慣性測量元件的發(fā)散。慣性測量元件的發(fā)散被抑制住之后,它也可以更準地測量三維角度和三維加速度。因此GPS和慣性測量元件在這些情況中互相取長補短。除此之外,氣壓計和GPS互相提高了高度測量的精度,地磁指南針、GPS和慣性測量元件一同提高了航向測量的精度,他們都是利用了相同的融合、“互補”的思想。
組合導(dǎo)航技術(shù)中傳感器互補的原理直接源于1948年誕生的信息論??藙诘?香農(nóng)總結(jié)歸納出的信息論提出了信息的概念以及如何從數(shù)學(xué)上度量信息,信息論可以說是現(xiàn)代人類文明的基石之一。解釋清楚信息的本質(zhì)之后,人們才能夠用數(shù)學(xué)表示一個樸素而又深刻的原理:信息可以用來估計狀態(tài),越多的信息可以把狀態(tài)量估計得越準。
此后,控制論的奠基人諾伯特-維納、魯?shù)婪?卡爾曼以及其他一大批工程師和科學(xué)家完善了通過信息進行狀態(tài)估計的線性估計理論,進一步提出了傳感器之間“互補濾波”,共同減小誤差的理論??柭O(shè)計的卡爾曼濾波器還被實現(xiàn)在了阿波羅飛船的導(dǎo)航計算機當中,使用星座位置和慣性測量元件互補測量阿波羅飛船的十五個狀態(tài)量。
信息論、線性估計理論以及卡爾曼濾波器允許人們把多個具有誤差的傳感器通過數(shù)學(xué)方程融合起來,利用傳感器信息估計特定的狀態(tài)量,而且越多傳感器“互補”,可以獲得越好的狀態(tài)估計。這樣,數(shù)學(xué)給工程學(xué)指出了發(fā)展方向:造更多牛逼的傳感器進行互補,就能獲得更好的狀態(tài)估計能力。大疆飛控總工程師魚大人也曾經(jīng)說過:“最牛逼的工程師都是在搞傳感器。”傳感器技術(shù)的重要性可見一斑。
作為一種位置傳感器,GPS具有諸多的問題,GPS信號只有在開闊的空間內(nèi)才能給出比較好的測量值,因為GPS接收機需要從天上的衛(wèi)星獲得信號,這些信號要從太空傳入大氣層,這么遠的距離,信號已經(jīng)相對來說很微弱,所以必須要求接收機和衛(wèi)星之間的連線上沒有遮擋,一旦有建筑甚至是樹木的遮擋,衛(wèi)星發(fā)下來的信號就有噪聲,GPS接收機就不能給出很好的位置和速度觀測。在室內(nèi)環(huán)境中,GPS甚至完全不能使用。組合導(dǎo)航技術(shù)要想進一步發(fā)展,就需要尋找其他能夠在GPS不能使用的環(huán)境中使用的傳感器。
一種較為簡單的能夠替代GPS測量高度的傳感器是小型超聲波模塊。這種模塊通常有一收一發(fā)兩個探頭,一個探頭發(fā)出超聲波,另一個探頭測量回波的時間,能夠算出導(dǎo)致聲波反彈的物體離探頭的距離。現(xiàn)在在淘寶上,只要10塊錢就可以買到一個能夠比較準確測量幾米內(nèi)物體距離的超聲波模塊,被廣泛用在大學(xué)生制作的小機器人上。這種10塊錢的傳感器沒有比氣壓計和MEMS慣性測量元件性能高多少,它發(fā)出的聲波容易發(fā)散,探測到的物體不一定位于探頭正前方,另外聲波也容易被空氣中的水霧、振動所影響,給出完全錯誤的觀測。因此,超聲波模塊最好的使用場景是對著地面,測量自身和地面的距離。
3. 視覺感知系統(tǒng)
另外一種替代品是視覺感知系統(tǒng)。1970年之后,隨著數(shù)字成像技術(shù)的發(fā)展,相機作為一種傳感器開始被廣泛研究。因為人可以通過自己的視覺估計視野中物體的位置、距離,而相機的原理模擬了人的雙眼,所以研究者們模仿人的特點,利用相機的二維圖像反推圖像中物體的三維信息。這種和二維圖像推算三維信息相關(guān)的技術(shù)和數(shù)學(xué)理論發(fā)展成了一個獨立的學(xué)科——計算機視覺,也被稱作機器視覺。
視覺感知系統(tǒng)是目前世界上最熱門的機器人學(xué)和機器視覺領(lǐng)域研究課題。其原理是利用一個或者多個相機構(gòu)成的視覺傳感器系統(tǒng),采用復(fù)雜的算法,通過二維的相機圖像推算出視野中物體相對與視覺傳感器系統(tǒng)的幾何中心的運動信息,如果假設(shè)這些物體都是靜止的,那么相對運動其實代表了視覺傳感器本身的運動。理論上,計算機視覺技術(shù)能夠單憑一個相機就可以準確測量十五個狀態(tài)量,但是與其他傳感器類似,相機也有很多的缺陷,包括無法恢復(fù)尺度、成像質(zhì)量有限、計算量消耗巨大等等。幸好,我們還可以把視覺感知系統(tǒng)和其他傳感器結(jié)合起來,互相提高測量精度。
聰明的讀者肯定能夠想到,把視覺感知系統(tǒng)和之前說的所有組合導(dǎo)航中用到的傳感器融合起來,GPS信號質(zhì)量高的時候用GPS組合導(dǎo)航,沒GPS的時候用視覺感知系統(tǒng)替代GPS,不就解決問題了嗎。這確實正是目前工程師和科學(xué)家們正在努力解決的問題,也是精靈4上初步實現(xiàn)的技術(shù)。在介紹精靈4是如何結(jié)合視覺感知系統(tǒng)和組合導(dǎo)航技術(shù)之前,我們先簡單介紹兩種已經(jīng)比較成熟的視覺感知系統(tǒng):光流測速模塊和視覺里程計。
光流測速模塊顧名思義,只能測速度。通常一個光流測速模塊由一個相機、一個慣性測量元件、一個超聲波模塊構(gòu)成,它的主要原理是計算機視覺技術(shù)中于1981年被發(fā)展出來的“光流追蹤”算法。
“光流”的概念最早在1950年代由心理學(xué)家和生物學(xué)家提出,指的是一個觀察者和他在觀察的事物發(fā)生相對運動時,這些事物在他眼前成的像會產(chǎn)生“運動的模式”,人腦利用這種“運動的模式”能夠更靈敏地感知周圍什么東西在動。比如下圖中,讀者一看就可以直觀理解“光流”的意義。
后來計算機科學(xué)家布魯斯-盧卡斯和金出武雄在1981年發(fā)明了Lucas-Kanade算法,通過算法計算出連續(xù)拍攝的圖片上的光流,并證明了光流可以反解出相對運動的速度。雖然三十多年來,Lucas-Kanade算法始終被公認為最好的“光流追蹤”算法,但是它有比較大的局限性,它包含很多假設(shè),比如假設(shè)連續(xù)圖片的平均亮度相同,比如假設(shè)圖片中的物體只發(fā)生平面運動等等。另外,光流算法算出的速度是沒有尺度的,因為相機圖像的單位是像素,所以光流算法只能給出“你現(xiàn)在的速度是10個像素每秒”,但是沒法算出10個像素是1厘米還是1米?;謴?fù)尺度的方式是增加一個超聲波模塊測量平面運動離相機的距離,這樣就能夠把像素運動轉(zhuǎn)換成真實的運動。最后,如果要讓光流測速模塊在晃來晃去的多旋翼飛行器上也能使用,通過慣性測量元件找出圖像所代表的平面也是必不可少的,這一點需要在算法上進行兩種傳感器很好的配合。
光流算法原理上只可以測三維速度,不能直接測量三維位置。我們同樣可以通過把光流測速模塊測出的三維速度積分獲得三維位置,但是就像慣性測量元件積分會發(fā)散一樣,光流測速模塊積分得到的位置也會發(fā)散。好在它不會天馬行空地失去控制,和組合導(dǎo)航技術(shù)中除了GPS之外的傳感器妥善融合之后,它可以做到懸停時測量的位置不發(fā)散。因此可以說光流測速模塊只在有限的條件下能夠替代GPS。
光流測速模塊已經(jīng)形成了非常標準的解決方案。大疆悟以及精靈3上都裝載了自主研發(fā)的光流測速模塊,另外著名的開源飛控產(chǎn)品Pixhawk中包含了一個叫做PX4Flow的光流測速模塊,并且開源了所有的代碼和硬件方案。所以光流測速模塊目前已經(jīng)廣泛出現(xiàn)在了各大廠商的多旋翼飛行器產(chǎn)品上。
視覺里程計相比光流測速模塊,增加了直接測量位置的能力,所以才叫“里程計”。視覺里程計比光流測速模塊能力更強,性能更好。
讀者可能會問,為什么聽起來視覺里程計和光流測速模塊參與的傳感器數(shù)量差不多(光流測速模塊甚至還多一個超聲波模塊),但是視覺里程計能力反而更強呢。這里的原因不在于傳感器硬件,而在軟件算法上。前面已經(jīng)說到光流追蹤算法有很多簡化的假設(shè),只能測量平面運動,增加其他傳感器硬件一定程度上是為了把那些為了計算方便而簡化掉的因素重新彌補起來。
而視覺里程計算法則復(fù)雜得多,它不僅要通過圖像反推出視野中物體的平面運動,還要反推出這些物體的三維位置,并且基于這些物體的三維位置做很多次的優(yōu)化計算,算法復(fù)雜度成倍于光流測速模塊。有些視覺里程計的算法甚至包含完整的光流追蹤的算法,但是僅僅把計算光流作為預(yù)處理圖像的步驟。
視覺里程計能夠直接測量位置,測量值也比較準確,不會像光流測速模塊那樣發(fā)散。通常比較優(yōu)秀的視覺里程計飛100米之后只會積累十幾厘米到幾十厘米的誤差,這個測量水平比起導(dǎo)彈上幾百萬的慣性測量元件還是差了不少,但是考慮到視覺里程計的價格極其低廉,對比起來它的性價比非常高。
視覺里程計有幾個不同層次的難度,最簡單的是兩個相機構(gòu)成的雙目立體視覺系統(tǒng)加慣性測量元件,最難的是一個相機構(gòu)成的單目視覺系統(tǒng)加慣性測量元件。如果視覺里程計和光流測速模塊硬件一致,那么這里的視覺里程計采用的是單目視覺系統(tǒng)。目前,雙目立體視覺系統(tǒng)加慣性測量元件實現(xiàn)自身狀態(tài)觀測已經(jīng)是比較完善的技術(shù),而單目視覺系統(tǒng)則是活躍的研究方向,世界上做這個研究方向較好的大學(xué)有美國的賓西法尼亞大學(xué)、瑞士的蘇黎世聯(lián)邦理工學(xué)院、英國的牛津大學(xué)、我國的香港科技大學(xué)和其他一些歐美院校。
單目視覺系統(tǒng)和雙目立體視覺系統(tǒng)兩者對比起來,他們的算法難度差別很大。視覺里程計的算法關(guān)鍵點是前面說的“通過連續(xù)的圖像反推出視野中物體的三維位置”。對于和人眼結(jié)構(gòu)類似的雙目立體視覺系統(tǒng),這一點比較容易,因為一個物體同時出現(xiàn)在左右兩個相機的視野中時左右視野有視差,視差可以幫助解算物體的位置,只需要用簡單的幾何關(guān)系就可以實現(xiàn),這已經(jīng)是非常成熟的技術(shù)。
但是對于單目視覺系統(tǒng),只有一個相機就沒有視差,沒法做簡單的幾何關(guān)系的解算,所以算法必須能智能地在局部范圍內(nèi)同時估計很多個物體的位置,然后在自身移動過程中通過位置移動產(chǎn)生視差,然后進行多個物體的位置的最大似然估計,從而推算出這些物體比較準確的位置。這個過程包括很多個環(huán)節(jié),大部分環(huán)節(jié)在學(xué)術(shù)界都沒有公認最優(yōu)的方案,因此還沒有成熟的技術(shù)。
因為原理相對簡單,所以雙目立體視覺系統(tǒng)構(gòu)成的視覺里程計在三十年前就開始被研究了。1980年代早期,NASA工程師、著名機器人學(xué)家漢斯-莫拉維克就已經(jīng)制造出了這種狀態(tài)測量系統(tǒng)。關(guān)于漢斯-莫拉維克的另一個故事,我在知乎問題中“有哪些與控制、機器人等相關(guān)的 quotes? - YY碩的回答”也有提到。
在經(jīng)年累月的優(yōu)化之后,2004年,NASA成功把視覺里程計和慣性測量元件構(gòu)成的視覺定位系統(tǒng)裝在“機遇號”和“勇氣號”火星車主頻僅有20MHz的特制芯片上,送上了火星,它可以幫助火星車通過一對雙目相機非常準確地記錄自己走過的路線。2007年,參與火星探測任務(wù)的計算機科學(xué)家和工程師們把這個激動人心的過程寫成了一篇論文《計算機視覺在火星》(Computer Vision on Mars),這篇文章吸引了很多計算機視覺研究人員投身視覺里程計的研究,也極大推動了視覺里程計在機器人學(xué)中的應(yīng)用。