mlcc激光雷达与相机外参标定初体验
論文閱讀模塊將分享點云處理,SLAM,三維視覺,高精地圖相關的文章。公眾號致力于理解三維視覺領域相關內容的干貨分享,歡迎各位加入我,我們一起每天一篇文章閱讀,開啟分享之旅,有興趣的可聯系微信dianyunpcl@163.com。
mlcc介紹
本文主要實戰應用這篇文章的代碼,https://github.com/hku-mars/mlcc。我們知道目前大部分的開源方案要實現相機和激光雷達之間的外參標定需要兩者有共同的視角。而本文則實現了即便相機與激光雷達在同一時刻沒有共同視角的情況下,通過點云重建和位姿的優化不僅實現了多個激光雷達的外參標定,也完成了相機和激光雷達的外參標定。本文詳細記錄使用的流程和可能遇到的問題。
這篇文章的詳細介紹在之前的內容中有更為詳細的介紹:
絕了!多個激光雷達和相機的快速且魯棒的外參標定方法(代碼開源)
代碼實現了一種基于自適應體素化的快速、準確、無目標的多激光雷達和相機外參標定,在理論層面上,我們將激光雷達外參校準與光束調整方法相結合,推導了成本函數的二階導數w.r.t.作為加速優化的外參的優化方法,在實現層面,采用自適應體素化技術,將激光雷達點云動態分割成大小不等的體素,減少了特征匹配過程中的計算時間。
在多激光雷達和激光雷達與相機外參標定中,都采用自適應體素化來加速特征匹配過程,將點云貼圖動態分割為大小不同的體素,以便每個體素中只包含一個平面特征,這個過程充分提高了整個標定流程。
編譯過程
首先是準備ROS環境,本人使用的16.04對應的ros版本
需要的第三放庫有
PCL 1.8?
ceres solver 1.14.x?
OpenCV 3.4.14?
Eigen 3.3.7
如果編譯遇到的了問題,那么就需要按照github上安裝對應的版本的第三方庫
而我在編譯的時候遇到了一些問題如下:
(1)error: ‘integer_sequence’ is not a member of ‘std’
解決方法:
#set(CMAKE_CXX_FLAGS "-std=c++14")
set(CMAKE_CXX_STANDARD 14)
(2)error: ‘ScalarBinaryOpTraits’ is not a class template
?struct ScalarBinaryOpTraits<ceres::jet, T, BinaryOp> {
?????? 解決方案:主要是ceres與eigen 版本不符合? 這里我使用CMakeLists.txt直接指定eigen-3.3.7可解決。
mlcc運行
對整個工程的介紹,整個工程代碼是比較清晰且代碼還比較友好。
config文件下有相機的標定參數以及程序中需要用到的閾值
Voxel.down_sample_size: 0.02?? 下采樣的體素的大小
Plane.min_points_size: 60? 平面特征的最小數量
Ransac.dis_threshold: 0.03? RANSAC 的最小距離
Ransac.iter_num: 200? 迭代次數
include 頭文件其中common.h,mypcl.hpp是公共的頭文件。
source為主程序cpp文件,實現了三部標定激光雷達外參的代碼以及激光雷達和相機外參標定的代碼。并提供了將點云轉化為dat文件的功能。
scene1,scene2為作者提供的demo數據集,以及需要的初始位姿和外參。
launch文件下保存著為運行標定的launch文件。
激光雷達之間的外參標定步驟
Step 1: 基于激光雷達的點云位姿優化(需要提供初始位姿在 scene-x/original_pose)
roslaunch mlcc pose_refine.launch
Step 2: 激光雷達外參的優化 (需要提供初始的外參在config/init_extrinsic)
roslaunch mlcc extrinsic_refine.launch
Step 3: 位姿與外參的聯合優化
roslaunch mlcc global_refine.launch
雷達與相機之間的外參標定
roslaunch mlcc calib_camera.launch
最后對點云進行貼圖的效果如下:
寫在最后
如果要在自己的數據上進行測試,需要將點云轉換為“.dat”格式,在source文件中tobinary.cpp可以查看詳細的代碼。這種標定方法需要從完整的rosbag中分割出合適的單幀點云和圖像,同時還應提供激光雷達姿態和外參初始值,這些初始值可通用SLAM和手眼標定算法獲得。
對于不同的激光雷達外參標定,在測試自己數據集的時候可能需要修改參數“adaptive_voxel_size, feat_eigen_limit 和 downsampling_size,以調整精度和速度。
目前,出于調試原因,作者將激光雷達外參標定過程分為三個步驟,在未來的版本中,將把它們結合在一起,使其使用更加方便。
資源
三維點云論文及相關應用分享
【點云論文速讀】基于激光雷達的里程計及3D點云地圖中的定位方法
3D目標檢測:MV3D-Net
三維點云分割綜述(上)
3D-MiniNet: 從點云中學習2D表示以實現快速有效的3D LIDAR語義分割(2020)
win下使用QT添加VTK插件實現點云可視化GUI
JSNet:3D點云的聯合實例和語義分割
大場景三維點云的語義分割綜述
PCL中outofcore模塊---基于核外八叉樹的大規模點云的顯示
基于局部凹凸性進行目標分割
基于三維卷積神經網絡的點云標記
點云的超體素(SuperVoxel)
基于超點圖的大規模點云分割
更多文章可查看:點云學習歷史文章大匯總
SLAM及AR相關分享
【開源方案共享】ORB-SLAM3開源啦!
【論文速讀】AVP-SLAM:自動泊車系統中的語義SLAM
【點云論文速讀】StructSLAM:結構化線特征SLAM
SLAM和AR綜述
常用的3D深度相機
AR設備單目視覺慣導SLAM算法綜述與評價
SLAM綜述(4)激光與視覺融合SLAM
Kimera實時重建的語義SLAM系統
SLAM綜述(3)-視覺與慣導,視覺與深度學習SLAM
易擴展的SLAM框架-OpenVSLAM
高翔:非結構化道路激光SLAM中的挑戰
SLAM綜述之Lidar SLAM
基于魚眼相機的SLAM方法介紹
掃描下方微信視頻號二維碼可查看最新研究成果及相關開源方案的演示:
如果你對本文感興趣,請點擊“原文閱讀”獲取知識星球二維碼,務必按照“姓名+學校/公司+研究方向”備注加入免費知識星球,免費下載pdf文檔,和更多熱愛分享的小伙伴一起交流吧!
以上內容如有錯誤請留言評論,歡迎指正交流。如有侵權,請聯系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關注我們
讓我們一起分享一起學習吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關的領域。
分享及合作:群主微信“920177957”(需要按要求備注) 聯系郵箱:dianyunpcl@163.com,歡迎企業來聯系公眾號展開合作。
點一下“在看”你會更好看耶
總結
以上是生活随笔為你收集整理的mlcc激光雷达与相机外参标定初体验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于数据融合的城市点云自动标注
- 下一篇: ceres实现的pnp解算后的位姿优化代