鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 kalibr標定板(棋盤格)用師兄的(長這樣) 步驟一:建立的ROS中的Kalibr的工作空間,建立一個名為:checkerboard.yaml的文件,內容為: target_type: 'checkerboard' targetCols: 11 ...
鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站
kalibr標定板(棋盤格)用師兄的(長這樣)
步驟一:建立的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,同時要確保標定板一直在三個圖像當中,如下圖
步驟四:修改相機幀數(官方推薦是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
註:可能會遇到的問題
1、kalibr_calibrate_cameras:未找到命令
解決方法:
重新進行編譯:
~/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
解決方法:修改checkerboard.yaml文件為上面的內容(步驟一)。
原文鏈接:https://blog.csdn.net/weixin_45868890/article/details/123197364