kalibr標定realsenseD435i --多相機標定

哈哈哈hh發表於2022-07-26

映象下載、域名解析、時間同步請點選  阿里雲開源映象站

kalibr標定板(棋盤格)用師兄的(長這樣)

file

步驟一:建立的ROS中的Kalibr的工作空間,建立一個名為:checkerboard.yaml的檔案,內容為:

target_type: 'checkerboard' 
 
targetCols: 11                  //內角的個數
 
targetRows: 8                  
 
colSpacingMeters: 0.02               
 
rowSpacingMeters: 0.02

步驟二:啟動關閉結構光

預設開始結構光時,雙目影像會有很多點,這些點可能對標定有影響,所以使用時需要關閉結構光。

先在終端啟動

roslaunch realsense2_camera rs_camera.launch

新開啟終端,執行

rosrun rqt_reconfigure rqt_reconfigure

開啟後將camera->stereo_module中的emitter_enabled設定為off(0)

步驟三:確定realsense D435i放在合適位置

新開啟終端,執行rviz

rviz

在rviz中將Global Option中的Fixed Frame後面選擇camera_link

點選Add在topic中分別選擇

/camera/color/image_raw、/camera/infra1/image_rect_raw、/camera/infra2/image_rect_raw,開啟(雙擊camera)即新增成功。

之後對準標定板,嘗試移動realsense D435i,同時要確保標定板一直在三個影像當中,如下圖

file

步驟四:修改相機幀數(官方推薦是4Hz,儘管實際頻率不完全準確,但是不影響結果)

kalibr在處理標定資料的時候要求頻率不能太高,一般為4Hz,我們可以使用如下命令來更改topic的頻率,實際上是將原來的topic以新的頻率轉成新的topic,實際測試infra1才是對應左目相機。

使用Ctrl+shift+T,開啟新的終端,一個終端執行一個,分別執行

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
 
rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /infra_left
 
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /infra_right

步驟五:錄製ROS資料包

使用Ctrl+shift+T,開啟另一個新的終端執行:

rosbag record -O multicameras_calibration /infra_left /infra_right /color

後面三個topic就是轉換頻率後的topic,我錄製了3分鐘,錄的時候對著標定板移動,按下ctrl+c 結束錄製,看到當前資料夾會出現multicameras_calibration.bag檔案。

步驟六:使用Kalibr標定

先啟用環境變數

source ~/kalibr_workspace/devel/setup.bash

然後執行:

kalibr_calibrate_cameras --target checkerboard.yaml --bag  multicameras_calibration.bag --models pinhole-equi pinhole-equi pinhole-equi --topics /infra_left /infra_right /color --bag-from-to 10 100 --show-extraction --approx-sync 0.04

最後

最終得到的結果為三個檔案:

camchain-multicameras_calibration.yaml

report-cam-multicameras_calibration.pdf

results-cam-multicameras_calibration.txt

file

注:可能會遇到的問題

1、kalibr_calibrate_cameras:未找到命令

file

解決方法:

重新進行編譯:

~/kalibr_workspace$ catkin build -DCMAKE_BUILD_TYPE=Release -j8

再:

source ~/kalibr_workspace/devel/setup.bash

2、

File"/home/lab/kalibr_workspace/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/ConfigReader.py", line 234, in raiseError

raise RuntimeError( "{0}{1}".format(header, message) )

RuntimeError: [CalibrationTargetConfig Reader]: Could not read configuration from …/checkerboard.yaml

file

解決方法:修改checkerboard.yaml檔案為上面的內容(步驟一)。

原文連結:https://blog.csdn.net/weixin_45868890/article/details/123197364


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2907641/,如需轉載,請註明出處,否則將追究法律責任。

相關文章