機(jī)部署指南:Velodyne與Ouster激光雷達(dá)外參標(biāo)定清單)
LIO-SAM-DetailedNote實(shí)機(jī)部署指南Velodyne與Ouster激光雷達(dá)外參標(biāo)定清單【免費(fèi)下載鏈接】LIO-SAM-DetailedNoteLIO-SAM源碼詳細(xì)注釋3D SLAM融合激光、IMU、GPS項(xiàng)目地址: https://gitcode.com/gh_mirrors/li/LIO-SAM-DetailedNoteLIO-SAM-DetailedNote 是 LIO-SAM 的源碼詳細(xì)注釋版一套融合激光雷達(dá)、IMU、GPS 的 3D SLAM 系統(tǒng)核心代碼僅 4 個(gè) cpp 文件非常適合拿來實(shí)機(jī)部署與閱讀。本文面向剛接觸 LIO-SAM 的工程師給出一份從零啟動(dòng)到外參標(biāo)定驗(yàn)證的完整部署清單如何配置 Velodyne / Ouster 激光雷達(dá)參數(shù)、如何填寫 lidar→IMU 外參、如何檢查 IMU 噪聲參數(shù)以及如何快速定位地圖漂移這類典型外參錯(cuò)誤。系統(tǒng)組成速覽4 個(gè)節(jié)點(diǎn)構(gòu)成完整 SLAM 鏈路理解外參從哪里生效之前先看清數(shù)據(jù)流。LIO-SAM 由 4 個(gè)節(jié)點(diǎn)組成啟動(dòng)腳本在 launch/include/module_loam.launch節(jié)點(diǎn)源碼職責(zé)imageProjectionsrc/imageProjection.cpp激光運(yùn)動(dòng)畸變校正外參在這里第一次生效featureExtractionsrc/featureExtraction.cpp曲率計(jì)算提取角點(diǎn) / 平面特征imuPreintegrationsrc/imuPreintegration.cppIMU 預(yù)積分因子圖優(yōu)化位姿mapOptmizationsrc/mapOptmization.cppscan-to-map 匹配 因子圖優(yōu)化 閉環(huán)入口文件 launch/run.launch 會(huì)加載 config/params.yaml并掛載 navsatGPS→笛卡爾坐標(biāo)轉(zhuǎn)換與 rviz 模塊Velodyne vs Ouster傳感器參數(shù)差異表激光雷達(dá)型號(hào)直接決定兩個(gè)關(guān)鍵參數(shù)全部寫在 config/params.yaml 的Sensor Settings段# Sensor Settings sensor: velodyne # 只能填 velodyne 或 ouster N_SCAN: 16 # 掃描線數(shù)16 / 32 / 64 / 128 Horizon_SCAN: 1800 # 水平一圈的點(diǎn)數(shù)VelodyneHorizon_SCAN固定為18000.2° 一點(diǎn)如 VLP-16 填N_SCAN: 16VLP-32 填 32。OusterHorizon_SCAN按型號(hào)填512 / 1024 / 2048如 OS1-128 常用 128 線 × 1024 列。??最容易踩的坑sensor與N_SCAN、Horizon_SCAN三者必須自洽。源碼 include/utility.h 中參數(shù)加載會(huì)校驗(yàn) sensor 字符串填錯(cuò)會(huì)直接報(bào)錯(cuò)退出而點(diǎn)數(shù)不匹配會(huì)導(dǎo)致畸變校正時(shí) rangeMat 索引越界、點(diǎn)云花屏。Ouster 用戶在源碼里還有一個(gè)特殊處理src/imageProjection.cpp 的cachePointCloud()會(huì)把 Ouster 點(diǎn)云逐點(diǎn)轉(zhuǎn)成 Velodyne 格式其中點(diǎn)內(nèi)時(shí)間戳time src.t * 1e-9f納秒→秒。Ouster 驅(qū)動(dòng)輸出的點(diǎn)內(nèi)時(shí)間戳單位必須是納秒否則整幀時(shí)差會(huì)被算錯(cuò)運(yùn)動(dòng)畸變校正直接失效。外參標(biāo)定清單lidar → IMU 三步核對(duì)LIO-SAM 只要求一組外參從激光雷達(dá)到 IMU 的旋轉(zhuǎn) 平移即extrinsicRot、extrinsicRPY、extrinsicTrans注意方向是 lidar→IMU不要填反。# Extrinsics (lidar - IMU) extrinsicTrans: [0.0, 0.0, 0.0] extrinsicRot: [1, 0, 0, 0, 1, 0, 0, 0, 1] extrinsicRPY: [1, 0, 0, 0, 1, 0, 0, 0, 1]標(biāo)定操作清單按順序勾選坐標(biāo)系方向LIO-SAM 期望 IMU / base_link 遵循 REP-105 慣例x 前、y 左、z 上。如果你的傳感器芯片坐標(biāo)系不一致旋轉(zhuǎn)矩陣要補(bǔ)上對(duì)應(yīng)轉(zhuǎn)換。項(xiàng)目自帶了一個(gè)真實(shí)案例——config/params_park.yaml 中某實(shí)車的外參就是[-1,0,0; 0,1,0; 0,0,-1]IMU 的 z 軸與 lidar 反向了 180°而 config/params.yaml 默認(rèn)是單位陣兩傳感器嚴(yán)格同軸安裝時(shí)才正確。平移量安裝間距小于幾十厘米時(shí)填0,0,0對(duì)里程計(jì)精度幾乎無影響間距較大如 IMU 裝在底盤另一端才需要量測(cè) xyz 并填入extrinsicTrans。旋轉(zhuǎn)與 RPY 一致性extrinsicRot與extrinsicRPY兩個(gè)參數(shù)都會(huì)讀取請(qǐng)保證它們表達(dá)同一變換避免一處改了另一處沒改。外參的實(shí)際作用點(diǎn)在 include/utility.h 的imuConverter()IMU 的加速度、角速度左乘extRot姿態(tài)四元數(shù)右乘extQRPY把 IMU 原始測(cè)量轉(zhuǎn)到 lidar 坐標(biāo)系后再參與畸變校正與預(yù)積分。外參錯(cuò)了IMU 姿態(tài)初始化就是歪的表現(xiàn)為地圖整體傾斜、z 軸漂移。順帶提醒若 IMU 沒有 9 軸姿態(tài)四元數(shù)模長(zhǎng)小于 0.1imuConverter()會(huì)直接報(bào)Invalid quaternion, please use a 9-axis IMU!并退出——6 軸 IMU 需要先用 AHRS 算法解算出姿態(tài)。IMU 噪聲參數(shù)別直接抄默認(rèn)值config/params.yaml 中的 IMU 段建議按你所用 IMU 的數(shù)據(jù)手冊(cè)重新標(biāo)定可用 Kalibr、RobotCalibration 等工具imuAccNoise: 3.9939570888238808e-03 # 加速度白噪聲密度 imuGyrNoise: 1.5636343949698187e-03 # 陀螺白噪聲密度 imuAccBiasN: 6.4356659353532566e-05 # 加速度隨機(jī)游走 imuGyrBiasN: 3.5640318696367613e-05 # 陀螺隨機(jī)游走 imuGravity: 9.80511 # 當(dāng)?shù)刂亓铀俣仍肼晠?shù)偏小 → 因子圖過度信任 IMU閉環(huán)/位姿修正被壓制偏大 → 軌跡出現(xiàn)鋸齒。imuGravity建議查儀器所在城市的重力值約 9.78~9.83而非一律 9.81。話題名按實(shí)機(jī)硬件改pointCloudTopic點(diǎn)云、imuTopic如imu_raw、gpsTopic。參考 config/params_park.yaml 中imu_raw與odometry/gps的命名。一鍵啟動(dòng)與話題驗(yàn)證編譯安裝后catkin 工程依賴見 CMakeLists.txtroslaunch lio_sam run.launch啟動(dòng)后立即做三項(xiàng)檢查rostopic hz /points_raw與/imu_correct頻率是否達(dá)到硬件標(biāo)稱值兩路時(shí)間戳是否同源建議共用同一 clockrosrun tf tf_echo base_link map靜止時(shí) TF 應(yīng)穩(wěn)定運(yùn)動(dòng)時(shí)更新平滑rviz 中l(wèi)aser_map與軌跡回環(huán)后軌跡是否閉合。外參錯(cuò)誤排查速查表癥狀最可能原因檢查項(xiàng)地圖整體傾斜 / z 軸持續(xù)漂移外參旋轉(zhuǎn)錯(cuò)誤重核extrinsicRot/extrinsicRPY與坐標(biāo)系方向IMU 與激光軌跡打架、抖動(dòng)時(shí)間戳不同源檢查兩傳感器時(shí)鐘同步點(diǎn)云花屏、特征點(diǎn)亂N_SCAN / Horizon_SCAN 與硬件不符對(duì)照雷達(dá)型號(hào)修改Sensor Settings高速運(yùn)動(dòng)拖影Ouster 點(diǎn)內(nèi)時(shí)間戳單位錯(cuò)誤確認(rèn)驅(qū)動(dòng)輸出為納秒啟動(dòng)即報(bào) 9-axis 錯(cuò)誤IMU 無姿態(tài)輸出加 AHRS 解算或換 9 軸 IMU掌握這份清單后從 Velodyne 或 Ouster 實(shí)車到可運(yùn)行的 LIO-SAM 里程計(jì)通常只需半天調(diào)試。想深入理解外參參與優(yōu)化的每一步可通讀 README.md 中梳理的整體流程配合 4 個(gè) cpp 文件的逐行注釋這套輕量代碼是學(xué)習(xí) 3D SLAM 工程實(shí)現(xiàn)的上佳范本。【免費(fèi)下載鏈接】LIO-SAM-DetailedNoteLIO-SAM源碼詳細(xì)注釋3D SLAM融合激光、IMU、GPS項(xiàng)目地址: https://gitcode.com/gh_mirrors/li/LIO-SAM-DetailedNote創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考