国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【筆記&問題解決】激光雷達和相機外部參數(shù)標定全流程(livox_camera_calib加載數(shù)據(jù)問題解決 [#85 Issue] & PCL無法創(chuàng)建KDTree問題解決 [#19 Issue])

這篇具有很好參考價值的文章主要介紹了【筆記&問題解決】激光雷達和相機外部參數(shù)標定全流程(livox_camera_calib加載數(shù)據(jù)問題解決 [#85 Issue] & PCL無法創(chuàng)建KDTree問題解決 [#19 Issue])。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

硬件設(shè)備

激光雷達:DJI Livox Avia混合固態(tài)激光雷達
相機:Intel Realsense D435i深度相機

外參標定

外參標定是進行多傳感器融合的必要前提。

標定流程

livox_camera_calib是香港大學(xué)MaRS 實驗室開發(fā)的一款的激光雷達和相機標定的算法。算法分為分為單場景標定(Single scene calibration)多場景標定(Multi scenes calibration),本文只探討單場景標定。配置過程參考livox_camera_calib官網(wǎng)的流程即可。

cd ~/catkin_ws/src
git clone https://github.com/hku-mars/livox_camera_calib.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

配置好環(huán)境后運行標定launch文件。過程如下:
(1)修改config/calib.yaml文件路徑

# Data path. adjust them!
common:
    image_file: "/home/ggh/workdir/catkin_ws/src/livox_camera_calib/data/2.png" #你自己存放相機影像png的路徑
    pcd_file: "/home/test/lidarimu/catkin_ws/src/livox_camera_calib/data/2.pcd" #你自己存放點云pcd的路徑
    result_file: "/home/test/lidarimu/catkin_ws/src/livox_camera_calib/result/extrinsic.txt" #存放標定結(jié)果的路徑

# Camera Parameters. Adjust them!
# 你自己相機的內(nèi)參數(shù)和鏡頭畸變參數(shù)
camera:
    camera_matrix: [1364.45, 0.0,      958.327,
                0.0,     1366.46,  535.074,
                0.0,     0.0,      1.0     ]
    dist_coeffs: [0.0958277, -0.198233, -0.000147133, -0.000430056, 0.000000]

# Calibration Parameters.!
calib:
    calib_config_file: "/home/test/lidarimu/catkin_ws/src/livox_camera_calib/config/config_indoor.yaml" #連接的另外一個yaml的文件,視你的標定場景而定,這個會直接影響標定結(jié)果,一定要記得修改
    use_rough_calib: true # set true if your initial_extrinsic is bad

(2)運行單場景標定roslaunch文件

roslaunch livox_camera_calib calib.launch

經(jīng)過一系列迭代優(yōu)化得到標定結(jié)果,如下數(shù)圖所示。

[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記

問題解決

問題一:運行calib.launch報錯:[lidar_camera_calib-2] process has died [pid 26108, exit code -11, cmd

NODES
/
lidar_camera_calib (livox_camera_calib/lidar_camera_calib)
rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [26093]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 8bfc51c8-dc14-11ed-9ebe-0cc47a6c9e2b
process[rosout-1]: started with pid [26104]
started core service [/rosout]
process[lidar_camera_calib-2]: started with pid [26108]
process[rviz-3]: started with pid [26112]
pcd_file path:/home/lk/catkin_ws/src/livox_camera_calib/data/single_scene_calibration/0.pcd
[lidar_camera_calib-2] process has died [pid 26108, exit code -11, cmd /home/lk/catkin_ws/devel/lib/livox_camera_calib/lidar_camera_calib __name:=lidar_camera_calib __log:=/home/lk/.ros/log/8bfc51c8-dc14-11ed-9ebe-0cc47a6c9e2b/lidar_camera_calib-2.log].
log file: /home/lk/.ros/log/8bfc51c8-dc14-11ed-9ebe-0cc47a6c9e2b/lidar_camera_calib-2*.log”

從這段報錯中除了能得到是在加載pcd文件時出錯以外,看不出來任何有用信息。這時rviz被打開,發(fā)現(xiàn)在rviz軟件界面顯示未接收到任何點云或圖片數(shù)據(jù),大膽猜測是pcd數(shù)據(jù)沒有加載失敗,
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
忘了截圖了,這里引用來自livox_camera_calib主頁#85 Issue的圖,在Issue中沒有解決這個問題。

[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
圖源:livox_camera_calib主頁#85 Issue

經(jīng)分析,直接問題斷定為加載pcd點云文件失敗,猜測問題本源在于opencv版本沖突。為了確定這一猜測,基于vscode配置ros代碼調(diào)式,
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
紅框處為報錯的地方(調(diào)試時忘記截圖,在此處用紅框標記之),由此猜測是 cv_bridge 與 opencv4版本沖突問題,因為我的系統(tǒng)是ubuntu 18.04,ROS版本為melodic,而 melodic 版本的 cv_bridge 功能包中所用 opencv 版本為 opencv3,我安裝的是opencv4。考慮到noetic 版本的 cv_bridge 功能包使用的是 opencv4,所以提出
【解決方法】:通過安裝noetic 版本的 cv_bridge ,將新的 cv_bridge 和 我自己功能包的依賴設(shè)為同一版本的 opencv,同時保留 melodic 版本的 cv_bridge 功能包(后面會說到為什么要同時保留)。具體安裝過程參考這篇文章。
退回catkin工作空間,重新catkin_make,然后再次運行

roslaunch livox_camera_calib calib.launch

加載成功!
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記

問題二:運行自己的標定數(shù)據(jù)報錯:[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!

[ INFO] [1691133251.022876409]: Sucessfully load calib config file
[ INFO] [1691133251.636212259]: Sucessfully load image!
[ INFO] [1691133251.640953018]: Sucessfully extract edge from image, edge size:15957
[ INFO] [1691133251.640971292]: Loading point cloud from pcd file.
[ INFO] [1691133281.547540320]: Sucessfully load pcd, pointcloud size: 9936000
[ INFO] [1691133281.547566909]: Building Voxel
[ INFO] [1691133285.886021869]: Extracting Lidar Edge
[ INFO] [1691133292.414024597]: Finish prepare!
Initial rotation matrix:
 0 -1  0
 0  0 -1
 1  0  0
Initial translation:0 0 0
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
Rough calibration min cost:1
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!

[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記

導(dǎo)致無法進入優(yōu)化程序,具體表現(xiàn)為沒有輸出點云-圖像殘差圖以及沒有點云疊加的優(yōu)化窗口,如下圖所示。
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
排除了點云路徑錯誤、點云話題名稱錯誤以及點云密度過于稀疏等livox_camera_calib項目網(wǎng)站上#19 Issue和#84 Issue中提到的可能的錯誤,即能讀取并在rviz上顯示就說明點云路徑和話題名稱沒錯,能提取到足夠多的線特征(紅色的線條)就說明點云密度達到標定要求(為此我還對比了項目demo中3.pcd的點云密度,我采集的點云數(shù)量遠高于demo中的點云數(shù)量),如下圖所示。但是問題依然沒有得到解決。
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記

那么問題該如何解決呢?需要說明的是,我采集的標定數(shù)據(jù)設(shè)置的分辨率為640480,項目demo中給的影像分辨率是19201080。于是,我將我的D435i的RGB影像分辨率設(shè)置為與demo一致的1920*1080,并且將影像話題發(fā)布頻率降低為30Hz(否則會硬件報錯),該操作在realsense_camera包的rs_camera.launch中進行,如圖所示:
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
重新錄制ros包,從中提取png格式影像,重新運行calib.launch,pcd加載完成后,進入優(yōu)化模式,問題解決!
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記

相機內(nèi)參標定

在標定激光雷達和相機外部參數(shù)之前,我們必須盡可能地知道相機準確的焦距、像主點偏移以及鏡頭畸變等相機內(nèi)部參數(shù)。最直接的,我們在修改config/calib.yaml文件時,相機內(nèi)參是必須由我們自己給定。因此,在開始外參標定前,我們首先要標定相機內(nèi)參。

標定流程

對于Intel Realsense D435i相機的標定,我們可以參考這篇文章,即使用ETHZ出品的Kalibr工具包來標定。由于這篇文章已經(jīng)寫得非常詳細,在此我就不過多贅述了。使用Intel Realsense D435i的同學(xué)可以無腦照著這篇文章操作,使用別的系列或者別的品牌的同學(xué)注意要在有些關(guān)鍵地方需要根據(jù)自身設(shè)備作出修改。
需要注意的一點是,文章中運行標定ros功能包時有一個小錯誤,即文章中給的運行命令是

kalibr_calibrate_cameras --target ~/kalibr_ws/src/Kalibr/data/checkerboard.yaml --bag ~/kalibr_ws/src/Kalibr/data/camd435i.bag --models pinhole-equi --topics /color --show-extractio

如果同學(xué)們按照這個命令輸入會發(fā)現(xiàn)會報錯:找不到kalibr_calibrate_cameras包,這時不要慌張,在前面加上rosrun等操作即可

rosrun kalibr kalibr_calibrate_cameras --target ~/kalibr_ws/src/Kalibr/data/checkerboard.yaml --bag ~/kalibr_ws/src/Kalibr/data/camd435i.bag --models pinhole-equi --topics /color --show-extractio

問題解決

問題一:運行kalibr_calibrate_cameras報錯:UnicodedecodeError:‘a(chǎn)scii’ codec can’t decode byte oxco in position 0: ordinalnot in range(128)

[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
這紅框中可知,這是因為當前的python版本(我裝的是python2.7)與noetic版本的cv_bridge沖突所致,這是不要慌,在這個包里用回原來的melodic版本的cv_bridge就OK了,這也就是為何我在上文中說要同時保留這兩個版本的cv_bridge的原因。具體操作如下:
找到catkin工作空間下python文件夾下cv_bridge下的_init_.py文件,一般路徑是:~/workdir/catkin ws/devel/lib/python2.7/dist-packages/cv bridge/init .py ,修改擴展路徑_extended_path為melodic版本的cv_bridge的python路徑即可
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記
重新運行ROS功能包,問題解決!
[pcl::kdtreeflann::setinputcloud] cannot create a kdtree with an empty input,筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-761651.html

到了這里,關(guān)于【筆記&問題解決】激光雷達和相機外部參數(shù)標定全流程(livox_camera_calib加載數(shù)據(jù)問題解決 [#85 Issue] & PCL無法創(chuàng)建KDTree問題解決 [#19 Issue])的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深度相機和激光雷達的融合標定(Autoware)

    深度相機和激光雷達的融合標定(Autoware)

    深度相機和激光雷達是智能汽車上常用的傳感器。但深度相機具有特征難以提取,容易受到視角影響。激光雷達存在數(shù)據(jù)不夠直觀且容易被吸收,從而丟失信息。因此在自動駕駛領(lǐng)域,需要對于不同傳感器做數(shù)據(jù)的融合和傳感器的標定。 內(nèi)參標定的原理和方法比較簡單,由于

    2024年02月10日
    瀏覽(87)
  • 【Ubuntu18.04】激光雷達與相機聯(lián)合標定(Livox+HIKROBOT)(一)相機內(nèi)參標定

    【Ubuntu18.04】激光雷達與相機聯(lián)合標定(Livox+HIKROBOT)(一)相機內(nèi)參標定

    Livox Lidar + HIKROBOT Camera 聯(lián)合標定 參考鏈接:相機雷達標定文檔 安裝ROS環(huán)境,參考筆者的博客:【ROS】Ubuntu18.04安裝Ros 參考鏈接:??礐amera MVS Linux SDK二次開發(fā)封裝ROS packge過程記錄(c++) ??档南鄼C沒有ros驅(qū)動,且對linux開發(fā)不太友好(但支持windows),因此需要重寫了sdk接口

    2024年02月04日
    瀏覽(25)
  • 虛擬機(Ubuntu1804)相機與激光雷達聯(lián)合標定實現(xiàn)過程記錄

    虛擬機(Ubuntu1804)相機與激光雷達聯(lián)合標定實現(xiàn)過程記錄

    在智能小車錄制的點云數(shù)據(jù)在rviz打開一定要修改Fixed Frame為laser_link,這樣才能看到點云,注意此時用的是雷神激光雷達,話題名是lslidar_,可采用rostopic list查看具體名稱 1、新建一個終端打開roscore 2、在文件夾libratia中新建一個終端 【注意】這里的--pause可以暫停,當后面需要

    2024年02月16日
    瀏覽(26)
  • autoware標定工具進行固態(tài)激光雷達與相機的聯(lián)合標定并運用標定結(jié)果進行投影(C++)

    autoware標定工具進行固態(tài)激光雷達與相機的聯(lián)合標定并運用標定結(jié)果進行投影(C++)

    本文主要介紹速騰聚創(chuàng)的RS-LIDAR-M1固態(tài)雷達激光與小覓相機左眼的聯(lián)合標定過程,并介紹標定過程中的一些技巧與避雷,加快標定效率。最后給出運用標定結(jié)果進行投影的關(guān)鍵代碼。 一、安裝autoware(為了標定完成后的可視化,可選,本文并未用到) 參考https://blog.csdn.net/qq

    2024年02月08日
    瀏覽(23)
  • MATLAB - 激光雷達 - 相機聯(lián)合標定(Lidar-Camera Calibration)

    MATLAB - 激光雷達 - 相機聯(lián)合標定(Lidar-Camera Calibration)

    ? ? ? 激光雷達 - 相機標定建立了三維激光雷達點和二維相機數(shù)據(jù)之間的對應(yīng)關(guān)系,從而將激光雷達和相機輸出融合在一起。 激光雷達傳感器和相機被廣泛用于自動駕駛、機器人和導(dǎo)航等應(yīng)用中的三維場景重建。激光雷達傳感器捕捉環(huán)境的三維結(jié)構(gòu)信息,而相機則捕捉色彩、

    2024年02月20日
    瀏覽(24)
  • ICRA 2023 | 最新激光雷達-相機聯(lián)合內(nèi)外參標定,一步到位!

    ICRA 2023 | 最新激光雷達-相機聯(lián)合內(nèi)外參標定,一步到位!

    點擊下方 卡片 ,關(guān)注“ 自動駕駛之心 ”公眾號 ADAS巨卷干貨,即可獲取 今天自動駕駛之心很榮幸邀請到石頭,為大家分享ICRA 2023最新的激光雷達-相機的聯(lián)合標定方法,可同時標定內(nèi)參和外參。如果您有相關(guān)工作需要分享,請在文末聯(lián)系我們! 點擊進入→ 自動駕駛之心【多

    2024年02月12日
    瀏覽(25)
  • 【文獻分享】基于線特征的激光雷達和相機外參自動標定

    【文獻分享】基于線特征的激光雷達和相機外參自動標定

    論文題目: Line-based Automatic Extrinsic Calibration of LiDAR and Camera 中文題目: 基于線特征的激光雷達和相機外參自動標定 作者:Xinyu Zhang, Shifan Zhu, Shichun Guo, Jun Li, and Huaping Liu 作者機構(gòu):清華大學(xué)汽車安全與能源國家重點實驗室 論文鏈接:https://www.researchgate.net/publication/354877994_

    2024年02月06日
    瀏覽(24)
  • 激光雷達與相機外參標定(附open3d python代碼)

    激光雷達與相機外參標定(附open3d python代碼)

    現(xiàn)在的激光雷達與相機的標定程序基本都是Ubuntu框架下面的,并且都是C++代碼,需要安裝的依賴也比較復(fù)雜,于是自己寫了一個python版本的標定程序,依賴非常簡單,Windows系統(tǒng)也可以運行。并且代碼簡單一個文件搞定,符合python簡單易行的風格。 先上最后標定后的效果圖?

    2024年02月11日
    瀏覽(17)
  • 自動駕駛感知——激光雷達基本概念|激光雷達點云|激光雷達的標定

    自動駕駛感知——激光雷達基本概念|激光雷達點云|激光雷達的標定

    激光探測及測距系統(tǒng)(Light Detection and Ranging,LiDAR) 激光雷達是一種通過發(fā)射激光束探測目標的位置、速度等特征量 的雷達系統(tǒng) 激光波段位于0.5μm-10μm,以光電探測器為接收器件,以光學(xué)望遠鏡為天線。 特點 ? 角分辨率、距離分辨率高 ? 抗干擾能力強 ? 三維坐標、反射率

    2024年02月02日
    瀏覽(56)
  • 激光雷達標定(坐標系轉(zhuǎn)換)

    激光雷達標定(坐標系轉(zhuǎn)換)

    由于激光雷達獲取的點云數(shù)據(jù)的坐標是相對于激光雷達坐標系的,為了使車最終得到的點云數(shù)據(jù)坐標是在車坐標系下的,我們需要對點云中每一個點的坐標進行坐標轉(zhuǎn)換。 首先是需要對坐標系進行旋轉(zhuǎn)變換,先以二維平面的單位向量坐標轉(zhuǎn)換為例,假設(shè)兩坐標系中的旋轉(zhuǎn)矩陣

    2023年04月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包