本申請要求2013年8月12日提交的美國專利申請序列號61/864,754的優(yōu)先權,其內(nèi)容全文以引用方式并入本文中。
背景技術:
隨著便攜式計算設備諸如智能電話、智能眼鏡和其他設備越來越普及,為此類設備提供定位和地圖繪制能力受到了關注。定位可通過依賴于使用全球定位系統(tǒng)(GPS)信號或小區(qū)塔信號三角測量來計算位置而部分地實現(xiàn)。地圖繪制可利用企業(yè)解決方案來部分地實現(xiàn),諸如使配置有專門設備的車輛在街道上穿行并對街道進行地圖繪制。定位和地圖繪制通過地圖和基于位置的服務使消費者受益。然而,此類服務往往限于在室外使用,因為GPS信號或小區(qū)塔信號在建筑物內(nèi)可能受到阻礙,并且因為便攜式計算設備的地圖繪制通常尚未延伸到室內(nèi)環(huán)境。此外,相對于位置而言,商用定位和地圖繪制服務通常不能提供超過幾米的精確度。
基于視覺的慣性導航系統(tǒng)依賴于從圖像和慣性測量設備獲得的信息,以便實現(xiàn)定位和/或地圖繪制。由于基于視覺的慣性導航系統(tǒng)不需要來自GPS或小區(qū)塔的信號,所以此類系統(tǒng)可在GPS和小區(qū)信號不能到達或者由于干擾而在其中不可用的室內(nèi)使用。此外,基于視覺的慣性導航系統(tǒng)使得能夠實現(xiàn)例如厘米級的非常高的位置精確度。然而,基于視覺的慣性導航系統(tǒng)通常是計算密集型的,因為其需要完全實時地處理大量從圖像檢測器(諸如相機)獲取的圖像數(shù)據(jù)和由慣性測量單元(IMU)生成的慣性讀數(shù)。此外,為了實現(xiàn)位置的高精確度測量,與先前姿態(tài)(位置和取向)、慣性測量和圖像特征有關的信息的歷史通常被存儲,因此要求設備使用大量的存儲空間并因此使用大量的計算時間來處理該信息。
技術實現(xiàn)要素:
本公開涉及基于視覺的慣性導航。
一般來講,在第一方面,本公開的主題可體現(xiàn)在用于執(zhí)行導航的電子計算系統(tǒng)中,其中電子計算系統(tǒng)包括用于實現(xiàn)滑動窗反向濾波器模塊的電子處理器和存儲器,并且其中滑動窗反向濾波器模塊被配置為:接收來自預處理模塊的傳感器測量,其中傳感器測量包括設備的圖像數(shù)據(jù)和慣性數(shù)據(jù);將從傳感器測量得出的信息從與第一時間窗口相關聯(lián)的第一組變量變換為與第二時間窗口相關聯(lián)的第二組變量,其中第一窗口和第二窗口在時間上連續(xù)地重疊;以及基于所變換的信息將設備的狀態(tài)輸出到后處理模塊。該對中的每個窗口與對應的第一信息矩陣相關聯(lián),并且每個第一信息矩陣用于多個第一變量和多個第二變量,該多個第一變量表示鄰近設備的至少一個對象的位置和/或取向,該多個第二變量表示設備在兩個或更多個時間點處的狀態(tài)。變換該信息包括:對與第一窗口的第一信息矩陣相關聯(lián)的第一變量的至少子組進行邊緣化以獲得第二信息矩陣,該第二信息矩陣仍然保持與多個第二變量的關聯(lián);對與第二信息矩陣相關聯(lián)的第二變量的子組進行邊緣化以獲得第三信息矩陣;以及對第三信息矩陣進行縮放以獲得第四信息矩陣,其中第四信息矩陣是當該對中的第一窗口和第二窗口重疊時的時間點處設備的狀態(tài)和鄰近設備的對象的位置和/或取向的概括表示。
在另一方面,本公開的主題可體現(xiàn)在計算機實現(xiàn)的方法中,該方法包括:接收來自預處理模塊的傳感器測量,其中傳感器測量包括設備的圖像數(shù)據(jù)和慣性數(shù)據(jù);利用處理器將從傳感器測量得出的信息從與第一時間窗口相關聯(lián)的第一組變量變換為與第二時間窗口相關聯(lián)的第二組變量,其中第一窗口和第二窗口在時間上連續(xù)地重疊;以及基于所變換的信息將設備的狀態(tài)輸出到后處理模塊,其中該對中的每個窗口與對應的第一信息矩陣相關聯(lián),并且每個第一信息矩陣用于多個第一變量和多個第二變量,該多個第一變量表示鄰近設備的至少一個對象的位置和/或取向,該多個第二變量表示設備在兩個或更多個時間點處的狀態(tài)。變換該信息包括:對與第一窗口的第一信息矩陣相關聯(lián)的第一變量的至少子組進行邊緣化以獲得第二信息矩陣,第二信息矩陣仍然保持與所述多個第二變量的關聯(lián);對與第二信息矩陣相關聯(lián)的第二變量的子組進行邊緣化以獲得第三信息矩陣;以及對第三信息矩陣進行縮放以獲得第四信息矩陣,其中第四信息矩陣是當該對中的第一窗口和第二窗口重疊時的時間點處設備的狀態(tài)和鄰近設備的對象的位置和/或取向的概括表示。
在另一方面,本公開的主題可體現(xiàn)在編碼有計算機程序指令的非暫態(tài)計算機存儲介質中,計算機程序指令在被一個或多個電子計算設備執(zhí)行時使一個或多個電子計算設備執(zhí)行包括以下的操作:接收來自預處理模塊的傳感器測量,其中傳感器測量包括設備的圖像數(shù)據(jù)和慣性數(shù)據(jù);利用處理器將從傳感器測量得出的信息從與第一時間窗口相關聯(lián)的第一組變量變換為與第二時間窗口相關聯(lián)的第二組變量,其中第一窗口和第二窗口在時間上連續(xù)地重疊;以及基于所變換的信息將設備的狀態(tài)輸出到后處理模塊,其中該對中的每個窗口與對應的第一信息矩陣相關聯(lián),并且每個第一信息矩陣用于多個第一變量和多個第二變量,該多個第一變量表示鄰近設備的至少一個對象的位置和/或取向,該多個第二變量表示設備在兩個或更多個時間點處的狀態(tài)。變換該信息包括:對與第一窗口的第一信息矩陣相關聯(lián)的第一變量的至少子組進行邊緣化以獲得第二信息矩陣,該第二信息矩陣仍然保持與多個第二變量的關聯(lián);對與第二信息矩陣相關聯(lián)的第二變量的子組進行邊緣化以獲得第三信息矩陣;以及對第三信息矩陣進行縮放以獲得第四信息矩陣,其中第四信息矩陣是當該對中的第一窗口和第二窗口重疊時的時間點處設備的狀態(tài)和鄰近設備的對象的位置和/或取向的概括表示。
這些方法、介質、和/或系統(tǒng)的具體實施可包括以下特征和/或其他方面的特征中的一者或多者。例如在一些具體實施中,電子計算系統(tǒng)還可包括:預處理模塊、耦接到預處理模塊的圖像檢測單元,其中預處理模塊被配置為接收由圖像檢測單元捕獲的多個圖像并從多個圖像得出圖像數(shù)據(jù);和耦接到預處理模塊的運動感測單元,其中預處理模塊被配置為接收來自運動感測單元的慣性數(shù)據(jù)。
在一些具體實施中,與第一窗口相關聯(lián)的第一組變量的子組和與第二窗口相關聯(lián)的第二組變量的子組在時間上重疊。重疊的時間段可對應于存在于第一窗口和第二窗口兩者中的任何時間段。特別地,其可對應于具有存在于第一窗口和第二窗口兩者中的最早時間的那組變量。
在一些具體實施中,對于每個窗口,多個第一變量表示跨多個圖像的圖像特征的3D位置和/或取向,并且多個第二變量包括加速度數(shù)據(jù)和角速度數(shù)據(jù)。設備的狀態(tài)還可包括兩個感測設備的內(nèi)在參數(shù)和外在參數(shù)(例如運動感測單元的偏差和運動單元相對于相機的相對姿態(tài))。
在一些具體實施中,與每個窗口相關聯(lián)的第一信息矩陣包括:關于表示鄰近設備的對象的位置或取向估計的至少一個變量的第一信息;和關于表示設備狀態(tài)的估計的至少一個變量的第二信息;以及第一信息與第二信息之間的共享信息。共享信息可表示鄰近設備的對象的位置或取向的估計與設備狀態(tài)的估計之間的共享置信度。對與第一窗口的第一信息矩陣相關聯(lián)的第一變量的至少子組進行邊緣化可包括對對應的共享信息進行邊緣化。對第三信息矩陣進行縮放可包括將第三信息矩陣除以常數(shù)或乘以常數(shù)。該常數(shù)可等于第一窗口的大小,諸如在第一窗口中捕獲的測量的數(shù)量或者與第一窗口相關聯(lián)的時間長度。
某些具體實施可具有特別的優(yōu)點。例如在一些具體實施中,本文所公開的技術使得能夠保持關于設備在不同時間的慣性狀態(tài)和鄰近設備所觀察到的對象的位置和/或取向之間的約束的信息,而不需要同時處理在長的時間段上生成的所有約束。此外,雖然減少了用以處理約束的過去變量的數(shù)量,但本公開的技術使得能夠計算設備在目前情況下的慣性狀態(tài)的高精度估計(例如厘米級的位置誤差),同時避免對其過度自信。
除非另有指明,本文所使用的所有技術和科技術語具有與本文公開的主題所屬領域中的普通技術人員的一般理解相同的含義。雖然與本文所述的那些類似或等同的方法、材料、設備和系統(tǒng)可用于實踐或測試本發(fā)明,但下面描述了合適的方法、材料、設備和系統(tǒng)。本文提到的所有出版物、專利申請、專利、和其他參考資料均以引用的方式全文并入本文。此外,本文所述的示例是用于示例性的目的,而并非旨在進行限制。
在下面的附圖和具體實施方式中示出了一種或多種具體實施的細節(jié)。其他特征和優(yōu)點將在具體實施方式和附圖以及權利要求中顯而易見。
附圖說明
圖1是示出疊置有由基于視覺的慣性導航系統(tǒng)計算的路徑的建筑平面圖的示意圖。
圖2是示出基于視覺的慣性導航設備的示例的示意圖。
圖3是示出一種用于利用基于視覺的慣性導航來計算位置和取向的估計的示例性過程的流程圖。
圖4是示出一種用于執(zhí)行集束調整的示例性過程的流程圖。
圖5是示出信息矩陣的一個示例的示意圖。
圖6是示出一種用于執(zhí)行稀疏結構邊緣化的示例性過程的流程圖。
圖7是示出第二信息矩陣的一個示例的示意圖。
圖8是示出一種用于執(zhí)行延遲運動邊緣化的示例性過程的流程圖。
圖9示出了可與本文所述的技術一起使用的移動計算設備的一個示例的示意圖。
圖10是由包括基于視覺的慣性導航系統(tǒng)的設備的顯示器所輸出的圖像的一個示例,其中虛擬箭頭疊置在圖像上。
圖11是由包括基于視覺的慣性導航系統(tǒng)的設備的顯示器所輸出的圖像的一個示例,其中虛擬路徑疊置在圖像上。
具體實施方式
對于基于視覺的慣性導航系統(tǒng),關于設備在一個時間處的位置和取向的信息、或者所觀察到的圖像特征的3D位置往往與關于設備在先前時間的位置和取向的信息高度相關,因為通常目前捕獲的圖像內(nèi)的特征能夠在一個或多個先前圖像中找到。在數(shù)學上以確定性或隨機測量約束的形式表達的此類相關可用于提高基于視覺的慣性導航系統(tǒng)內(nèi)的設備的位置和取向的估計的準確性。然而,處理那些測量可能是計算繁重的,尤其是對于可能具有有限計算能力的設備(諸如可穿戴計算設備)。此外,此類設備可能使用受困于非線性的低端相機/檢測器和IMU,從而增大了保持以及同時處理甚至更多過去的數(shù)據(jù)的需要使得能夠產(chǎn)生準確性高的估計。隨著圖像和慣性讀數(shù)的數(shù)量增加,計算可能變得難以應付。
本文所公開的技術涵蓋用于保持關于基于視覺的慣性導航系統(tǒng)中觀察到的、設備在不同時間處的慣性狀態(tài)和鄰近設備的對象的位置和/或取向之間的約束的信息的方法,而不需要系統(tǒng)同時處理在長的時間段上生成的所有約束。此外,雖然減少了用以處理約束的過去變量的數(shù)量,但本公開的技術使得能夠計算設備在目前情況下的慣性狀態(tài)的高準確性估計(例如厘米級的位置誤差),同時避免對其過度自信。
為了將用以優(yōu)化約束的過去變量的數(shù)量最小化,使用滑動窗反向濾波器(SWF),其中隨著工作于電子計算設備(例如智能電話、電子平板設備、或智能眼鏡)上的基于視覺的慣性導航系統(tǒng)捕獲圖像,SWF處理來自圖像的重疊窗口的信息。利用圖像中跟蹤的特征和從同樣工作于該設備上的IMU獲得的對應信息,SWF獲得設備的慣性狀態(tài)的估計(例如位置、取向、速度、和/或陀螺儀和加速度計偏差),這可被簡單地稱為設備的“狀態(tài)”。SWF還獲得鄰近設備的對象的位置和/或取向的估計,其中該對象在一些情況下被表示為正在圖像之間被跟蹤的特征的3D位置。對于圖像窗口中的每個圖像,計算設備的慣性狀態(tài)以及對象的位置和/或取向的估計。對于每個圖像窗口,SWF然后通過將這些估計轉換為關于設備在單個時間點T處的狀態(tài)的估計來概括這些估計。對于一對窗口,從第一窗口概括的信息然后可被攜帶到第二窗口,只要該對窗口在至少一個相同時間點T重疊。從第一窗口概括的信息然后可在后續(xù)處理步驟中用于第二窗口,以估計設備在其他時間點的狀態(tài)。概括和傳輸各對重疊窗口之間的信息的過程因此保持關于不同時間處設備的慣性狀態(tài)和鄰近設備的對象的位置和/或取向之間的約束的信息,同時將用以優(yōu)化約束的過去變量的數(shù)量最小化。
圖1是示出疊置有由具有根據(jù)本公開配置的基于視覺的慣性導航系統(tǒng)的電子計算設備計算的路徑10的建筑平面圖的示意圖。該建筑平面圖是包括不同部門(例如管道部門、工具和器材部門等)的一般性五金店的概貌,其中陰影區(qū)域表示貨架,并且白色區(qū)域表示過道以及消費者可在其中移動的其他商店區(qū)域。設備可為隨著人移動穿過商店而記錄圖像的便攜式電子計算設備(例如照相手機、智能電話、智能眼鏡、頭戴式顯示器或測量設備)。便攜式電子計算設備還包括具有記錄設備的慣性數(shù)據(jù)諸如線性加速度和角速度的部件(例如加速度計和陀螺儀)的IMU。在記錄圖像和慣性數(shù)據(jù)期間,基于視覺的慣性導航系統(tǒng)計算并存儲計算設備相對于起始點的狀態(tài)的估計,通常被稱為“航跡推算”的過程。位置可用于計算路徑10,該路經(jīng)被存儲在設備的存儲器中和/或疊置在建筑物平面圖的圖像上,如圖1所示,并且該路經(jīng)可被輸出到顯示器以供用戶查看。
圖2是示出基于視覺的慣性導航設備100的示例的示意圖,該基于視覺的慣性導航設備諸如是可用于產(chǎn)生圖1的路經(jīng)10的電子計算設備。設備100包括構成基于視覺的慣性導航系統(tǒng)的多個部件。例如,設備100包括將光學圖像轉換為電子信號的圖像傳感器102,諸如數(shù)字相機。傳感器102可使用任何適當?shù)膱D像感測部件,諸如數(shù)字電荷耦合器件(CCD)、互補金屬氧化物半導體(CMOS)像素傳感器或紅外傳感器。另選地,圖像傳感器102可包括深度傳感器、立體相機對、閃測激光雷達傳感器、激光傳感器或這些的任何組合。圖像傳感器102可完全以硬件形成,或者也可被配置為包括用于修改檢測到的圖像的軟件。設備100還包括慣性測量單元104。IMU 104可包括若干電子硬件部件,包括三軸陀螺儀和加速度計,用于記錄設備100的慣性數(shù)據(jù)。例如,IMU 104可對設備的六個自由度(設備加速度的X、Y和Z笛卡爾坐標、以及設備角速度的滾轉、俯仰、和偏航分量)進行測量和報告。IMU 104也可輸出其他慣性數(shù)據(jù)。各種IMU是可商購獲得的,或者被預安裝在便攜式電子計算設備上。
設備100還包括預處理模塊106,其接收從圖像傳感器102檢測到的圖像以及由IMU 104記錄的慣性數(shù)據(jù)。由圖像傳感器102記錄并且由模塊106處理的圖像也可稱為“幀”。預處理模塊106可以是電子硬件、軟件、或者電子硬件和軟件兩者的組合。除了其他功能之外,預處理模塊106在所記錄幀內(nèi)執(zhí)行特征跟蹤,并將慣性數(shù)據(jù)與幀本身相關聯(lián)。圖像特征對應于表示幀中的對象或對象的一部分的特定位置/像素或一組像素的圖像坐標(例如x-y坐標)。預處理模塊106計算“特征軌跡”,其中特征軌跡是表示跨由圖像傳感器102獲得的兩個或更多個幀跟蹤的單個特征的位置的一系列二維點。預處理模塊106通過在第一幀中標識一個或多個圖像特征,然后將這些一個或多個圖像特征與連續(xù)幀中的一個或多個對應的圖像特征進行匹配來生成特征軌跡。本領域中已知的各種技術可用于獲得特征軌跡。例如,圖像特征的標識可通過以下方式來執(zhí)行:針對每個像素評估打分函數(shù)(諸如在Harris角點檢測器或拉普拉斯算子中使用的打分函數(shù)),然后將得分比其任何相鄰像素都高的像素指定為圖像特征。然后可通過將在第一幀中圍繞該圖像特征居中的像素(或其函數(shù))的矩形陣列與在另一幀中在圖像特征處居中的像素(或其函數(shù))的矩形陣列進行比較來在幀之間匹配圖像特征。通過在連續(xù)對的幀上匹配圖像特征,預處理模塊106構建特征軌跡列表,其中每個特征軌跡包含跨幀的一系列圖像特征位置。模塊106標識的特征軌跡的數(shù)量可不同,并且在一些具體實施中可取決于基于視覺的慣性導航系統(tǒng)正被用于的最終用戶應用。
預處理模塊106還被配置為將從圖像傳感器102接收的幀的一個子組選擇為“關鍵幀”。關鍵幀是由預處理模塊選擇的任何幀。例如,對于從圖像傳感器102接收的10個幀的序列,預處理模塊102可將第一幀和最后一幀指定為關鍵幀。模塊106可基于一個或多個參數(shù)將幀指定為關鍵幀,所述參數(shù)諸如是所期望的關鍵幀頻率,或者是與在當前幀中標識或者在一對幀中匹配的圖像特征的數(shù)量有關的統(tǒng)計值。也可使用其他判定規(guī)則來選擇關鍵幀。預處理模塊106還將關鍵幀序列組織成K個連續(xù)關鍵幀的群組,其中K是預先限定的參數(shù)。每個關鍵幀群組(即圖像組)可被稱為窗口。隨著從圖像傳感器102接收圖像,模塊106可將關鍵幀組織成重疊窗口的群組,其中每個到來的窗口與先前窗口重疊至少一個關鍵幀但不多于M個關鍵幀。M是可在1和K之間取值的參數(shù)。例如,假設K等于5并且M等于3,則模塊106產(chǎn)生的第一窗口可包括關鍵幀(1、2、3、4、5),而第二窗口可包括關鍵幀(3、4、5、6、7),并且第三窗口可包括關鍵幀(4、6、7、8、9)。因此,在第一窗口和第二窗口之間存在三個重疊關鍵幀(即關鍵幀3、4和5),并且在第二窗口和第三窗口之間也存在三個重疊關鍵幀(即關鍵幀4、6和7)。此外,如上述示例中看到的那樣,預處理模塊106選擇的關鍵幀并非必須是連續(xù)的。相反,一個或多個關鍵幀可被丟棄或忽略。此外,K(窗口大小)的值和M(重疊關鍵幀的數(shù)量)的值可隨時間變化。
預處理模塊106將每個特征軌跡與長度等于當前窗口中的關鍵幀數(shù)量的二元向量(例如分別表示狀態(tài)“真”和“假”的1和0的向量)相關聯(lián)。二元向量指示窗口的哪些關鍵幀包括所跟蹤的圖像特征。例如,如果窗口大小為5并且正被處理的當前窗口包含關鍵幀(3、4、5、6、7),則可在窗口中總共5個關鍵幀的3個關鍵幀(5、6、7)中的不同位置處識別一個特征軌跡。該特定特征軌跡將具有與其相關聯(lián)的大小為5的二元向量,諸如(0,0,1,1,1),其中前兩個0指示在關鍵幀3和4中沒有觀察到該特征,并且之后的三個1指示在關鍵幀5、6和7中觀察到了該特征。二元向量然后可在隨后的位置和取向計算期間使用,以指示偽圖像特征(異常值)的存在。也就是說,該向量中與假元素(即0)相關聯(lián)的特征位置將被忽略,而與真元素(即1)相關聯(lián)的特征位置將用于進一步計算。例如,如果關鍵幀窗口(3、4、5、6、7)中的關鍵幀6上的特征軌跡的2D位置在處理期間在某個點處被確定為是異常值,則關鍵幀6然后將在二元向量中被標記為假,使得該向量變?yōu)?0,0,1,0,1),并且關鍵幀6中的特征的觀察將在進一步處理期間被忽略,而關于關鍵幀6的其他信息可仍然在進一步處理中使用。
預處理模塊106還產(chǎn)生包含在每個連續(xù)的關鍵幀對之間以及在每個連續(xù)的關鍵幀對時捕獲的那些慣性讀數(shù)的慣性讀數(shù)陣列。也就是說,模塊106從IMU 104接收慣性讀數(shù),并標識在或接近每個關鍵幀被圖像傳感器102捕獲時出現(xiàn)的讀數(shù)。模塊106然后標識在每個關鍵幀和其下一關鍵幀的時間之間出現(xiàn)的所有讀數(shù)。因此,預處理模塊106生成慣性讀數(shù)序列,開始于在或接近窗口中的第一關鍵幀被捕獲時的讀數(shù),并且結束于在或接近窗口中的最后一個關鍵幀被捕獲時的讀數(shù),并且包含那些端值之間出現(xiàn)的所有慣性讀數(shù)。每個慣性讀數(shù)包括六個測量(例如浮點數(shù)),前三個是指加速度計所測量的線性加速度的X、Y、和Z分量,并且后三個是指陀螺儀所測量的角速度的滾轉、俯仰、和偏航分量。
預處理模塊106還計算SWF處理第一關鍵幀時設備的狀態(tài)的初始估計。在一些具體實施中,初始狀態(tài)估計的計算如下進行。來自短的初始時間段的加速度計讀數(shù)被平均并歸一化,并且設備的滾轉和俯仰取向被初始化為將向量(0,0,1)映射到歸一化為1的該平均加速度計讀數(shù)的旋轉,而偏航可被設置為任何任意值。來自同一個短的初始時間段的陀螺儀讀數(shù)被平均,并且結果被用作為陀螺儀偏差的初始估計。初始位置、速度、和加速度計偏差被設置為0。這些偏差對應于運動感測單元的測量中的誤差,其可能隨時間變化。
預處理模塊106還計算第二和后續(xù)關鍵幀時設備的狀態(tài)的第一估計,例如利用傳播算法來計算。傳播算法取第一時間和第二時間之間的慣性讀數(shù)序列以及設備在第一時間處的慣性狀態(tài),并產(chǎn)生設備在第二時間處的慣性狀態(tài)的估計。該初始估計通常準確度差,但其被后續(xù)處理步驟用來計算設備狀態(tài)的更準確估計。
預處理模塊106還利用例如三角測量算法計算鄰近設備的對象的位置和/或取向的初始估計。三角測量算法取在兩個或更多個不同關鍵幀中觀察到并匹配單個圖像特征的位置(在特征軌跡中提供)以及設備在這兩個關鍵幀時的狀態(tài),并產(chǎn)生該圖像特征的3D位置的估計。初始估計通常準確度差,但其被后續(xù)處理步驟用來計算3D位置的更準確估計。針對設備的姿態(tài),或者針對任何其他參照系來表述匹配的圖像特征的所估計的3D位置。此外,匹配的圖像特征的每個3D位置被考慮為是真實世界中的對象或對象的一部分。因此,初始估計是鄰近設備的對象的位置和/或取向的估計。
對于預處理模塊106所標識的每個窗口,模塊106將特征軌跡信息(其包括特征軌跡、與特征軌跡相關聯(lián)的二元向量、和表示跨鄰近設備的對象的位置和/或取向的不同關鍵幀的每個匹配的圖像特征的3D位置的初始估計)和慣性數(shù)據(jù)(其包括每個窗口中關鍵幀的慣性讀數(shù)序列和設備100在每個關鍵幀被捕獲時的狀態(tài)的初始估計)傳遞給SWF模塊108。
SWF模塊108可以是電子硬件、軟件、或者電子硬件和軟件兩者的組合。SWF模塊108包括若干子模塊,它們一起用于確定鄰近設備的對象的位置和/或取向的估計、以及設備100在各個時間點處的狀態(tài)的估計。子模塊包括集束調整(BA)模塊110、稀疏結構邊緣化(SSM)模塊112、和延遲運動邊緣化(DMM)模塊114。SWF模塊108一次一個窗口地處理從預處理模塊106輸入的數(shù)據(jù)。對于每個窗口,SWF模塊108保持設備在各個時間點處的狀態(tài)的估計,以及表示鄰近設備的對象的位置和/或取向的被跟蹤圖像特征的3D位置。這些估計一起被稱為“模型參數(shù)”。例如,模型參數(shù)包括表示鄰近設備100的對象的位置和/或取向的變量和表示設備100在窗口中的一個或多個關鍵幀時的狀態(tài)(例如位置、取向、速度、和/或慣性偏差)的估計的變量。SWF模塊108還保持與窗口相關聯(lián)的信息矩陣H,其表示關于當前模型參數(shù)可用的信息,其中該信息描述模型參數(shù)的置信度。因此H與表示鄰近設備的對象的位置和/或取向的估計的一組變量以及表示設備在(或接近)每個關鍵幀時的狀態(tài)的估計的另一組變量相關聯(lián)。信息矩陣H可包含多個不同元素,其中一些元素表示關于第一組變量的信息(位置和/或取向估計的置信度),一些元素表示關于第二組變量的信息(設備狀態(tài)的估計的置信度),并且其他一些元素表示第一組變量和第二組變量之間的共享信息,其中共享信息表示第一組變量和第二組變量之間的共享置信度。關于信息矩陣的另外的細節(jié)可例如在Triggs等人于2010年12月20日發(fā)表的“Bundle Adjustment-A Modern Synthesis”第1-71頁中找到,其全文以引用方式并入本文。當SWF模塊108第一次工作時,模塊108用設備狀態(tài)針對一個或多個初始關鍵幀的估計來初始化。
BA模塊110、SSM模塊112、和DMM模塊114結合工作,以隨著每個新窗口被接收而更新新的模型參數(shù)。BA模塊110保持模型參數(shù)并將模型參數(shù)輸出到后處理模塊116。SSM模塊112和DMM模塊114執(zhí)行邊緣化。邊緣化過程減少與信息矩陣H相關聯(lián)的變量的數(shù)量,并產(chǎn)生新的信息矩陣,關于被減少變量的信息的概要已經(jīng)被折疊到該新的信息矩陣中。因此,H中的一些元素被概括到H中的其他元素中,從而產(chǎn)生新的更小的信息矩陣。應該指出的是,SWF模塊仍然保持新的信息矩陣中元素之間的關聯(lián);即,其保持尚未被概括的變量之間的關聯(lián)。特別地,通過將新的信息矩陣中未被概括的元素重新相關聯(lián)來將變量和H中的元素之間的關聯(lián)帶入新的信息矩陣中。
邊緣化的目的是將先前窗口內(nèi)的信息變換到新窗口內(nèi)的信息上,以及將關于一組模型參數(shù)的信息轉換到關于這些模型參數(shù)的子組的信息上。當SWF模塊108接收新窗口時,模塊108獲得對與新的關鍵幀相關聯(lián)的新的特征軌跡和慣性讀數(shù)的訪問權限,但也丟棄與在新窗口中不存在的舊關鍵幀相關聯(lián)的特征軌跡和慣性讀數(shù)。如果SWF模塊108從不丟棄任何特征軌跡或慣性讀數(shù),則處理時間會無限制地增加。相反,如果SWF模塊108在沒有執(zhí)行邊緣化的情況下丟棄特征軌跡和慣性讀數(shù),則所計算的模型參數(shù)估計將是次優(yōu)的,因為這是在沒有考慮以前的有關數(shù)據(jù)的情況下進行的。因此,通過減少用以解決優(yōu)化問題的模型參數(shù)的總數(shù)量,邊緣化降低了SWF模塊108的計算負擔,但也通過在每個窗口與下一窗口之間概括和變換信息而隨時間推移保持一致的模型估計。
從SWF模塊108接收模型參數(shù)的后處理模塊116可包括根據(jù)用戶應用利用包含在模型參數(shù)中的信息的各種算法/程序和/或硬件。例如,后處理模塊116可包括使用由SWF模塊108輸出的模型參數(shù)來確定設備100的路徑歷史并將路徑歷史存儲在設備存儲器中和/或將路徑歷史重疊在輸出到顯示器的地圖(諸如如圖1所示)上的程序。也就是說,隨著SWF模塊108輸出每組新的模型參數(shù),后處理模塊116采取針對設備100在每個關鍵幀時確定的3D特征位置估計和設備狀態(tài)估計,并將這些值添加到設備100的歷史位置和取向值的集合(例如陣列)。位置估計然后可被設備100標繪在地圖或其他網(wǎng)格上以示出設備行進的路徑。
圖3是示出由SWF模塊108執(zhí)行的一種用于計算模型參數(shù)的估計的示例性過程300的流程圖。參考圖2的設備100描述過程300。在從預處理模塊106接收(302)與每個新窗口相關聯(lián)的特征軌跡信息和慣性讀數(shù)時,SWF模塊108將該數(shù)據(jù)提供給BA模塊110。BA模塊110執(zhí)行集束調整(304)來基于當前接收的特征軌跡和慣性讀數(shù)更新模型參數(shù)。為了執(zhí)行該調整,BA模型110還接收與先前計算的信息矩陣H先前有關的數(shù)據(jù)。一般來講,先前信息矩陣H先前是由DMM模塊114針對在當前窗口之前接收的窗口計算的。另選地,當SWF模塊108還沒有處理任何先前窗口時,H先前在基于視覺的慣性導航過程的初始化期間計算。BA模塊110產(chǎn)生模型參數(shù)的更新的估計以及表示SWF模塊的關于模型參數(shù)的信息的更新的信息矩陣H。關于集束調整的另外的細節(jié)可例如在Triggs等人的“Bundle Adjustment-A Modern Synthesis”中找到,其全文以引用方式并入本文。
在更新模型參數(shù)和信息矩陣H之后,BA模塊110將模型參數(shù)和信息矩陣H傳遞給SSM模塊112,該SSM模塊然后執(zhí)行稀疏結構邊緣化(306)。稀疏結構邊緣化的目的是將來自所跟蹤特征的信息變換為關于設備在當前窗口內(nèi)的每個關鍵幀時的狀態(tài)的信息。也就是說,SSM模塊112執(zhí)行的邊緣化過程產(chǎn)生尺寸更小的修改的信息矩陣,其包含表示關于設備在當前窗口中的每個關鍵幀時的狀態(tài)的邊緣信息的多個值。所跟蹤特征的信息的邊緣化因此降低了后續(xù)步驟中處理信息矩陣的計算負擔。修改的信息矩陣可以是新的矩陣或者可以被保持為是相同的原始信息矩陣H,其中原始信息矩陣H的子組被邊緣化到同一矩陣H的其他子組中,并且邊緣化的子組在后續(xù)步驟中被忽略,從而實現(xiàn)降低后續(xù)步驟中處理信息矩陣的計算負擔的相同結果。
SSM模塊112將包含邊緣信息值的修改的矩陣輸出到DMM模塊114。DMM模塊然后對修改的矩陣執(zhí)行延遲運動邊緣化(308)。延遲運動邊緣化的目的是投射對于除了指定數(shù)量的關鍵幀之外的所有關鍵幀的關于設備狀態(tài)的信息,因此進一步減小信息矩陣的大小以及對設備100造成的計算負擔。在另選的具體實施中,DMM模塊114相對于從修改的信息矩陣獲得的協(xié)方差矩陣而不是相對于修改的信息矩陣自身來執(zhí)行延遲運動邊緣化。在該具體實施中,首先計算SSM模塊112產(chǎn)生的修改的信息矩陣的逆矩陣,這得到協(xié)方差矩陣。然后對協(xié)方差矩陣執(zhí)行延遲運動邊緣化,并且對輸出矩陣求逆。
在任一種情況下,來自DMM模塊114的輸出矩陣被傳遞回BA模塊110,并作為先前信息矩陣H先前被用在相對于由預處理模塊106標識的新窗口的下一集束調整過程中。此外,針對SWF模塊108接收的一些窗口,后處理模塊116可從BA模塊110提取更新的對應模型參數(shù)和/或與這些模型參數(shù)有關的信息矩陣。例如,后處理模塊116可從BA模塊110提取最新的模型參數(shù),以獲得設備的更新位置。為了簡化,也可將后處理模塊116從BA模塊提取最新的模型參數(shù)的過程描述為BA模塊將信息輸出到后處理模塊116,如圖3的框310中所示。
下面提供關于BA模塊110、SSM模塊112和DMM模塊114執(zhí)行的操作的進一步細節(jié)。圖4是示出一種用于執(zhí)行集束調整的過程的流程圖。如上所述,BA模塊110首先接收(402)第一窗口中的關鍵幀的特征軌跡信息和慣性讀數(shù),以及先前信息矩陣H先前。利用所接收的特征軌跡信息、慣性讀數(shù)、和先前信息矩陣H先前,BA模塊110然后更新模型參數(shù)并計算(404)與模型參數(shù)相關聯(lián)的當前信息矩陣H(404)。
計算當前信息矩陣H的示例描述如下。設x當前為當前模型參數(shù),其是在初始化期間由預處理模塊計算的,或者是從集束調整的先前迭代帶入的。針對圖像特征計算第一雅可比矩陣JV,從而將x當前與圖像特征相關。特別地,JV的元素被計算為是從3D特征位置到2D圖像特征的轉換的一階導數(shù)。還針對圖像特征計算殘余向量rV。特別地,rV的元素被計算為是每個圖像特征的位置與當前模型參數(shù)針對每個圖像特征預測的位置之間的差??舍槍Ξ斍按翱谥械拿繉B續(xù)關鍵幀之間的慣性讀數(shù)計算第二雅可比矩陣JI。第二雅可比矩陣基于慣性讀數(shù)來相關一些模型參數(shù)x當前。特別地,JI的元素被計算為是上述傳播函數(shù)的一階導數(shù)。還為慣性讀數(shù)計算殘余向量rI。特別地,rI的元素被計算為是由傳播算法針對每個關鍵幀輸出的設備狀態(tài)與當前模型參數(shù)針對每個關鍵幀預測的設備狀態(tài)之間的差。先前估計x當前和信息矩陣H先前由對先前窗口執(zhí)行的延遲運動邊緣化過程來提供(或者如果是第一窗口,則在初始化時提供)。計算先前殘余r先前,其中r先前表示每個關鍵幀時設備狀態(tài)的當前估計與其先前估計之間的差。還計算先前信息矩陣H先前的喬里斯基分解L先前。
當前信息矩陣H然后可表述如下:
其中JVT是針對圖像特征計算的第一雅可比矩陣的轉置,并且JIT是針對慣性讀數(shù)計算的第二雅可比矩陣的轉置。等式中的第一項、第二項和第三項可對應于不同大小的矩陣。例如,由于要在下文中更詳細介紹的邊緣化過程,先前信息矩陣H先前可比第一雅可比矩陣和第二雅可比矩陣小。在這樣的情況下,完全填充以零的行和列視情況而被添加到這三個項中的一者或多者,以確保一個項中的行和列與每個其他項中的對應行和列相關聯(lián)到相同變量。
BA模塊110然后利用雅可比矩陣、殘余向量、先前殘余r先前和喬里斯基分解L先前來計算(406)新的模型參數(shù)x新。計算新的模型參數(shù)的一個示例如下。首先,通過利用矩陣H的喬里斯基分解求解以下線性系統(tǒng)而獲得當前窗口的新模型參數(shù)的估計:
x新=x當前+δx (3)
其中x當前是指當前窗口的現(xiàn)有模型參數(shù),x新是指當前窗口的更新模型參數(shù),LT先前是L先前的矩陣轉置,并且δx是用于將更新存儲到模型參數(shù)的臨時變量。在系統(tǒng)的一些變型形式中,等式(3)可用非歐幾里德更新運算來代替。非歐幾里德更新運算的一個示例是四元數(shù)更新,
其中δq是通過將值1添附到存儲在δx中的對應取向誤差值而形成的四元數(shù),并且表示四元數(shù)乘法。非歐幾里德更新運算的另一個示例是旋轉矩陣更新,
R新=R當前(I+[δx×]) (5)
其中R當前是由存儲在x當前中的值構成的旋轉矩陣,R新是由存儲在x新中的值構成的旋轉矩陣,并且執(zhí)行的運算是矩陣乘法。[δx×]表示針對δx的斜對稱矩陣,
非歐幾里德更新運算的第三示例是分別應用于x新、x當前、和δx內(nèi)的不同子向量的任意數(shù)量的歐幾里德和非歐幾里德更新運算的任意組合。
在針對當前窗口計算新的模型參數(shù)之后,BA模塊110評估成本函數(shù),該成本函數(shù)測量當前窗口的模型參數(shù)與當前特征軌跡和慣性讀數(shù)之間的一致性。可使用本領域中已知的各種不同成本函數(shù)。成本函數(shù)的主要要求是成本函數(shù)在模型參數(shù)與當前特征軌跡和慣性讀數(shù)不符時具有較大值,并且在模型參數(shù)與當前特征軌跡和慣性讀數(shù)相符時具有較小值。例如在一些具體實施中,成本函數(shù)評估如下。通過利用被當前模型參數(shù)關聯(lián)到在其中觀察到圖像特征的關鍵幀的位置和取向將與該特征關聯(lián)的3D位置投射到該關鍵幀中來計算每個圖像特征的“預測2D位置”。將這個預測與圖像傳感器觀察的該特征的“觀察”位置進行比較,并且計算“預測”和“觀察”位置之間的歐幾里得距離平方,這在下文中將被稱為這個圖像特征的誤差。
接下來,如下針對當前窗口中的每個關鍵幀計算誤差。假設當前窗口的第一關鍵幀在時間T處被捕獲,并且窗口中的下一后續(xù)關鍵幀在時間T+1處被捕獲。設備在(包含在當前模型參數(shù)內(nèi)的)關鍵幀時間T時的狀態(tài)和T與T+1之間捕獲的慣性讀數(shù)被用來計算設備在關鍵幀時間T+1時的“預測”狀態(tài)。計算設備在關鍵幀時間T+1時的預測狀態(tài)與存儲在當前模型估計內(nèi)的設備在關鍵幀時間T+1時的狀態(tài)之間的加權平方差,其在下文中將被稱為關鍵幀T的二次誤差項。
與當前模型估計相關聯(lián)的成本然后被計算為是所有圖像特征的二次誤差之和加上所有關鍵幀的二次誤差之和。這個成本針對模型參數(shù)x新評估一次并且針對模型參數(shù)x當前評估一次。如果與模型參數(shù)x新相關聯(lián)的成本比與模型參數(shù)x當前相關聯(lián)的成本小,則新的模型估計代替當前模型估計。否則,拒絕新的模型估計。
成本函數(shù)可以有多種變型形式,包括但不限于以下形式。例如在一些具體實施中,可使用穩(wěn)健成本函數(shù)來代替圖像特征誤差或關鍵幀誤差中的任一者或兩者的平方差之和。穩(wěn)健成本函數(shù)的示例有:
L1范數(shù):
f(x)=2b|x|;
Huber函數(shù):
對于|x|<b,f(x)=x2
否則,f(x)=2b|x|-b2;
或者Cauchy函數(shù):
f(x)=b2log(1+x2/b2)。
在一些具體實施中,可將特定于域的知識插入到成本函數(shù)中。例如在特定應用中,可能知道執(zhí)行基于視覺的慣性導航的設備只在水平面上移動,其中其海拔高度保持固定,或者設備的速度變化受到設備自身的慣性特性限制。可通過使用針對與特定于域的知識不符的模型估計取大的值,并且針對與特定于域的知識符合的模型估計取小的值的成本項來結合此類約束。
在這點,計算x新的成本和x當前的成本之間的絕對差值,并且如果這個差值小于閾值γ或者集束調整過程的重復次數(shù)超過上限Nmax,則集束調整過程完成,在這種情況下,BA模塊110將x當前的當前值輸出作為最終位置和取向估計,并且處理繼續(xù)下文所述的稀疏結構邊緣化。也就是說,在將集束調整應用于一組特征軌跡和慣性讀數(shù)之后,BA模塊110輸出當前模型參數(shù),其包含設備100在當前窗口內(nèi)的每個關鍵幀時的狀態(tài)的估計和所觀察圖像特征的3D位置的估計。以與模型參數(shù)相關聯(lián)的當前信息矩陣H的形式,BA模塊110的輸出還包括表示模型參數(shù)中的置信度(或確定性)的值。否則,如果成本x新和x當前的成本之間的絕對差值大于閾值γ并且集束調整過程的重復次數(shù)小于上限Nmax,則執(zhí)行集束調整的另一迭代,并且SWF模塊110從集束調整過程的開始重新開始處理,開始于計算雅可比矩陣,并如上所述繼續(xù)進行。
在完成集束調整過程后,當前信息矩陣H被傳遞到SSM模塊112。圖5是示出信息矩陣的一個示例的示意圖。信息矩陣H包含關于模型參數(shù)的信息,其是關于設備在每個關鍵幀時的狀態(tài)的信息,以及關于鄰近設備的對象的3D位置和/或取向的信息。如圖5的示例所示,信息矩陣H可被布置成不同的組塊A、B、C、和D。組塊A包括對應于設備狀態(tài)估計的值。組塊D包括對應于鄰近設備的對象的位置和/或取向(例如3D特征位置)的估計的值。組塊B和C包括對應于A中設備狀態(tài)估計與D中特征位置之間的共享信息的值。信息矩陣H是對稱的,因此組塊C是B的矩陣轉置。
SSM模塊112執(zhí)行對信息矩陣H邊緣化的第一部分。圖6是示出一種用于執(zhí)行稀疏結構邊緣化的示例性過程600的流程圖。首先,SSM模塊從BA模塊110接收(602)當前窗口的信息矩陣H。然后,SSM模塊對信息矩陣H的與表示鄰近設備的對象的位置和/或取向的變量相關聯(lián)的子組(即圖5中的組塊B、C、和D)進行邊緣化(604)。關于被邊緣化變量的信息的概括然后保持在新的矩陣A′中。例如,可利用可表述如下的舒爾補來計算邊緣化B、C、和D:
A′=A-BD-1C (7)
這里,SSM模塊112利用H的稀疏結構。具體地,子矩陣A是塊三對角,并且D是塊對角。SSM模塊112只考慮非零的舒爾補的項,這顯著地減少了計算時間。因此,來自這個過程的SSM模塊112的輸出是表示關于在每個關鍵幀時的設備狀態(tài)的邊緣信息的新的信息矩陣A′。A′中包含的值是“邊緣信息值”。在圖7中示出了新矩陣A′的一個示例,并且下面進一步解釋該矩陣的子組。新矩陣A′然后被傳遞(606)到延遲運動邊緣化模塊114。
圖8是示出一種用于執(zhí)行延遲運動邊緣化的示例性過程800的流程圖。DMM模塊114從SSM模塊112接收(802)新的信息矩陣A′,其中DMM模塊114執(zhí)行邊緣化過程的第二部分,即延遲運動邊緣化。在邊緣化過程期間,DMM模塊114消除與表示除了一個關鍵幀之外的所有關鍵幀的設備狀態(tài)估計的變量相關聯(lián)的信息。然而,DMM模塊首先選擇(804)SWF模塊108要處理的當前窗口和新窗口公共的關鍵幀。為了執(zhí)行這個操作,DMM模塊114需要知道當前窗口中的哪些幀將也存在于下一窗口中。為此,在下一窗口到達之前,不進行公共關鍵幀的選擇。優(yōu)選地,存在于兩個窗口中的最早的幀被選為公共關鍵幀。然而,存在于這兩個窗口中的其他幀也可被選為公共關鍵幀。在一些具體實施中,可選擇不止一個公共關鍵幀,并且將使用不止一個關鍵幀來在窗口之間變換信息。
例如,假設當前窗口是W1,并且下一個要到達的窗口是W2。一旦來自W2的信息(即特征軌跡和慣性狀態(tài)信息)到達SWF模塊108處,DMM模塊114就利用幀標識符(例如整數(shù))列表將W1中的幀與W2中的幀相關聯(lián)。假設存在于W1和W2兩者中的最早幀被分配幀標識符F0。具體地,假設W1包含幀(3、4、5、6、7),并且W2包含幀(5、6、7、8、9)。在這種情況下,F(xiàn)0=幀5,因為幀5是存在于這兩個窗口中的最早幀。
一旦選擇了公共關鍵幀,DMM模塊114就除了信息矩陣A′的與表示設備在所選公共關鍵幀處的狀態(tài)的變量相關聯(lián)的子組之外,對A′的與表示設備狀態(tài)的變量相關聯(lián)的子組進行邊緣化(806)。圖7是示出矩陣A′的布置的示例性視圖。如圖中所示,矩陣A′包括與表示設備在每個關鍵幀時的狀態(tài)的變量相關聯(lián)的邊緣信息值以及表示每對關鍵幀時的設備狀態(tài)的變量之間的共享信息項。矩陣A′可被細分為四個子矩陣:區(qū)塊K對應于針對W1和W2兩者為公共的所選幀F(xiàn)0相關聯(lián)的行和列;區(qū)塊G11、G12、G21、G22包含關于不包括所選幀以及它們之間的共享信息項的信息;并且區(qū)塊F1、F2、E1、E2包含所選幀F(xiàn)0與除了所選幀F(xiàn)0之外的幀之間的共享信息項。
延遲運動邊緣化的目的是對區(qū)塊F1、F2、E1、E2和G11G12G21G22進行邊緣化并將這個信息概括在大小與K的大小相同的新矩陣中。新矩陣K′可通過計算舒爾補來確定,并且可表述為:
K′=K-EG-1F (8)
其中:
E=[E1 E2] (11)
DMM模塊114然后通過將K′中的值除以常數(shù)(808)來縮放K′,以便保持一致性并避免過度自信的情況。例如在一些具體實施中,常數(shù)等于窗口大小(例如窗口中測量的數(shù)量或者與窗口相關聯(lián)的時間段)。K′內(nèi)的值被稱為公共幀邊緣信息值。所得到的矩陣K′也可被稱為H先前。H先前然后被BA模塊110作為先前信息矩陣用于下一窗口。因此,SWF模塊108在集束調整過程、稀疏結構邊緣化過程、和延遲運動邊緣化過程期間生成的信息矩陣現(xiàn)在在濾波器的下一迭代中作為先前信息矩陣被用作濾波器的輸入,由此有助于濾波器的迭代之間以及窗口之間的信息轉換。濾波器現(xiàn)在還包含可被輸出到后處理模塊116或可由后處理模塊116獲得的設備狀態(tài)的更新估計。
在一些具體實施中,修改的矩陣A′的延遲運動邊緣化可另選地如下執(zhí)行:首先,DMM模塊114獲得A′的逆矩陣,其可被表述為:
Σ=A′-1 (12)
然后,矩陣∑被分成子區(qū)塊,如圖7所示,子區(qū)塊K被提取,并且矩陣K′根據(jù)下式來計算:
K′=K-1 (13)。
矩陣K′然后如上所述地處理,包括除以常數(shù),以便保持SWF的一致性。
矩陣K′具有比原始信息矩陣H顯著小的尺寸。例如,如果信息矩陣H最初具有1000×1000的大小,則利用SSM模塊112執(zhí)行稀疏結構邊緣化可將矩陣減小到150×150的大小。在應用延遲運動邊緣化之后,矩陣可被進一步減小到15×15的大小。
應用
本文所述的滑動窗反向濾波器(SWF)模塊(例如SWF模塊108)可用作各種基于視覺的慣性導航應用的一部分。例如在一些具體實施中,SWF模塊結合到具有可視顯示器的移動電子計算設備中。SWF模塊確定的位置和取向估計可(例如在后處理之前或之后)作為地圖上的點被輸出到顯示器來為電子計算設備的用戶提供關于設備的當前和過去位置的可視信息。在一些情況下,SWF模塊被配置為是正在移動的電子計算設備的一部分。在其他具體實施中,SWF模塊與電子計算設備分開,例如SWF模塊可工作于服務器上,而IMU和圖像傳感器在電子計算設備中。來自電子計算設備的特征軌跡和慣性數(shù)據(jù)然后可被傳輸?shù)椒掌魃系腟WF模塊,在服務器處,SWF模塊然后計算位置和取向估計。服務器可以是實時地向網(wǎng)站更新電子計算設備的位置和取向信息的因特網(wǎng)服務器。該信息還可與附加信息(諸如被成像環(huán)境的深度信息)結合使用,并產(chǎn)生穿行的地方的3D地圖。
在一些具體實施中,可使用位置和取向估計來跟蹤在一個點處已經(jīng)被圖像傳感器成像的對象。例如,預處理模塊106可標識圖像傳感器捕獲的圖像內(nèi)的一個或多個對象(例如鑰匙、錢包等),然后使用來自SWF模塊的位置和取向數(shù)據(jù)來在該對象不再在圖像傳感器的視場中時保持該對象的最后的已知位置。如果用戶忘了對象在哪里或者如何返回到對象被標識的位置,則電子計算設備可(向顯示器)輸出對象的最后的已知位置和/或用戶能夠遵循以返回到該對象的路徑。
在一些具體實施中,利用具有根據(jù)本公開的基于視覺的慣性導航系統(tǒng)的電子計算設備穿行建筑物(例如倉庫、購物廣場或住宅)的內(nèi)部/外部,以記錄該建筑物的地圖。電子計算設備可存儲SWF模塊提供的位置和取向信息,同時還收集來自諸如例如WiFi信號、藍牙信號、信標生成的信號、近場通信(NFC)等的源的附加信息。電子計算設備的準確位置和取向然后可用于創(chuàng)建結構內(nèi)的不同位置的信號地圖。
在一些具體實施中,可利用具有根據(jù)本公開的基于視覺的慣性導航系統(tǒng)的電子計算設備穿行一個區(qū)域(例如房屋、后院、建筑物內(nèi)部)來創(chuàng)建該區(qū)域的三維(3D)地圖,而不需要除了設備自身的圖像傳感器和慣性測量單元之外的附加傳感器。這是因為SWF模塊生成的信息可包括關于設備和設備外部環(huán)境的3D信息。在一些情況下,利用基于視覺的慣性導航系統(tǒng)產(chǎn)生的3D繪圖的準確性可利用來自結合到電子計算設備中的附加傳感器(諸如深度傳感器)的信息來提高。
在一些具體實施中,SWF模塊可用于朝著對象引導用戶。圖10是電子計算設備輸出的顯示的一個示例,其示出商店區(qū)域的圖像,其中圖形箭頭1010被疊置在圖片上并且指向商店中的一件商品的位置。本文所公開的基于視覺的慣性導航系統(tǒng)可用于計算電子計算設備相對于該商品的位置和取向,使得箭頭始終指向該商品的位置中該商品的方向,其中商品的位置是事先已知的,并且設備的位置和取向是由SWF模塊計算的。箭頭將用戶向需要取的商品進行引導。
在一些具體實施中,SWF模塊提供電子計算設備的準確位置和取向,以允許用戶跟蹤其移動。圖11是包括基于視覺的慣性導航系統(tǒng)的電子計算設備的顯示器所輸出的圖像的示例,其中虛擬路徑1110疊置在圖像上?;谝曈X的慣性導航系統(tǒng)來計算虛擬路徑,作為用戶在握持、攜帶或穿戴著該電子計算設備期間所遵循的導向。
硬件和軟件
圖9示出了可與本文所述的技術一起使用的電子計算設備550的一個示例。例如,參考圖2,移動電子計算設備100可以是設備550的示例。電子計算設備550旨在表示各種形式的電子計算設備,諸如個人數(shù)字助理、蜂窩電話、智能電話、智能眼鏡、和其他類似計算設備。本文示出的部件、其連接和關系、以及其功能意在僅僅是示例,并非意在對本文所述和/或請求保護的技術的具體實施進行限制。
除了其他部件之外,電子計算設備550包括處理器552、存儲器564、輸入/輸出設備諸如顯示器554、通信接口566、和收發(fā)器568。設備550還可具有存儲設備,諸如微硬盤或其他設備,以提供附加存儲。部件550,552,564,554,566和568中的每一者利用各種總線互連,并且這些部件中的若干部件可安裝在公共母板上或者以其他適當?shù)姆绞桨惭b。
處理器552可執(zhí)行計算設備550內(nèi)的指令,包括存儲在存儲器564中的指令。處理器可被實施為包括獨立且多個模擬和數(shù)字處理器的芯片的芯片組。處理器可例如提供對設備550的其他部件的協(xié)調,諸如控制用戶界面、設備550所運行的應用、和設備550進行的無線通信。
處理器552可通過耦接到顯示器554的控制界面558和顯示界面556與用戶通信。顯示器554可例如是TFT LCD(薄膜晶體管液晶顯示器)或者OLED(有機發(fā)光二極管)顯示器,或者其他合適的顯示器技術。顯示界面556可包括適當?shù)碾娐芬则寗语@示器554以向用戶呈現(xiàn)圖形和其他信息。控制界面558可接收來自用戶的命令并對其進行轉換以提交給處理器552。此外,可提供與處理器552通信的外部接口562,以使設備550能夠與其他設備進行近區(qū)域通信。外部接口562可例如在一些具體實施中提供有線通信,或者在其他具體實施中提供無線通信,并且還可使用多個接口。
存儲器564將信息存儲在計算設備550內(nèi)。存儲器564可被實施為計算機可讀介質、易失性存儲器單元、或非易失性存儲器單元中的一者或多者。擴展存儲器574也可被提供并通過擴展接口572連接到設備550,該擴展接口可包括例如SIMM(單列直插存儲器模塊)卡接口。此類擴展存儲器574可為設備550提供額外的存儲空間,或者也可為設備550存儲應用或其他信息。特別地,擴展存儲器574可包括用以執(zhí)行或補充上述過程的指令,并且還可包括安全信息。因此例如,擴展存儲器574可作為設備550的安全模塊被提供,并且可被編程具有允許對設備550的安全使用的指令。
存儲器可包括例如閃存存儲器和/或NVRAM存儲器,如下所述。在一個具體實施中,計算機程序產(chǎn)品被有形地實現(xiàn)在信息載體中。計算機程序產(chǎn)品包含在被執(zhí)行時執(zhí)行一個或多個方法(諸如上述那些方法)的指令。信息載體是計算機或機器可讀介質,諸如存儲器564、擴展存儲器574、或處理器552上的存儲器。
設備550可通過通信接口566無線地通信,如果需要的話,該通信接口可包括數(shù)字信號處理電路。通信接口566可提供各種模式或協(xié)議的通信,諸如GSM語音呼叫、SMS、EMS、或MMS消息收發(fā)、CDMA、TDMA、PDC、WCDMA、CDMA2000、或GPRS等等。此類通信例如可通過射頻收發(fā)器568來進行。此外,可進行短程通信,諸如利用藍牙、WiFi、或其他此類收發(fā)器(未示出)。此外,GPS(全球定位系統(tǒng))接收器模塊570可將附加的與導航和位置有關的無線數(shù)據(jù)提供給設備550,該無線數(shù)據(jù)可視情況而被運行于設備550上的應用使用。
設備550還可利用音頻編解碼器560來以語音通信,該音頻編解碼器可接收來自用戶的口頭信息并將其轉換為可用的數(shù)字信息。音頻編解碼器560同樣可為用戶生成可聽聲,諸如通過揚聲器來生成,揚聲器例如在設備550的聽筒中。此類聲音可包括來自語音電話呼叫的聲音,可包括所記錄的聲音(例如語音消息、音樂文件等),并且還可包括由工作于設備550上的應用生成的聲音。
計算設備550可以多種不同形式來實現(xiàn),如圖所示。例如,其可被實現(xiàn)為蜂窩電話580。其也可被實現(xiàn)為智能電話582、個人數(shù)字助理、平板計算機、智能眼鏡、智能手表、或其他類似移動設備的一部分。
本文所述系統(tǒng)和技術的各個具體實施可在數(shù)字電子電路、集成電路、專門設計的ASIC(專用集成電路)、計算機硬件、固件、軟件、和/或它們的組合中實現(xiàn)。這些各種具體實施可包括在能夠在可編程系統(tǒng)上執(zhí)行和/或解釋的一個或多個計算機程序中實現(xiàn),該可編程系統(tǒng)包括至少一個可編程處理器,該可編程處理器可以是專用或通用的,耦接以從存儲系統(tǒng)、至少一個輸入設備、和至少一個輸出設備接收數(shù)據(jù)和指令并且將數(shù)據(jù)和指令傳輸?shù)酱鎯ο到y(tǒng)、至少一個輸入設備、和至少一個輸出設備。
這些計算機程序(也稱為程序、軟件、軟件應用或代碼)包括用于可編程處理器的機器指令,并且可以高級過程和/或面向對象的編程語言來實現(xiàn),和/或以匯編/機器語言來實現(xiàn)。如本文所用,術語“機器可讀介質”、“計算機可讀介質”是指用于為可編程處理器提供機器指令和/或數(shù)據(jù)的任何計算機程序產(chǎn)品、裝置和/或設備(例如磁盤、光盤、存儲器、可編程邏輯器件(PLD)),包括接收機器指令的機器可讀介質。
為了提供與用戶的交互,本文所述的系統(tǒng)和技術可實現(xiàn)在具有用于為用戶顯示信息的顯示器(例如液晶顯示器監(jiān)視器)的設備上。顯示器還可用于接收來自用戶的信息(例如觸摸屏)。設備可具有用戶可用以提供輸入給計算機的其他輸入設備,諸如鍵盤和/或指向設備(例如鼠標或軌跡球)。也可使用其他類型的設備來提供與用戶的交互。例如,提供給用戶的反饋可以是任何形式的感官反饋(例如視覺反饋、聽覺反饋、或觸覺反饋)。來自用戶的輸入可以任何形式被接收,包括聲音、語音、或觸覺輸入。
已經(jīng)介紹了多個具體實施。然而,應當理解,在不脫離本發(fā)明的實質和范圍的情況下可作出各種修改。其他實施例也在以下權利要求書的范圍內(nèi)。