Apollo10.0學習之固態雷達與IMU的外參標定

固態雷達(如Livox、禾賽等非旋轉式激光雷達)與IMU(慣性測量單元)的外參標定(Extrinsic Calibration)是自動駕駛、機器人定位(如LIO-SAM、FAST-LIO)的關鍵步驟。


1. 標定原理

外參標定的目標是找到雷達與IMU之間的相對位姿(平移 (t)( \mathbf{t} )(t) 和旋轉 (R)( \mathbf{R} )(R)),即:
TLiDARIMU=[Rt01] \mathbf{T}_{\text{LiDAR}}^{\text{IMU}} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix} TLiDARIMU?=[R0?t1?]


2. 標定方法分類

(1) 基于目標物的標定(Target-Based)

適用場景:實驗室或可控環境,精度高。
工具:棋盤格、AprilTag、標定板。
步驟

  1. 安裝標定板:固定棋盤格或AprilTag在墻面/支架上。
  2. 同步采集數據
  • 雷達點云(檢測標定板角點/平面)。
  • IMU數據(提供姿態信息)。
  1. 標定流程
  • 通過標定板在雷達坐標系下的3D點云擬合平面,計算標定板位姿 (TBoardLiDAR)( \mathbf{T}_{\text{Board}}^{\text{LiDAR}} )(TBoardLiDAR?)
  • 通過相機或手動測量獲取標定板在IMU坐標系下的位姿 (TBoardIMU)( \mathbf{T}_{\text{Board}}^{\text{IMU}} )(TBoardIMU?)
  • 計算外參:
    TLiDARIMU=TBoardIMU?(TBoardLiDAR)?1 \mathbf{T}_{\text{LiDAR}}^{\text{IMU}} = \mathbf{T}_{\text{Board}}^{\text{IMU}} \cdot (\mathbf{T}_{\text{Board}}^{\text{LiDAR}})^{-1} TLiDARIMU?=TBoardIMU??(TBoardLiDAR?)?1

工具推薦

  • Livox_Calibration(Livox官方工具,支持棋盤格標定)。
  • lidar_align(基于點云與IMU軌跡對齊)。

(2) 基于運動的方法(Motion-Based)

適用場景:無標定板,依賴設備運動。
原理:IMU和雷達對同一運動的觀測應一致。
步驟

  1. 數據采集
  • 手持設備做劇烈運動(旋轉+平移,激勵充分)。
  • 錄制雷達點云(rosbag record /points)和IMU數據(/imu)。
  1. 標定工具
  • LIO-SAM/FAST-LIO:直接運行SLAM,在線優化外參。
  • Kalibr(擴展支持雷達-IMU標定)。
  • LI_Init(專為固態雷達設計,見GitHub)。
  1. 優化目標
  • 最小化雷達點云匹配誤差與IMU預積分誤差。

代碼示例(LI_Init)

git clone https://github.com/Livox-SDK/LI_Init
cd LI_Init
roslaunch li_init li_calib.launch

(3) 聯合標定(SLAM-Based)

適用場景:長時間運行SLAM,自動優化外參。
方法

  • LIO-SAM:在配置文件中啟用 optimizeExtrinsic
optimizeExtrinsic: 1# 1=在線優化, 2=固定外參
  • FAST-LIO2:修改配置文件的 extrinsic_est_en
extrinsic_est_en: true# 在線估計外參

3. 標定驗證

  1. 點云對齊檢查
  • 在Rviz中疊加雷達點云和IMU坐標系,運動時觀察是否一致。
  1. 軌跡對比
  • 運行SLAM,對比純IMU積分和雷達建圖軌跡。
  1. 重投影誤差
  • 將雷達點云投影到IMU坐標系,檢查靜止場景點云是否穩定。

4. 注意事項

  1. 時間同步
  • 確保雷達和IMU時間戳同步(硬件同步或軟件對齊)。
  1. 運動激勵
  • 標定時需充分激勵(旋轉+加速度變化)。
  1. 初始值設置
  • 外參初始值盡量接近真實值(如CAD模型測量)。
  1. 多傳感器標定順序
  • 先標定IMU-相機(如Kalibr),再標定雷達-IMU

5. 開源工具對比

工具適用傳感器方法特點
LI_InitLivox雷達+IMU運動激勵專為固態雷達設計
lidar_align機械雷達+IMU軌跡對齊簡單易用
Kalibr相機+IMU+雷達多模態標定支持多傳感器
LIO-SAM雷達+IMUSLAM優化在線標定

6. 常見問題解決

  • 標定發散:檢查IMU噪聲參數(accelerometer_noise_density等)。
  • 點云抖動:確認時間同步或降低雷達運動畸變。
  • 外參不準:嘗試不同初始值或增加運動多樣性。

如果使用Livox雷達,推薦優先嘗試 LI_Init;若已部署LIO-SAM/FAST-LIO,可直接在線優化外參。

有用的鏈接:https://zhuanlan.zhihu.com/p/674902669

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93238.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML5實現古典音樂網站源碼模板1

文章目錄 1.設計來源1.1 網站首頁1.2 古典音樂界面1.3 著名人物界面1.4 古典樂器界面1.5 歷史起源界面 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板,程序開發,在線開發,在線溝通 作者:xcLeigh 文章地址:http…

40 C++ STL模板庫9-容器2-vector

C STL模板庫9-容器2-vector 文章目錄C STL模板庫9-容器2-vector一、基礎概念1. 類型成員(Type Members)2. 模板參數二、構造函數1. 語法2. 示例三、元素訪問1. 函數說明2. 示例代碼四、容量操作1. 函數說明2. 關鍵點說明3. 關鍵操作解析4. 操作示例五、修…

GPT-5系列文章2——新功能、測試與性能基準全解析

引言 2025年8月,OpenAI正式發布了其新一代旗艦模型GPT-5。與業界此前期待的AGI(人工通用智能)突破不同,GPT-5更像是OpenAI對現有技術的一次深度整合與用戶體驗優化。本文將全面解析GPT-5的新特性、實際測試表現以及官方發布的基準數據,幫助開…

利用cursor+MCP實現瀏覽器自動化釋放雙手

小伙伴們,我們今天利用cursorMCP實現瀏覽器自動化,釋放雙手,工作效率嘎嘎提升!前期準備:安裝node.js網址:https://nodejs.org/zh-cn下載下來安裝即可。 下載browser-tools-mcp擴展程序:下載擴展…

指針/邊界索引混淆梳理

在處理數組/鏈表等數據結構時,時常混淆長度和指針序號。處理技巧:使用0-base索引。則區間長度 rightIndex - LeftIndex 1總長度 lastIndex - firstIndex 1鏈表創建一個dummy節點,添加到head前,則可認為從索引0開始。末尾指針判…

LeetCode 刷題【43. 字符串相乘】

43. 字符串相乘 自己做 解1:矩陣計數 class Solution { public:string multiply(string num1, string num2) {int len1 num1.size();int len2 num2.size();if (num1[0] 0 || num2[0] 0) //結果為0的情況return "0";//存儲計算過程的矩陣vector…

NLP數據增強方法及實現-A

目錄 詞替換 主要參考:paddlenlp/data_aug模塊 詞替換數據增強策略也即將句子中的詞隨機替換為其他單詞進行數據增強,這里我們將介紹如何使用paddlenlp.dataaug.WordSubstitute進行詞級別替換的數據增強。 WordSubstitute 參數介紹:aug_ty…

EhViewer安卓ios全版本類下載安裝工具的完整路徑解析

開發一款類似EhViewer的下載安裝工具(集下載管理、應用部署等功能于一體),需要經歷從需求錨定到落地發布的系統性流程。以下從需求拆解到技術落地的全維度指南,將幫你理清開發脈絡,避開常見陷阱。安裝 GitHub - huangy…

MySQL 主鍵詳解:作用與使用方法

在 MySQL 數據庫中,主鍵(Primary Key) 是表結構設計中最重要的約束之一。它不僅是數據唯一性的保障,也是多表關聯、查詢優化的核心工具。本文將從 主鍵的作用 和 主鍵的用法 兩個方面進行講解,并配合代碼示例幫助理解一…

lib.dom.d.ts

lib.dom.d.ts 是一個 TypeScript 類型聲明文件,它是 TypeScript 標準庫的一部分,用于定義瀏覽器 DOM(文檔對象模型)相關的類型和接口。這個文件為開發者提供了瀏覽器中所有內置的 DOM 類型的定義,包括 localStorage、d…

Spring 工具類:StopWatch

StopWatch 是 Spring 框架提供的一個簡單而強大的計時工具類,用于測量代碼塊的執行時間。它特別適合在開發階段進行性能分析、調試和優化。 基本使用方法 // 創建 StopWatch 實例(可指定 ID) StopWatch stopWatch new StopWatch("性能分…

解決 VSCode 運行 Python 時 ModuleNotFoundError: No module named ‘open_webui‘ 問題

目錄 1. 問題原因分析 2. 解決思路 3. 解決步驟 3.1 打開或創建 .vscode/launch.json 3.2 添加調試配置 3.3 配置說明 3.4 運行測試 4. 總結 在使用 VSCode 調試 Python 項目時,我們經常會遇到類似下面的錯誤: Exception has occurred: ModuleN…

Python基礎-數據結構

數據結構 Python提供了四種主要的內置數據結構:列表(List)、元組(Tuple)、字典(Dictionary)和集合(Set)。每種數據結構都有其特定的用途和特性。 Python數據結構概覽&…

NLP學習之Transformer(1)

初識 Transformer (1) 1.簡介 1.1主要特點: self-attention: 自注意力機制,Transformer的核心是自注意力機制,它允許模型在處理某個位置的輸入時,能夠直接與其他位置的輸入交互,而不…

C語言筆記6:C高級 part1

1.gcc 編譯器 編譯流程 預處理-》編譯》匯編》鏈接》 E 預處理的命令 S 編譯匯編代碼 -c匯編階段命令 -o 輸出對應的文件GDB調試工具2.作用域存儲分類// C高級部分知識多, 加上這周 我學的知識量有點爆炸。家里又有事情,這周末要回老家 爭取下周補齊吧。…

A12預裝app

在A12上預裝應用,出現了一個異常。在此記錄問題描述:在A12上預裝應用按照A13的預裝方案報錯,mk文件如下:LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS : optional LOCAL_MODULE : Tideen_PTT LOCAL_MODU…

termios 線程 poll epoll進化 二叉AVL紅黑樹

struct termios tio 是什么 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h>#define SERIAL_PORT "/dev/ttyS0" #define BUF_SIZE 256int main(v…

C++設計模式:類間關系

類封裝了數據和行為&#xff0c;是面向對象的重要組成部分&#xff0c;它是具有相同屬性、操作、關系的對象集合的總稱。在系統中&#xff0c;每個類都具有一定的職責&#xff0c;職責指的是類要完成什么樣子的功能&#xff0c;要承擔什么樣子的義務。一個類可以有多種職責&…

MSYS2+CMake配置C/C++開發環境

目錄一、MSYS2是什么1.1 核心架構與組件??1.1.1 背景介紹1.1.1.1 Cygwin1.1.1.2 MinGW和Mingw-w641.1.1.3MSYS和MSYS21.1.2 技術基礎??1.1.3 多環境支持??1.2 核心功能??1.2.1 類Unix開發環境??1.2.2 開發工具鏈??1.2.3 軟件倉庫與包管理??二、安裝和配置2.1 配置…

Vue 3 + TypeScript:package.json 示例 / 詳細注釋說明

一、示例 / 詳細注釋說明 {// 項目基礎信息"name": "vite-project", // 項目名稱&#xff08;建議使用 kebab-case 格式&#xff09;"private": true, // 標記為私有項目&#xff0c;避免意外發布到 npm"version": "1.0.…