- kalibr的安裝
- 點選打開連結https://github.com/ethz-asl/kalibr
Kalibr 提供兩種使用方式。 第一種為CDE下直接使用,作者将所需的庫檔案打包好,省去了配置dependency的步驟,可以直接從
https://github.com/ethz-asl/kalibr/wiki/downloads下載下傳, 注意需要科學浏覽。下載下傳之後直接用./cde-exec+指令 即可使用對應的工具。
例如如果我們想使用kalibr内的kalibr_calibrate_cameras功能,使用
./ced-exec kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw
但是此方法不能使用其中的某些功能,例如我們想使用calibration validator,在CDE環境下是無法使用的。 第二種:build from source。
根據https://github.com/ethz-asl/kalibr/wiki/installation的part B中的描述進行安裝。
- xtion pro live 相機标定
-
首先我們要下載下傳PTAM,用ptam的cameracalibrator來标定。
下載下傳ptam包,編譯之前安裝依賴項:
進入PtamFixParams.yaml檔案第2、3行修改xtion_pro_live的圖像分辨率為:sudo apt-get install freeglut3-dev sudo apt-get install libblas-dev sudo apt-get install liblapacke-dev
成功編譯後,進入cameracalibrator.launch修改輸入topic :ImageSizeX: 640 ImageSizeY: 480
做完了這些,你還需要把ptam中的calib_pattern.pdf列印出來作為标定棋盤,你就可以運作校準程式了,在終端中輸入:<?xml version="1.0"?> <launch> <include file="$(find openni2_launch)/launch/openni2.launch" /> <node name="image_proc" pkg="image_proc" type="image_proc" ns="camera"> <remap from="camera_info" to="/camera/rgb/image_info" /> <remap from="image_raw" to="/camera/rgb/image_raw" /> <remap from="image_mono" to="/mono_image" /> </node> <node name="cameracalibrator" pkg="ptam" type="cameracalibrator" clear_params="true" output="screen"> <!-- <remap from="image" to="/camera/rgb/image_raw" /> --> <remap from="image" to="/mono_image" /> <remap from="pose" to="pose"/> <rosparam file="$(find ptam)/PtamFixParams.yaml"/> </node> </launch>
roslaunch ptam cameracalibrator.launch
-
針對xtion相機還有一種pinhole模型,給出pinhole模型标定過程:
-
先把标定程式下載下傳下來: git clone https://github.com/ros-perception/image_pipeline.git
- 去把最新的依賴檔案vision_opencv下載下傳下來:
git clone https://github.com/ros-perception/vision_opencv.git
- 扔到空間内的src下編譯,然後開始标定
roslaunch openni2_launch openni2.launch rosrun camera_calibration cameracalibrator.py --size 11x7 --square 0.02 image:=/camera/rgb/image camera:=/my_camera --no-service-check
有人會問了不是12x8個方格嗎?對啊,是以有11x7内點啊。
有人會問camera:=/my_camera這是什麼東東?相機device。因為有–no-service-check是以/my_camera可以随便寫!!不檢查。但不可以省略。下面的過程可以看下:
教程:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
-
-
- 相機/IMU标定
- 如何标定,标定所需檔案
* XX.bag:包含有圖檔資訊和IMU資料的ROS包 * camchain.yaml:包含相機的内參和畸變參數的檔案 * IMU.yaml:包含IMU的基本參數,噪音等 * target.yaml:标定目标闆的參數
- 之前說過需要列印一個棋盤格,kalibr也提供一種制作方式,
将生成的pdf列印出來,置于平穩,光照充足的地方,注意要保持平整。Kalibr作者推薦将camera固定,然後移動标定闆,這樣可以提高标定的穩定性,但是鑒于我使用場景受限,我使用的是晃動camera方法。kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]
- 之後就可以開始錄制bag了,使用
rosbag record /camera/rgb/image_raw /imu/data
标定時注意激活所有的軸,即可錄制包含三個topic的rosbag了。
注意錄制過程中camera不要距離标定闆太近,否則會出現無法初始化focal length的錯誤。Kalibr是一個十分強大的工具箱,提供了很多工具。我們可以使用calibration validator進行标定的驗證,原理是對重投影誤差進行量化分析。大家可以自行驗證。工具使用上一步驟的camera标定結果以及标定闆的yaml檔案,具體指令如下:
其中camchain.yaml為相機标定結果yaml,target.yaml為标定闆yaml。部分資料可在以下連結下載下傳:點選打開連結https://github.com/ethz-asl/kalibr/wiki/downloadskalibr_camera_validator --cam camchain.yaml --target target.yaml
-
若對相機标定結果滿意我們可以繼續進行camera以及imu的聯合标定步驟,此步使用了如下資訊:
1. 标定闆yaml
2. 相機标定結果yaml
3. imu内參yaml
4. 前面使用的對應bag
有了如上材料即可進行聯合标定,具體如下:
最後的--bag_from_to是選取地5-45s的bag資料,去除了拾取防止裝置産生的抖動部分影響。我們建議進行多組标定之後将标定結果進行最佳無偏估計,不建議對R部分直接取平均值,可以将多組資料的R部分轉換成四元數。之後進行處理。kalibr_calibrate_imu_camera --target aprilgrid6x4.yaml --cam camchain-2017-07-07-09-13-29.yaml --imu imu.yaml --bag 2017-07-07-09-13-29.bag --bag-from-to 5 45
- 标定完成後一般會生成三個檔案,其中一個,
因為可能存在的人為的安裝問題,真實的IMU到相機的的轉移矩陣可能不确定.由于沒有準确的判定準則,故目前标定的結果,主要基于以下兩個方面:
* 真實的IMU坐标系和相機坐标系的轉換,即相機和IMU的實體距離
* 标定結果的穩定性上
- 如何标定,标定所需檔案
- 未解決的部分
- 相機IMU之間的坐标平移矩陣沒有獲得;
- imu的标定沒有完成。
- 标定完後,代碼運作有所改善,但沒有預想的好。
- 部分連結:
- 點選打開連結http://blog.csdn.net/binbin_sun/article/details/53791404
- 點選打開連結https://github.com/ethz-asl/kalibr/wiki/downloads
- http://blog.csdn.net/xu1129005165/article/details/52948992
- 點選打開連結http://blog.csdn.net/u013004597/article/details/51965940