















摘 要:光束平差法(bundle adjustment,BA)是同步定位和地圖構建(simultaneous localization and mapping,SLAM)后端優化的關鍵技術。在線使用光束平差時能否滿足實時性要求,是將其應用于自動駕駛車端等實時系統的關鍵因素。首先分析特定場景中SLAM數據特點,提出滑動窗口機制降低計算規模;分析局部BA計算中稀疏矩陣性質提升算法的可并行性;最后基于嵌入式GPU對算法進行并行加速。將其應用于車載SLAM系統并在真實場景下測試,實驗結果表明,在AGX Xavier嵌入式GPU上,針對720P道路場景,該方法比同平臺CPU上處理性能平均提升4.8倍,可以處理15 fps的相機位姿地圖數據,滿足了30 fps的視頻處理需求,達到了車載系統的實時性要求。
關鍵詞:光束平差法; 嵌入式GPU; SLAM; CUDA
中圖分類號:TP302 文獻標志碼:A
文章編號:1001-3695(2022)07-008-1973-06
doi:10.19734/j.issn.1001-3695.2021.12.0674
基金項目:國家自然科學基金資助項目(61972180)
作者簡介:謝雙鐿(1995-),男,湖南醴陵人,碩士研究生,主要研究方向為計算機體系結構;孫瑞鑫(1997-),男,河南信陽人,碩士研究生,主要研究方向為計算機體系結構;郭雪亮(1993-),男,河北邢臺人,碩士,主要研究方向為3D視覺;柴志雷(1975-),男(通信作者),山西人,教授,博導,博士,主要研究方向為計算機體系結構(zlchai@jiangnan.edu.cn).
Research on high speed calculation method of online bundle adjustment
Xie Shuangyi1, Sun Ruixin1, Guo Xueliang2, Chai Zhilei1?
(1.School of Artificial Intelligence amp; Computer Science, Jiangnan University, Wuxi Jiangsu 214122, China; 2. UISEE(Shanghai) Automotive Technologies Ltd., Shanghai 201807, China)
Abstract:The bundle adjustment(BA) is a key technology for the back-end optimization of simultaneous positioning and map construction(SLAM) . Using BA online can meet real-time requirements, which is a key factor in applying it to real-time systems such as autonomous driving vehicles. This paper firstly analyzed the characteristics of SLAM data in real scene and proposed a method using sliding window to reduce the calculation scale. Then it featured the parallelism of the algorithm by analyzing the properties of sparse matrices in local BA. Finally, it implemented and accelerated the algorithm based on the embedded GPU. Applied and tested into a vehicle-mounted SLAM system in a real scene, the experimental results show that it has 4.8 times higher processing performance than the CPU on the same platform on average on the AGX Xavier with embedded GPU for 720P images from road scenes. It can also handle position, pose and map data at 15 fps, which meets the real-time requirements of the vehicle-mounted system.
Key words:bundle adjustment(BA); embedded GPU; SLAM; CUDA
0 引言
光束平差法[1]是一種基于相機成像模型等約束條件來求解物體的三維坐標、相機的外方位參數以及相機的內方位參數的算法,被廣泛應用于運動推斷結構(structure from motion,SFM)[2]、同步定位和地圖構建[3]、運動機器人和遙感遙測等領域。在SLAM應用中,BA作為優化器對前端視覺里程計(visual odometry,VO)[4]輸出地圖的參數精度進行優化,是地圖優化的關鍵算法。
BA是對地圖數據進行最優化估計的計算密集型算法,但高延時的計算限制了BA的應用場景,因此如何實現高效計算一直是研究的重點。2009年SBA(sparse bundle adjustment)[5]利用重投影計算中相機矩陣的稀疏性質,使用Cholesky分解法求解BA,極大提高了BA的求解速度和精度,成為后續SLAM后端[6,7]的主流算法。2010年Google公司開發了C++數學庫Ceres Solver[8],可以方便地建模求解BA并具有優秀的性能。2011年Grisetti等人[9]提出圖優化的計算框架g2o,該框架基于因子圖模型構建BA,針對因子圖的邊緣化結構優化計算效率,并且可以使用流形優化解決旋轉矩陣優化中出現奇異解的問題。2019年天津大學針對BA算法中的舒爾消元計算部分設計了FPGA加速器[10],對BA專用加速器開始了探索。2020年Ortiz等人[11]針對多核IPU上設計了BA算法,在大規模數據上相較于Ceres Solver快了24倍。但上述優化大多是針對整體數據離線計算的方式,而離線算法對實時性一般不作要求,并且依賴大型計算機來完成計算。
近年來隨著自動駕駛等領域的發展,SLAM系統希望能更多應用于嵌入式實時環境下,但使用傳統BA作為離線處理VO數據的后端[12],計算復雜度高[13,14]、計算數據量大,難以達到駕駛場景下實時SLAM的性能和精度的要求。因此如何設計實現實時響應的在線輕量化BA算法成為解決車載平臺上SLAM實際應用的關鍵。
本文提出一種在線BA算法,算法中設計了維護VO數據的滑動窗口機制實現局部BA在線計算,并根據滑動窗口中數據稀疏矩陣的特點設計并行優化算法,最終將優化算法在嵌入式GPU平臺上實現并應用到完整的SLAM系統中,對比g2o后端性能達到了4.8倍的加速比,實現了SLAM場景下的實時優化。
1 光束平差法基本原理和計算方法
1.1 最小化重投影誤差優化法
光束法平差的本質是通過優化相機位姿和路標點空間坐標等參數以求解觀測方程下的最小觀測誤差[15]。最小觀測誤差是指空間三維點重新透視投影變換后的投影坐標與實際觀測圖像上的像素坐標的誤差,也稱為重投影誤差。透視投影變換是根據相機投影模型中的參數將三維空間坐標變換到相機拍攝圖像的二維像素坐標的過程,透視投影變換可以用式(1)描述,其中各個參數的描述如表1所示。
為方便表述,將空間三維坐標記為L,投影點像素坐標記為O,相機參數統一記做P,投影函數用函數f表示,則透視投影變換可重新寫做
BA計算中需要聯合多組成像點來完成優化,當空間三維點Li在相機Pj中成像,透視投影變換后有投影點像素坐標Oij,而對應的觀測點像素坐標為Oij,此時對應的重投影誤差計算公式如下:
BA通過求解全局最小重投影誤差得到各個參數的最優估計。根據重投影誤差聯立為方程組可以得到如式(4)所示的全局最小二乘優化問題,其中F(x)為所有gij的聯立方程組,表示全局重投影的誤差,方程的輸入是由所有待優化的參數組成的向量,記為x=[L1,L2,…,P1,P2,…]。
1.2 Levenberg-Marquardt優化算法
BA中通過Levenberg-Marquardt(LM)優化算法[16]求解最小重投影誤差。LM優化算法是一種非線性最小二乘問題的求解算法,也是SLAM中光束平差問題的標準算法[17]。LM算法的特點在于基于高斯—牛頓法加入了阻尼系數,阻尼可以根據迭代結果自動調節,使得算法自身同時具備高斯—牛頓法和最速下降法的優點。
LM算法的核心在于利用泰勒展開近似判斷當前迭代搜索的質量。對于F(x),其二階泰勒展開近似函數T定義為
對于最小二乘問題的優化,LM算法中定義迭代步長Δx求解方程如式(6)所示。
其中:F=F(x)為全局重投影誤差成本函數;J=J(x)為重投影誤差函數g對應的雅可比矩陣;μ為阻尼參數;I為單位矩陣。求解步長后還需要根據效果評價指標ρ判斷步長是否有效。評價指標計算公式如下:
當ρgt;0時,說明此次搜索的迭代步長是有效的,將阻尼系數根據ρ進行重置;當ρ≤0時,說明此次搜索的迭代步長無效,需要擴大阻尼系數重新搜索步長。參數x為經過多次迭代優化后收斂的結果,也就是經過BA算法優化后的參數估計值。
2 基于滑動窗口的在線BA算法
2.1 滑動窗口機制
SLAM系統中為了提高整體計算性能,將整體任務分為前端的VO模塊和后端的地圖優化模塊。前端模塊負責處理傳感器的輸入信息并計算相機位姿和地圖數據,對實時性有較高的要求;后端則是使用BA算法對當前地圖數據離線計算優化。BA優化算法中,對數據中所有相機位姿和三維點進行離線修正,稱之為全局BA(global BA,GBA)。GBA由于處理全局數據計算復雜,通常將其分離為后端模塊進行離線計算,無法對前端輸出實時反饋優化結果,導致前端模塊會有累積漂移誤差的問題。局部BA(local BA,LBA)則不同于GBA,優化時將地圖中的待優化數據限定在一定的時間或空間窗口內進行優化,配合滑動窗口機制可以在單次窗口計算代價大幅度減小的同時獲得不遜于GBA的優化精度[18]。對于SLAM場景下實時輸入的連續圖像序列,VO在相鄰時間空間內輸出的相機位姿和特征點明顯具有強相關性,不同圖像間擁有大量共視特征點;而對于間隔較遠的相機和特征點則表現出邊緣化特征,圖像間的共視特征點極少。因此本文提出一種基于滑動窗口機制的LBA算法,將VO數據建立數據結構關系,利用連續圖像之間的相關特性劃分滑動窗口計算LBA。
如圖1所示,將VO輸出的相機位姿P逐行遞增排列,三維空間點L逐列遞增排列,矩陣中的黑色方塊表示三維點在對應的相機位姿下產生的重投影誤差。隨著VO輸出增加,矩陣規模擴大,對應GBA處理的數據規模也隨之擴大。在新輸出的相機位姿中,即對應矩陣新的一行中,舊的三維空間點可能會在此相機中共視產生新的投影點,也可能離開相機視角導致投影點不再出現,而也可能VO計算得出新的三維空間點,即對應矩陣產生新的一列。根據此特點,LBA將窗口限制為連續的數個相機位姿,并選取在這些相機位姿下產生投影的三維點參與計算。窗口隨時間順序在圖像序列上進行滑動如圖中W1和W2所示,隨著窗口的滑動,會有新相機位姿及其相關路標點進入窗口中參與計算,同時也會有相機位姿退出窗口,與之相關路標點也隨之不再參與計算。滑動窗口劃分出局部數據的方式避免了GBA方式的大規模計算場景,也確保LBA計算中數據規模保持穩定,同時這也符合SLAM系統實際工作時VO數據隨圖像輸入變化的流動過程。窗口隨著VO輸出滑動進行LBA計算,達到在線計算的效果,實時反饋更新窗口中的最優值,從而保證計算結果的整體最優。
若當前窗口中相機的數量為m,三維點數量為n,參與計算的重投影點的數量為l,顯然llt;m×n,則重投影過程算法復雜度為O(l)。待優化的相機參數和三維點坐標參數的數量為6m+3n,因此可以由待優化參數數量得知LM算法單步迭代的復雜度為O16(6m+3n)3。若算法中迭代次數為k次,則整體BA算法復雜度為Okl+16(6m+3n)3。
2.2 LM算法優化設計
雖然滑動窗口減少了LM算法輸入數據的計算規模,但是在線計算的方式對LBA算法有更高的性能要求,嵌入式設備CPU難以達到實時性要求。因此還需要對LM算法進行優化,設計并行計算方法,通過異構設備實現算法加速效果。求解BA問題時,LM優化算法中主要有以下計算任務:a)計算重投影誤差g;b)計算雅可比矩陣J;c)求解式(6)計算迭代步長Δx;d)更新相機位姿和路標點坐標。其中耗時最長的部分是計算雅可比矩陣J和求解迭代步長,占據總耗時的80%[10],而且以矩陣計算為主。通過滑動窗口機制建立的投影點與相機位姿和三維空間坐標之間的關系,可以為LM算法各步驟設計并行計算方法。
2.2.1 稀疏矩陣重映射
通過滑動窗口對VO數據的管理能夠快速得到LBA輸入數據之間的關系。由于實際中三維空間點僅可能被有限的數個相機聯合觀測,也就是同一三維空間點在連續多個相機位姿下產生重投影誤差的長度有限,所以BA的輸入數據矩陣整體呈現為近似沿對角線分布的稀疏矩陣。滑動窗口雖然限制輸入數據矩陣大小,但仍然具備稀疏的性質,導致設計并行任務時,對輸入數據無論是利用相機位姿按行劃分,或利用空間三維點按列劃分都會出現計算任務不均衡的問題,所以此處設計一種將稀疏矩陣一維化展開的方法,實現對窗口輸入數據的細粒度并行劃分。
如圖2所示,輸入數據保存在稀疏矩陣中,通過行號和列號對數據進行索引。在遍歷所有數據時需要枚舉所有的行列號,而矩陣中的有效元素數量卻遠低于矩陣大小,因此為了重新編碼矩陣中有效元素,使用映射數組記錄有效元素的行列編號。映射數組記錄了元素的行列號,對應到滑動窗口對應的相機位姿編號和三維空間點編號,因此映射數組實際上記錄了輸出的重投影誤差編號對應的輸入數據編號的映射關系。由于映射數組記錄的是索引編號,所以相機位姿、空間三維點坐標和重投影誤差都可以使用線性存儲結構,方便按照編號索引。
對于線性存儲中相機位姿P和三維點空間點L,觀測點坐標,存儲索引關系的映射數組為map,使用.at(·)函數表示線性存儲中對應輸入索引的數據,則重投影計算中編號為k的數據有如下的計算關系,如式(8)所示。
從重投影誤差的計算式中可以發現,各編號對應的誤差計算均相互獨立,并且輸出數據與為一維的線性存儲編號一一對應,因此可以設計并行算法,將各編號數據并行完成計算。
2.2.2 數據并行計算設計
LM優化算法求解BA過程中,待優化的參數只有相機位姿和三維空間坐標,雅可比矩陣根據參數類型分為兩部分,如式(9)所示。
顯然雅可比矩陣的規模由重投影誤差數量決定,它可以與重投影誤差使用相同的編號索引。由于投影關系中三維空間點對應相機位姿只產生一個投影點,計算透視投影函數的雅可比矩陣可以表述為式(9)的形式,結合式(8)的映射關系可以得到矩陣J對應投影點計算出的單獨一行具有式(10)的形式。
不難發現,此時雅可比矩陣具有以下性質:重投影誤差g.at(k)只參與雅可比行分塊矩陣Jk的計算;JP和JL在行分塊矩陣中每行塊只分別對應一個分塊矩陣,其余均為零矩陣。因此雅可比矩陣只需要一維線性結構進行壓縮存儲,且有與重投影誤差形式相似的結構,索引為k的行分塊矩陣存儲結構如式(11)所示。映射數組同時還記錄了JP和JL的行列索引信息,輸入數據中相機位姿數量m、三維空間點數量n、行塊的編號k滿足0≤klt;m+n,JP.at(k)對應的列塊編號為i,JL.at(k)對應的列塊編號為i+m+j。
將輸入數據進行展開并重新映射索引后,雅可比矩陣中每個行塊矩陣均可以并行計算,且計算時只需要讀取相關的P.at(j)和L.at(i)作為輸入計算對應的分塊矩陣即可。數組map中已經記錄了對應的數據映射關系,可以快速讀取數據。
在上述分組存儲后,雅可比矩陣J以行塊進行分組計算,并將每行塊分為獨立兩個分塊矩陣存儲,基于此分塊形式可以將步長的求解方程先計算出部分結果再進行求和來得到最終結果,將式(6)的計算轉換為如式(12)的表示。
根據映射數組的索引k可以得到式(12)中各式的對應計算,如式(13)所示。
步驟中所有的矩陣乘法并行計算可以有效提高計算效率。形如式(12)的方程組使用舒爾消元能夠將方程轉換為形如HscΔxP=bsc的形式,先行計算出部分解,從而回避大矩陣求逆的計算,給出消元方程計算如式(14)所示。
求解ΔxP時,由于Hsc為實正定對稱矩陣,使用數學庫中的Cholesky分解方法求解方程更加高效。解出ΔxP后回代方程即可求出ΔxL,如式(15)所示。
舒爾消元過程充分運用BA問題中矩陣分塊的性質,能夠將矩陣運算并行化。對于HPP和HLL具有對角分塊形式的矩陣,對角的分塊矩陣相互獨立完成計算。對于bsc和ΔxL劃分為行塊的形式運算,也滿足并行計算的條件。對于計算HPLH-1LLHTPL,則使用類似圖2的方法建立映射表,將分塊矩陣的二維行列索引重映射為一維數組,再根據索引分組并行計算。
3 基于嵌入式GPU的并行加速
本文基于NVIDIA Jetson AGX Xavier嵌入式GPU進行并行加速,該設備配備有8核ARM v8.2 64位CPU和64個Tensor Core的512核Volta架構GPU,并且配有32 GB內存并支持統一內存訪問,GPU使用NVIDIA公司的CUDA編程框架進行開發管理。Xavier上使用統一內存,配合CUDA異構編程框架,CPU和GPU間可以快速傳遞內存數據。根據優化設計后的BA算法框架如圖3所示,CPU上實現滑動窗口機制和LM算法迭代控制判斷,GPU上實現雅可比矩陣計算、舒爾消元、線性方程求解等并行計算任務。
3.1 滑動窗口數據組織實現
VO會輸出當前幀間的相機位姿和匹配特征點,但需要緩存多幀間的三維點和相機位姿信息完成BA。因此需要設計數據結構用于保存相鄰幀間特征點的匹配關系以及三維點與特征點的投影對應關系,用于實現滑動窗口機制。滑動窗口中的數據結構如圖4所示。VO輸出的特征點有兩種情況:a)該特征點為新提取的特征點,此時會對應計算出新的三維點;b)該特征點在上一幀有匹配的特征點,此時需要將該特征點與已有的三維點建立關聯。因此使用鄰接表結構來分別存儲相機位姿、三維點和二維投影點。各個鄰接表中,每個特征點保存匹配的上一幀中與之匹配的特征點的指針,方便查找匹配關系;每個三維點保存與之建立投影關系的特征點指針;相機位姿則記錄與此相機相關的所有特征點指針及三維點指針,便于窗口發生滑動時及時釋放資源。
3.2 基于CUDA實現LM并行優化
Xavier平臺上GPU并行計算模型是一種稱為SIMT(單指令多線程)的眾核架構,包含多種并行結構。在CUDA編程模型下,GPU作為一個協處理器,適合處理高度并行化的大量輕量級線程,以最大限度地提高吞吐量。CUDA架構中線程層次結構由網格(grid)維度和塊(block)維度決定,第一個參數決定啟動的塊的數量,第二個參數決定每個塊中線程的數目。
滑動窗口中將輸入數據存儲在全局內存中后,根據建立的映射數組可以將投影點的旋轉投影變換和雅可比矩陣的第k個分塊矩陣計算分別對應到第k號線程中進行計算,計算流程如圖5所示。各個線程計算先從全局內存中取出輸入數據緩存到寄存器內存中,計算出中間結果后再將結果存儲到對應結果的全局內存中,即可構造出線性方程組的初步形式。
得到迭代方程系數矩陣后進一步進行舒爾消元,消元過程中HPLH-1LLHTPL的計算需要根據有效行塊進行重新映射索引,而且以k編號的分塊矩陣的乘積為最終結果的部分和。因此求和過程可以結合并行分組進行歸約求和以取得更好的效率,具體計算流程如圖6所示。
舒爾消元后的方程HscΔxP=bsc的系數矩陣大小只和相機參數數量有關,即與滑動窗口大小有關。由于SLAM場景中連續相關相機位姿數目數量,所以使用CUSOLVER數學庫中的稠密喬洛斯基分解方法(cusolverDnDpotrf)及其配套的求解函數(cusolverDnDpotrs)完成線性方程求解。求解出ΔxP后利用式(15)解出ΔxL,將解出的全部再次計算重投影誤差,將誤差的值傳回CPU端,由CPU控制此次迭代是否可以接受以及下一輪迭代的進行。迭代完成后將優化后的相機位姿和三維點信息傳遞回CPU并輸出,完成地圖優化構建。
4 實驗結果與分析
本文所實現的優化算法在完整的自動駕駛實驗平臺上部署并在真實場景下進行了測試。搭建的測試環境如圖7所示,其中包含NVIDIA Jetson AGX Xavier計算平臺,其CPU為64位8核心Carmel Arm v8.2、GPU為512核心Volta架構、內存為32 GB 256位LPDDR4X內存、操作系統為Ubuntu 18.04 LTS、CUDA版本為10.2;同時搭載了攝像頭、高精度GPS等傳感器設備。
SLAM系統用于驗證在線光束平差算法的性能,該系統將攝像頭采集的圖片序列分析處理,實時計算稀疏光流并輸出優化后的三維點云和行駛路徑。SLAM系統主要由圖像矯正、特征提取、特征追蹤、位姿恢復、點云重建和BA模塊組成,均采用在線計算的方式。通過測試平臺搭載720P@30 fps定焦相機在車場實際道路行駛采集實驗測試數據,并對基于滑動窗口的在線BA算法進行測試,對比同平臺下使用g2o[9]作為后端在CPU優化算法的結果差異。
首先對車場的實際數據進行分析,統計VO輸出的被連續觀測特征點的共視相機數量,得到的分布數據如表2所示。
通過對輸出的特征點數量比例進行分析可以發現,特征點關聯的相機數量越多,則所占比例越低,這符合對道路行駛數據中特征點呈窗口出現的特點,也證明了SLAM場景下更適合使用LBA。統計中近95%特征點的連續相關相機數量不超過10,說明SLAM系統中的數據相對于整體具有局部時空連續的性質,使用滑動窗口機制能夠利用這一性質提高計算效率。
對于實地采集的3 419張圖片道路數據,在配置LBA不同窗口大小的情況下在平臺上進行測試,BA模塊平均耗時對比情況如表3所示,迭代次數為15次,CPU端算法耗時平均為GPU加速算法4.8倍,而且隨著窗口大小的增加,加速比越大,單個窗口中需要計算的路標點數量會隨之增加,性能提升也越大,體現了使用GPU加速并行計算的優勢。
整體重投影誤差隨迭代次數下降曲線如圖8所示,兩者都是基于相同參數配置的LM優化算法,因此迭代曲線下降速度基本一致。對比g2o和本文設計方法的優化后結果的旋轉矩陣系數和三維點的均方誤差差異小于1%,證明算法精度符合要求。
將前端VO和本文設計的后端優化BA算法共同部署到Xavier平臺上,攝像機以30 fps速率輸入圖片到VO,VO每2幀圖片輸出一次位姿數據,對應為15 fps的輸出速率,BA算法選取窗口大小為5,實時運行中和運行結束后的軌跡和點云輸出如圖9所示。運行中后端BA算法平均耗時為59.6 ms(gt;15 fps),滿足實時性的要求。SLAM系統最終輸出的軌跡與實際衛星圖像對比如圖10所示。
本文實現方案與其他SLAM系統后端在性能方面的對比如表4所示。其中文獻[19]設計了完整的SLAM系統,此處參考其中LBA性能的平均值;文獻[20]只針對BA中部分計算加速,因此只分析了單步迭代的耗時。多個方案間存在性能上的差異與計算的數據量有關,基于滑動窗口的設計可以有效劃分安排計算任務,從而極大提高計算速度。同時,BA主要計算任務全部轉移到GPU上進行計算,能夠減少CPU與GPU間的數據傳輸時間,提升整體的計算速度。
5 結束語
本文提出一種基于滑動窗口的在線BA算法,對其并行加速實現在線BA的高速計算。通過滑動窗口機制解決了實時輸出的位姿和點云無法被在線計算的問題;同時利用LBA數據的稀疏矩陣性質,提出LM算法的并行優化計算方法,解決LBA復雜計算的性能問題;最后在嵌入式GPU平臺上基于CUDA編程模型實現LBA的實時在線計算。通過將該算法應用于實際車載場景下的SLAM系統中,成功使得系統在實時運行的條件下達到了高精度。
駕駛場景的數據中,三維投影點只在局部相機窗口內發生共視,相機矩陣整體呈現稀疏性質,因此數據的特殊結構是加速計算的突破點;此外相較于離線優化算法,在線算法從局部最優達成全局最優的計算方式更適合實時SLAM中的持續計算場景。車載場景下計算資源有限,充分利用硬件特性進行算法優化,是實現算法高速計算的有效手段。
參考文獻:
[1]單杰.光束法平差簡史與概要[J].武漢大學學報:信息科學版,2018,43(12):1797-1810.(Shan Jie.Brief history and summary of bundle adjustment[J].Journal of Wuhan University:Information Science,2018,43(12):1797-1810.)
[2]Zhu Siyu,Zhang Runze,Zhou Lei,et al.Very large-scale global SfM by distributed motion averaging[C]//Proc of IEEE Conference on Computer Vision and Pattern Recognition.Piscataway,NJ:IEEE Press,2018:4568-4577.
[3]劉浩敏,章國鋒,鮑虎軍.基于單目視覺的同時定位與地圖構建方法綜述[J].計算機輔助設計與圖形學學報,2016,28(6):855-868.(Liu Haomin,Zhang Guofeng,Bao Hujun.A survey of monocular simultaneous localization and mapping[J].Journal of Computer Aided Design amp; Computer Graphics,2016,28(6):855-868.)
[4]Clark R,Wang Sen,Wen Hongkai,et al.VINet:visual-inertial odometry as a sequence-to-sequence learning problem[C]//Proc of AAAI Conference on Artificial Intelligence.Palo Alto,CA:AAAI Press,2017:3995-4001.
[5]Lourakis M I A,Argyros A A.SBA:a software package for generic sparse bundle adjustment[J].ACM Trans on Mathematical Software,2009,36(1):1-30.
[6]Bustos A P,Chin T J,Eriksson A,et al.Visual SLAM:why bundle adjust?[C]//Proc of International Conference on Robotics and Automation.Piscataway,NJ:IEEE Press,2009:2385-2391.
[7]潘林豪,田福慶,應文健,等.融合雙目視覺與慣導信息的高效視覺里程計算法[J].計算機應用研究,2021,38(6):1739-1743,1769.(Pan Linhao,Tian Fuqing,Ying Wenjian,et al.Efficient visual odometry algorithm combining stereo vision and inertial navigation information[J].Application Research of Computers,2021,38(6):1739-1743,1769.)
[8]Agarwal S,Mierle K.Ceres Solver[EB/OL].(2012)[2021-10-11].http://ceres-solver.org.
[9]Grisetti G,Kümmerle R,Strasdat H,et al.g2o:a general framework for (hyper) graph optimization[C]//Proc of IEEE International Confe-rence on Robotics and Automation.Piscataway,NJ:IEEE Press,2011:3607-3613.
[10]Qin Shuzhen,Liu Qiang,Yu Bo,et al.π-BA:bundle adjustment acce-leration on embedded FPGAs with co-observation optimization[C]//Proc of the 27th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines. Piscataway,NJ:IEEE Press,2019:100-108.
[11]Ortiz J,Pupilli M,Leutenegger S,et al.Bundle adjustment on a graph processor[C]//Proc of IEEE/CVF Conference on Computer Vision and Pattern Recognition.Piscataway,NJ:IEEE Press,2020:2413-2422.
[12]張洪華,劉璇,陳付豪,等.基于圖優化的 SLAM 后端優化研究與發展[J].計算機應用研究,2019,36(1):11-17.(Zhang Honghua,Liu Xuan,Chen Fuhao,et al.Research and development of SLAM back-end optimization based on graph optimization[J].Application Research of Computers,2019,36(1):11-17.)
[13]Agarwal S,Furukawa Y,Snavely N,et al.Building Rome in a day[J].Communications of the ACM,2011,54(10):105-112.
[14]Frahm J M,Fite-Georgel P,Gallup D,et al.Building Rome on a cloudless day[C]//Proc of European Conference on Computer Vision.Berlin:Springer-Verlag,2010:368-381.
[15]Triggs B,McLauchlan P F,Hartley R I,et al.Bundle adjustment—a modern synthesis[C]//Proc of International Workshop on Vision Algorithms.Berlin:Springer,1999:298-372.
[16]Madsen K,Nielsen H B,Tingleff O.Methods for non-linear least squares problems (2nd ed)[R].Lyngby:Technical University of Denmark,2004.
[17]Strasdat H,Montiel J M M,Davison A J.Visual SLAM:why filter?[J].Image and Vision Computing,2012,30(2):65-77.
[18]Zhang Zhengyou,Shan Ying.Incremental motion estimation through modified bundle adjustment[C]//Proc of International Conference on Image Processing.Piscataway,NJ:IEEE Press,2003.
[19]Campos C,Elvira R,Rodríguez J J G,et al.ORB-SLAM3:an accurate open-source library for visual,visual-inertial,and multimap SLAM[J].IEEE Trans on Robotics,2021,37(6):1874-1890.
[20]劉強,秦書臻,俞波,等.一種用于SLAM的嵌入式光束平差法加速器設計[J].天津大學學報:自然科學與工程技術版,2020,53(12):1281-1287.(Liu Qiang,Qin Shuzhen,Yu Bo,et al.An embedded bundle adjustment accelerator design for SLAM[J].Journal of Tianjin University:Sciences and Technology,2020,53(12):1281-1287.)