數(shù)據(jù)結(jié)構(gòu)專題(三) | iVox (Faster-Lio): 智行者高博團隊開源的增量式稀疏體素結(jié)構(gòu) & 源碼解析
在2022年初,智行者高博團隊和清華大學(xué)聯(lián)合發(fā)表了Faster-Lio的工作,該成果收錄于IEEE RA-Letters,其開源代碼展示了如何通過增量式稀疏體素結(jié)構(gòu)iVox,提升Lidar-inertial Odometry(LIO)的算法效率。相較于MaRS-Lab的FastLio2,F(xiàn)aster-Lio在保持精度的同時,得益于iVox的設(shè)計,尤其是在增刪操作上的高效性,顯著減少了維護(hù)local map和查詢近鄰的時間。
高博在知乎文章中詳細(xì)解讀了Faster-Lio,特別是iVox的創(chuàng)新設(shè)計。我們從數(shù)據(jù)結(jié)構(gòu)的角度出發(fā),通過簡化的方式解釋iVox:首先,利用哈希表(如C++的std::unordered_map)將體素空間坐標(biāo)作為key,通過精心設(shè)計的空間哈希函數(shù)映射到有限的索引空間,實現(xiàn)快速的增刪操作。哈希表的優(yōu)化和抗沖突設(shè)計使得碰撞概率極低,即使有沖突,也能快速忽略。
此外,iVox采用了偽希爾伯特曲線(PHC)來組織體素,這種曲線將高維空間劃分為一系列單元,并通過分段曲線連接,便于一維空間索引。盡管希爾伯特曲線是理想化的,但在工程實踐中,PHC在接近填充空間的同時,保持了可接受的實現(xiàn)復(fù)雜度。
Faster-Lio的源碼解析顯示,核心在于IVox類,其中g(shù)rids_map_和grids_cache_是關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。AddPoints()負(fù)責(zé)增量點的添加,通過哈希查找確保高效,而GetClosestPoint()則通過kNN搜索找到最近鄰。
盡管論文與代碼存在一些差異,如體素過時刪除策略,但整體上,iVox的設(shè)計思路清晰,哈希表和空間組織策略的結(jié)合使得其在實際應(yīng)用中表現(xiàn)出色。然而,對于體素內(nèi)點的處理,實際工程中可能更傾向于簡化,例如通過體素降采樣和八叉樹結(jié)構(gòu),這些方法在某些場景下可能會比PHC更易于實現(xiàn)。
最后,作者WGH無疆強調(diào),iVox是簡單實用的解決方案,但希爾伯特曲線在工程實踐中的優(yōu)勢可能有限,尤其是在點數(shù)不多的情況下。未來,他們將探討其他類似的工作,如CMU的Super Odometry,其中可能結(jié)合了哈希表和八叉樹。歡迎大家繼續(xù)關(guān)注和交流。
泰昌13713417374: 數(shù)據(jù)結(jié)構(gòu)課設(shè)總結(jié)
英吉沙縣兩維: ______ 我正好在做課設(shè),我把我的總結(jié)給你.數(shù)據(jù)結(jié)構(gòu)是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機科學(xué)的核心課程,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課.隨著高級語言的發(fā)展,數(shù)據(jù)結(jié)構(gòu)在計算機的研究和應(yīng)用中已展現(xiàn)出強大的生...
泰昌13713417374: 數(shù)據(jù)結(jié)構(gòu)導(dǎo)論自考填空題 - 上學(xué)吧 - 上學(xué)吧
英吉沙縣兩維: ______ 大工11秋《數(shù)據(jù)結(jié)構(gòu)》在線作業(yè)1 一,單選題 1. B 2. B 3. B 4. A 5. A 6. C 7. B 8. B 9. C 10.B 二,判斷題 1.B 2.A 3.B 4.B 5.B 6.A 7.B 8.B 9.B 10.A 大工11秋《數(shù)據(jù)結(jié)構(gòu)》在線作業(yè)2 一,單選題 1. difference(A,B,C)表示求集合A和B的差集C.若A={...
泰昌13713417374: - 關(guān)于數(shù)據(jù)結(jié)構(gòu)的一道題目!
英吉沙縣兩維: ______ 數(shù)據(jù)邏輯結(jié)構(gòu)包括三種類型 線性結(jié)構(gòu),樹形結(jié)構(gòu)和圖形結(jié)構(gòu),樹形結(jié)構(gòu)和圖形結(jié)構(gòu)合稱為:非線性結(jié)構(gòu).
泰昌13713417374: 數(shù)據(jù)結(jié)構(gòu)(C語言)3
英吉沙縣兩維: ______ 1 q != NULL 2 p = L->next; 3 p==q->prev 4 p=p->next; 5 q=q->prev;
泰昌13713417374: 2、在算法設(shè)計中,數(shù)據(jù)的組織規(guī)則和構(gòu)造方法是一項重要內(nèi)容,稱為數(shù)...
英吉沙縣兩維: ______ 數(shù)據(jù)結(jié)構(gòu)包含三個方面:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)的操作. 1、根據(jù)數(shù)據(jù)元素之間邏輯關(guān)系的不同數(shù)學(xué)特征,數(shù)據(jù)結(jié)構(gòu)可分為三種:線性結(jié)構(gòu)(線性結(jié)構(gòu)又分為線性表、串、棧和隊列)、樹結(jié)構(gòu)和圖結(jié)構(gòu),其中樹和圖又稱為非線性結(jié)構(gòu). 2、數(shù)據(jù)存儲結(jié)構(gòu)的基本形式有兩種:順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu). 3、數(shù)據(jù)操作是指對一種數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)元素進(jìn)行各種運算和處理,如:初始化、求長度、遍歷、取值、置值、插入、刪除……
泰昌13713417374: 數(shù)據(jù)結(jié)構(gòu)在GIS的應(yīng)用 -
英吉沙縣兩維: ______ GIS常用數(shù)據(jù)結(jié)構(gòu) 計算機是一門研究用計算機進(jìn)行信息表示和處理的科學(xué).這里面涉及到兩個問題:信息表示、信息處理,信息表示直接關(guān)系到信息處理的算法與效率.信息(數(shù)據(jù))之間往往是有重要的結(jié)構(gòu)關(guān)系,數(shù)據(jù)結(jié)構(gòu)就是對數(shù)據(jù)表示以及...
高博在知乎文章中詳細(xì)解讀了Faster-Lio,特別是iVox的創(chuàng)新設(shè)計。我們從數(shù)據(jù)結(jié)構(gòu)的角度出發(fā),通過簡化的方式解釋iVox:首先,利用哈希表(如C++的std::unordered_map)將體素空間坐標(biāo)作為key,通過精心設(shè)計的空間哈希函數(shù)映射到有限的索引空間,實現(xiàn)快速的增刪操作。哈希表的優(yōu)化和抗沖突設(shè)計使得碰撞概率極低,即使有沖突,也能快速忽略。
此外,iVox采用了偽希爾伯特曲線(PHC)來組織體素,這種曲線將高維空間劃分為一系列單元,并通過分段曲線連接,便于一維空間索引。盡管希爾伯特曲線是理想化的,但在工程實踐中,PHC在接近填充空間的同時,保持了可接受的實現(xiàn)復(fù)雜度。
Faster-Lio的源碼解析顯示,核心在于IVox類,其中g(shù)rids_map_和grids_cache_是關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。AddPoints()負(fù)責(zé)增量點的添加,通過哈希查找確保高效,而GetClosestPoint()則通過kNN搜索找到最近鄰。
盡管論文與代碼存在一些差異,如體素過時刪除策略,但整體上,iVox的設(shè)計思路清晰,哈希表和空間組織策略的結(jié)合使得其在實際應(yīng)用中表現(xiàn)出色。然而,對于體素內(nèi)點的處理,實際工程中可能更傾向于簡化,例如通過體素降采樣和八叉樹結(jié)構(gòu),這些方法在某些場景下可能會比PHC更易于實現(xiàn)。
最后,作者WGH無疆強調(diào),iVox是簡單實用的解決方案,但希爾伯特曲線在工程實踐中的優(yōu)勢可能有限,尤其是在點數(shù)不多的情況下。未來,他們將探討其他類似的工作,如CMU的Super Odometry,其中可能結(jié)合了哈希表和八叉樹。歡迎大家繼續(xù)關(guān)注和交流。
相關(guān)評說:
英吉沙縣兩維: ______ 我正好在做課設(shè),我把我的總結(jié)給你.數(shù)據(jù)結(jié)構(gòu)是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機科學(xué)的核心課程,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課.隨著高級語言的發(fā)展,數(shù)據(jù)結(jié)構(gòu)在計算機的研究和應(yīng)用中已展現(xiàn)出強大的生...
英吉沙縣兩維: ______ 大工11秋《數(shù)據(jù)結(jié)構(gòu)》在線作業(yè)1 一,單選題 1. B 2. B 3. B 4. A 5. A 6. C 7. B 8. B 9. C 10.B 二,判斷題 1.B 2.A 3.B 4.B 5.B 6.A 7.B 8.B 9.B 10.A 大工11秋《數(shù)據(jù)結(jié)構(gòu)》在線作業(yè)2 一,單選題 1. difference(A,B,C)表示求集合A和B的差集C.若A={...
英吉沙縣兩維: ______ 數(shù)據(jù)邏輯結(jié)構(gòu)包括三種類型 線性結(jié)構(gòu),樹形結(jié)構(gòu)和圖形結(jié)構(gòu),樹形結(jié)構(gòu)和圖形結(jié)構(gòu)合稱為:非線性結(jié)構(gòu).
英吉沙縣兩維: ______ 1 q != NULL 2 p = L->next; 3 p==q->prev 4 p=p->next; 5 q=q->prev;
英吉沙縣兩維: ______ 數(shù)據(jù)結(jié)構(gòu)包含三個方面:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)的操作. 1、根據(jù)數(shù)據(jù)元素之間邏輯關(guān)系的不同數(shù)學(xué)特征,數(shù)據(jù)結(jié)構(gòu)可分為三種:線性結(jié)構(gòu)(線性結(jié)構(gòu)又分為線性表、串、棧和隊列)、樹結(jié)構(gòu)和圖結(jié)構(gòu),其中樹和圖又稱為非線性結(jié)構(gòu). 2、數(shù)據(jù)存儲結(jié)構(gòu)的基本形式有兩種:順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu). 3、數(shù)據(jù)操作是指對一種數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)元素進(jìn)行各種運算和處理,如:初始化、求長度、遍歷、取值、置值、插入、刪除……
英吉沙縣兩維: ______ GIS常用數(shù)據(jù)結(jié)構(gòu) 計算機是一門研究用計算機進(jìn)行信息表示和處理的科學(xué).這里面涉及到兩個問題:信息表示、信息處理,信息表示直接關(guān)系到信息處理的算法與效率.信息(數(shù)據(jù))之間往往是有重要的結(jié)構(gòu)關(guān)系,數(shù)據(jù)結(jié)構(gòu)就是對數(shù)據(jù)表示以及...