武大重磅開源Snail-Radar:專為4D Radar slam設計!
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
大規模4D radar數據集
近年來,毫米波雷達因其在惡劣條件下的魯棒性而被用于里程計和建圖。常用的雷達類型有兩種:
- 掃描雷達,它們通過旋轉捕獲360°視野的掃描
- 固態單芯片雷達,通常具有大約120°的水平視野。
單芯片雷達頻率更高且不如掃描雷達笨重。通過多普勒速度,單芯片雷達可以輕松檢測移動物體,從而解決基于攝像頭或激光雷達里程計方法中遇到的重要挑戰。然而,傳統汽車雷達的垂直分辨率較差,導致低高物體在同一視野中的混淆。
近期的單芯片4D成像雷達進展,使得垂直分辨率提高,能精確測量高度,同時具備距離、方位角和多普勒速度(因此稱為4D)。利用毫米波,4D雷達能輕松區分移動物體,并在霧、雨和雪等惡劣條件下正常感知。這些特性使4D雷達對需要在動態和惡劣環境中可靠運行的自主系統(如機器人和汽車)具有吸引力。
現有的公共4D雷達數據集在參考軌跡的準確性、數據采集平臺的多樣性、地理范圍以及同一路線的數據采集重復性等方面常常有所欠缺。
武漢大學SNAIL小組從2022年8月開始的數據采集計劃的精心制作的數據集Snail-Radar[1]。該數據集包含了在一年內使用手持設備、電動自行車和SUV等多種平臺采集的各種數據序列。雖然每個平臺的傳感器配置略有不同,但每個傳感器架通常包括立體攝像頭、一到兩個4D雷達、一個3D激光雷達、一到兩個IMU和一個GNSS/INS系統。發布的序列數據覆蓋了從密集植被的大學校園到高速公路隧道等多種環境,在晴天或雨天和夜間進行采集。
考慮到在同步定位與地圖構建(SLAM)中的應用,我們提供了使用地面激光掃描儀(TLS)數據生成的參考軌跡。基于已驗證的技術進行同步和精心校準,確保了我們數據的可靠性。我們相信這一數據集將大大有助于評估基于4D雷達點云的里程計、建圖和位置識別算法。數據集和配套工具可在我們的網站上獲取。
- 數據集鏈接:https://snail-radar.github.io/
- 數據集工具:https://github.com/snail-radar/dataset_tools
該數據集的貢獻總結如下:
- 發布了一個大規模多樣化的4D雷達數據集,覆蓋多種環境條件下由三種不同平臺在選定路線多次采集的數據,包括雨天和夜晚、校園道路和高速公路。提供了數據在ROS包和文件夾格式之間轉換的工具及校準結果。
- 提出了嚴格的程序,同步所有傳感器的運動相關信息,并校準它們之間的外部參數。同步程序從激光雷達和GNSS的硬件同步開始,然后所有傳感器時間映射到GNSS時間,以激光雷達時間為橋梁,最后估計所有運動相關信息類型之間的恒定時間偏差。外部參數通過手動測量初始化并通過相關方法優化。
- 提出了一個定位流水線,用于生成提供序列的參考位姿。流水線從使用TLS捕獲測試區域的點云開始,這些拼接的點云在定位模式下被用作LIO方法中的子地圖。為了便于在序列末尾生成參考位姿,還提出了一種反向處理激光雷達里程計信息的方法。
雷達信號處理背景
如圖1頂部所示,發射天線發送頻率遞增的射頻信號。接收天線檢測由物體反射的波,并通過將信號與發射載波混頻來獲得中頻信號。這些信號然后通過模數轉換器(ADC)采樣,得到復數(同相和正交分量,I/Q)ADC樣本。這些ADC樣本被傳送到數字信號處理器(DSP)進行進一步處理。
數字信號處理,如圖1底部所示,包括四個基本組件:距離處理、多普勒處理、恒虛警率(CFAR)檢測和2D到達角(AoA)處理。每個組件在TI mmwave SDK文檔中有詳細說明。這些組件的數學原理在Iovescu和Rao(2017)中解釋。這里我們提供這些組件的功能性高層描述,并省略了高級選項以便清晰。
以下是一些符號表示:
- :每幀的多普勒脈沖數
- :接收天線數
- $N_{T_x}:發射天線數
- :每脈沖的ADC樣本數
- $N_{D_b}:快速傅里葉變換(FFT)中的多普勒頻譜數
- :FFT中的距離頻譜數
距離處理過程以ADC脈沖樣本I/Q值為輸入,在活動幀時間內執行1D距離FFT和可選的直流距離校準,輸出一個雷達立方體。ADC數據的大小為 · · · 。雷達立方體的大小為 · · · 。
多普勒處理過程以先前的雷達立方體為輸入,在幀間時間內執行2D多普勒FFT和能量求和,輸出一個大小為 · 的檢測矩陣。
CFAR過程從檢測矩陣開始,執行CFAR檢測和峰值分組,輸出范圍-多普勒域中的CFAR檢測列表。
2D AoA處理過程以雷達立方體和CFAR檢測列表為輸入,對檢測到的物體的相關條目進行2D多普勒FFT,隨后進行2D角度FFT和CFAR選擇峰值,以確定檢測物體的方位角和仰角,生成具有1D多普勒速度的3D點云。
圖1描述了典型的德州儀器(TI)4D雷達的工作原理(Iovescu和Rao,2017)。發射天線發射的射頻信號被物體反射,并由接收天線接收。信號被下變頻為中頻信號,通過模數轉換器(ADC)進行采樣,得到復數(同相和正交分量,I/Q)ADC樣本。這些樣本被傳送到數字信號處理器(DSP)進行進一步處理。
數字信號處理過程包括距離處理、多普勒處理、恒虛警率(CFAR)檢測和2D到達角(AoA)處理。每個步驟的詳細說明可以在TI mmwave SDK文檔中找到。這些組件的數學原理在Iovescu和Rao(2017)中解釋。
距離處理過程包括對ADC樣本進行1D距離FFT變換,并在活動幀時間內進行可選的直流距離校準,最終生成一個雷達立方體。多普勒處理過程則是在幀間時間內對雷達立方體進行2D多普勒FFT變換和能量求和,生成檢測矩陣。CFAR過程基于檢測矩陣進行CFAR檢測和峰值分組,生成CFAR檢測列表。最后,2D AoA處理過程對CFAR檢測列表中的相關條目進行2D多普勒FFT和2D角度FFT,確定檢測物體的方位角和仰角,生成3D點云。
數據集
傳感器設置
數據集使用了三個平臺:手持設備、電動自行車和SUV。這些平臺的傳感器配置幾乎相同,包括一個Hesai Pandar XT32激光雷達、一個Oculii Eagle雷達、一個ZED2i立體攝像頭和一個Bynav X36D GNSS/INS系統。電動自行車和SUV還配備了Continental ARS548雷達和XSens MTi3DK IMU。數據通過一臺運行Ubuntu 20.04的ThinkPad P53筆記本實時預處理和記錄。
文件格式
每個序列的數據以一個整體的rosbag文件和一個包含單獨消息的文件夾形式提供。傳感器數據類型包括點云、圖像、IMU數據和GNSS/INS解決方案。文件夾內的點云數據以pcd文件保存,壓縮圖像以jpg格式保存,其他類型數據以txt文件保存。
數據集提供了每個序列的參考軌跡,這些軌跡是在TLS地圖幀中以10Hz生成的。然而,對于大規模的SUV序列,僅提供起始子序列和結束子序列的參考位姿,這些子序列在TLS覆蓋范圍內。所有TLS點云及其優化后的位姿也提供在數據集中。數據還包括實時GNSS/INS解決方案及其相應的UTM50N坐標轉換結果。
Ground truth
在數據集中,Bynav GNSS RTK/INS系統的解決方案在高度上經常會出現跳躍現象,誤差可達幾米。因此,我們使用精確的地面激光掃描儀(TLS)點云來生成參考位姿,類似于Ramezani等(2020)的方法,但我們采用的是逐幀對齊未失真的激光雷達幀到TLS地圖。
TLS掃描使用Leica RTC360掃描儀在晴天捕獲,覆蓋了“星湖”和“星湖塔”路線。這些掃描首先通過Cyclone Register 360程序處理,并在Open3D中進一步通過點到平面ICP進行優化。最終的TLS地圖由93個掃描拼接而成,期望精度在5厘米以內。
對于完全覆蓋在TLS地圖內的序列,我們通過兩步法將激光雷達掃描相對于TLS地圖進行定位:首先獲取初始位姿,然后在定位模式下運行LIO方法。對于大型序列,由于TLS地圖僅覆蓋序列的開始和結束部分,我們僅生成起始和結束子序列的參考軌跡。為了實現反向LIO處理,我們提出了數據反向技術,通過時間反轉處理序列信息,從而在序列末端生成參考位姿。
反向處理還提供了一種驗證參考精度的方法,通過比較前向和反向處理結果,我們確認參考位置的精度通常在10厘米以內。這一技術保證了數據集的高參考精度,有助于評估和開發基于4D雷達的SLAM算法。
同步
由于在硬件上同步所有傳感器具有挑戰性,我們提出了一種方案,確保所有傳感器消息由同一個虛擬時鐘標記。該方案首先使用激光雷達數據作為橋梁,將所有傳感器消息的時間戳映射到GNSS時間,以消除抖動和長期漂移。然后,使用里程計和相關算法估算傳感器數據與GNSS/INS解決方案之間的恒定時間偏差:
- 激光雷達同步:對所有傳感器消息的主機時間進行平滑處理,以消除傳輸抖動。XT32激光雷達通過GNSS時間同步,因此可以通過主機時間將所有消息時間戳映射到GNSS時間。
- 時間偏差估算:使用相關算法估算不同傳感器消息流之間的恒定時間偏差。對于激光雷達數據,使用KISS-ICP方法計算3D激光雷達位姿,并通過中心差分法計算INS位姿和LO位姿之間的角速度,從而確定時間偏差。對于4D雷達,通過GNC方法估算其自我速度,并與INS解進行比較來確定時間偏差。對于IMU,直接計算IMU數據的角速度,并與INS解進行比較來確定時間偏差。
- ZED2i同步:使用Swift-VIO方法估算ZED2i IMU和攝像頭之間的時間偏差。雖然在挑戰性序列中Swift-VIO的軌跡可能會漂移,但時間偏差通常能迅速穩定下來,精度在1ms以內。
整體同步精度預計在10ms以內,這得益于GNSS/INS解的高頻率(100Hz)和相關算法的精細優化,以及ZED2i曝光時間的合理設置(不超過5ms)。
最終,發布的數據集中的所有消息時間戳都已經補償了與GNSS時間的時間偏差,確保了數據的高精度同步。
傳感器剛體標定
為了確保數據集的準確性,定義了基于激光雷達(XT32)的機體坐標系,其x軸指向前方,y軸指向左側,z軸指向上方。所有傳感器的外參相對于機體坐標系進行標定。
初始標定
- 傳感器的相對位置通過手動測量獲得。
- 相對方向通過CAD圖紙確定。
精細標定
- 使用激光雷達IMU校準工具對ZED2i IMU或MTi3DK與XT32激光雷達之間的外部參數進行優化。
- 通過Swift-VIO方法獲取ZED2i攝像頭和IMU的時間偏差及其外部參數。
- 使用相關算法對Bynav系統的激光雷達與IMU之間的相對方向進行校準。
- 使用相關算法對Oculii Eagle和ARS548雷達與X36D IMU之間的相對方向進行優化。
每個傳感器的外部參數都經過多種方法優化,并提供在數據集中,以確保傳感器數據的準確性和一致性。
總結一下
Snail-Radar是一個大規模的4D雷達數據集,專為基于多傳感器融合的定位和建圖應用而設計。該數據集使用三種平臺在各種環境條件下進行采集,包括雨天、夜晚、校園道路和隧道,共采集了44個序列,遍布八條路線的多次重復采集。
參考位置(對于大規模序列僅在開始和結束部分)是使用LIO方法生成的,該方法依次將去失真的Hesai激光雷達幀定位到TLS地圖上。數據反向處理技術實現了時間上的反向LIO。傳感器數據通過兩步方案同步:
- 首先使用硬件同步的激光雷達數據將消息主機時間映射到GNSS時間,以消除抖動和長期漂移
- 使用里程計和相關算法估算傳感器數據與GNSS/INS解之間的恒定時間偏差。
所有傳感器之間的外部參數通過多種方法進行優化,并隨數據集一同提供。