Kalibr標定camera-IMU詳細步驟

Kalibr標定相機和IMU

——Camera-IMU Calibration

基本情況

目的

我們進行camera-IMU標定的目的是爲了得到IMU和相機座標系的相對位姿矩陣T和相對時間延時t_shift(t_imu=t_cam + t_shift)。

需要的文件

1、.bag:包含有圖片信息和IMU數據的ROS包
2、camchain.yaml: 包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣;
3、IMU.yaml: 包含IMU的噪聲密度、隨機遊走;

4、target.yaml:標定目標板的參數

所以在進行camera-IMU 標定前,我們分別要對camera內參和IMU進行標定得到相應的camchain.yaml和IMU.yaml文件

輸出的結果

IMU和相機座標系的相對位姿矩陣T和重投影誤差(或者像素誤差,Pixel Error(像素誤差)指的是the standard deviation of the reprojection error (in Pixel) in both x and y directions respectivly(在x和y方向上以像素爲單位的重投影誤差的標準差。根據優化的準則我們知道重投影誤差越小,就說相機標定的精度越高)。

  準備工作

提前準備好camchain.yaml(包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣)、IMU.yaml(包含IMU的噪聲密度、隨機遊走)、target.yaml(標定目標板的參數),並製作.bag文件。

相機內參標定

可以直接使用matlab的視覺工具箱進行標定,輸入文件爲20張及以上對標定板在不同角度拍攝的照片和標定板尺寸,具體步驟可以參考:

https://www.cnblogs.com/li-yao7758258/p/5929145.html

    輸出結果爲相機內參、畸變係數、重投影誤差等。

.bag文件

內容

這是在連續時間獲得的拍攝標定版的圖像和IMU數據包,需要自己採集後再利用kalibr提供的一個工具去轉化成.bag包。.bag文件的具體內容是:標定需要的圖像以及相對應的imu數據。

圖片格式是:19位時間(精度爲ns,精度不夠可以補0).png。

IMU文件格式是:19位時間戳(精確到ns,精度不夠可以補0),角速度,含重力的加速度

製作

輸入命令kalibr_bagcreater--folder dataset-dir --output-bag awsome.bag

dataset-dir是數據輸入路徑:

kalibr_bagcreater--folder kalibr_workspace/renamed/E_up/. --output-bag E_up.bag

注意要在dataset-dir後加上/.,在根目錄運行這個命令即可(在文件目錄下輸出會生成一個很小的bag文件),輸出的bag文件就在根目錄下。E_up文件夾結構如下,cam0裏面爲圖片:

其內文件結構應是這樣:

/cam0/image_raw

/imu0

awsome.bag 是製作好的bag文件。輸出默認在kalibr_bagcreater此時在的目錄下。

參考

https://github.com/ethz-asl/Kalibr/wiki/bag-format

可以使用rosbag info XX.bag來查看生成的bag文件情況(包括圖片、IMU、時間數據等)

yaml文件信息

camchain.yaml:

imu.yaml:

target.yaml:

tagCols 爲標定格每行個數

tagRows 爲標定格每列個數

tagSize 爲標定格二維碼邊長,單位m

參考:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

標定步驟

將標定板打印出來,置於平穩,光照充足的地方,注意要保持平整。使得相機與IMU位置相對固定,移動camera-IMU系統讓IMU三個軸都被激活(不能只有轉動,最好在轉動的同時移動,確保加速度計也有輸出)採集數據。參考:

https://github.com/ethz-asl/kalibr

當需要的四個文件都有時,使用命令: 

     kalibr_calibrate_imu_camera –target xx/target.yaml –cam xx/camchain.yaml –imu xx/imu.yaml –bag xx/xx.bag –bag-from-to 5 45

即可完成標定。(5-45表示取的標定數據長度,開始部分數據和結束部分可能會有晃動,把它去除)在背後加上--time—calibration可以標定IMU相對於camera的延時。

標定結果

Timeshift表示的就是IMU相對於camera的延時;

重投影誤差,大部分在1說明很準確。一個數值代表差一個像素點。

參考文獻

相機-IMU標定

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

matlab相機內參標定

https://www.cnblogs.com/li-yao7758258/p/5929145.html

yaml文件參數

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

.bag製作

https://blog.csdn.net/w492751512/article/details/81218618

——Camera-IMU Calibration

基本情況

目的

我們進行camera-IMU標定的目的是爲了得到IMU和相機座標系的相對位姿矩陣T和相對時間延時t_shift(t_imu=t_cam + t_shift)。

需要的文件

1、.bag:包含有圖片信息和IMU數據的ROS包
2、camchain.yaml: 包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣;
3、IMU.yaml: 包含IMU的噪聲密度、隨機遊走;

4、target.yaml:標定目標板的參數

所以在進行camera-IMU 標定前,我們分別要對camera內參和IMU進行標定得到相應的camchain.yaml和IMU.yaml文件

輸出的結果

IMU和相機座標系的相對位姿矩陣T和重投影誤差(或者像素誤差,Pixel Error(像素誤差)指的是the standard deviation of the reprojection error (in Pixel) in both x and y directions respectivly(在x和y方向上以像素爲單位的重投影誤差的標準差。根據優化的準則我們知道重投影誤差越小,就說相機標定的精度越高)。

  準備工作

提前準備好camchain.yaml(包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣)、IMU.yaml(包含IMU的噪聲密度、隨機遊走)、target.yaml(標定目標板的參數),並製作.bag文件。

相機內參標定

可以直接使用matlab的視覺工具箱進行標定,輸入文件爲20張及以上對標定板在不同角度拍攝的照片和標定板尺寸,具體步驟可以參考:

https://www.cnblogs.com/li-yao7758258/p/5929145.html

    輸出結果爲相機內參、畸變係數、重投影誤差等。

.bag文件

內容

這是在連續時間獲得的拍攝標定版的圖像和IMU數據包,需要自己採集後再利用kalibr提供的一個工具去轉化成.bag包。.bag文件的具體內容是:標定需要的圖像以及相對應的imu數據。

圖片格式是:19位時間(精度爲ns,精度不夠可以補0).png。

IMU文件格式是:19位時間戳(精確到ns,精度不夠可以補0),角速度,含重力的加速度

製作

輸入命令kalibr_bagcreater--folder dataset-dir --output-bag awsome.bag

dataset-dir是數據輸入路徑:

kalibr_bagcreater--folder kalibr_workspace/renamed/E_up/. --output-bag E_up.bag

注意要在dataset-dir後加上/.,在根目錄運行這個命令即可(在文件目錄下輸出會生成一個很小的bag文件),輸出的bag文件就在根目錄下。E_up文件夾結構如下,cam0裏面爲圖片:

其內文件結構應是這樣:

/cam0/image_raw

/imu0

awsome.bag 是製作好的bag文件。輸出默認在kalibr_bagcreater此時在的目錄下。

參考

https://github.com/ethz-asl/Kalibr/wiki/bag-format

可以使用rosbag info XX.bag來查看生成的bag文件情況(包括圖片、IMU、時間數據等)

yaml文件信息

camchain.yaml:

imu.yaml:

target.yaml:

tagCols 爲標定格每行個數

tagRows 爲標定格每列個數

tagSize 爲標定格二維碼邊長,單位m

參考:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

標定步驟

將標定板打印出來,置於平穩,光照充足的地方,注意要保持平整。使得相機與IMU位置相對固定,移動camera-IMU系統讓IMU三個軸都被激活(不能只有轉動,最好在轉動的同時移動,確保加速度計也有輸出)採集數據。參考:

https://github.com/ethz-asl/kalibr

當需要的四個文件都有時,使用命令: 

     kalibr_calibrate_imu_camera –target xx/target.yaml –cam xx/camchain.yaml –imu xx/imu.yaml –bag xx/xx.bag –bag-from-to 5 45

即可完成標定。(5-45表示取的標定數據長度,開始部分數據和結束部分可能會有晃動,把它去除)在背後加上--time—calibration可以標定IMU相對於camera的延時。

標定結果

Timeshift表示的就是IMU相對於camera的延時;

重投影誤差,大部分在1說明很準確。一個數值代表差一個像素點。

參考文獻

相機-IMU標定

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

matlab相機內參標定

https://www.cnblogs.com/li-yao7758258/p/5929145.html

yaml文件參數

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

.bag製作

https://blog.csdn.net/w492751512/article/details/81218618

Kalibr標定相機和IMU

——Camera-IMU Calibration

基本情況

目的

我們進行camera-IMU標定的目的是爲了得到IMU和相機座標系的相對位姿矩陣T和相對時間延時t_shift(t_imu=t_cam + t_shift)。

需要的文件

1、.bag:包含有圖片信息和IMU數據的ROS包
2、camchain.yaml: 包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣;
3、IMU.yaml: 包含IMU的噪聲密度、隨機遊走;

4、target.yaml:標定目標板的參數

所以在進行camera-IMU 標定前,我們分別要對camera內參和IMU進行標定得到相應的camchain.yaml和IMU.yaml文件

輸出的結果

IMU和相機座標系的相對位姿矩陣T和重投影誤差(或者像素誤差,Pixel Error(像素誤差)指的是the standard deviation of the reprojection error (in Pixel) in both x and y directions respectivly(在x和y方向上以像素爲單位的重投影誤差的標準差。根據優化的準則我們知道重投影誤差越小,就說相機標定的精度越高)。

  準備工作

提前準備好camchain.yaml(包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣)、IMU.yaml(包含IMU的噪聲密度、隨機遊走)、target.yaml(標定目標板的參數),並製作.bag文件。

相機內參標定

可以直接使用matlab的視覺工具箱進行標定,輸入文件爲20張及以上對標定板在不同角度拍攝的照片和標定板尺寸,具體步驟可以參考:

https://www.cnblogs.com/li-yao7758258/p/5929145.html

    輸出結果爲相機內參、畸變係數、重投影誤差等。

.bag文件

內容

這是在連續時間獲得的拍攝標定版的圖像和IMU數據包,需要自己採集後再利用kalibr提供的一個工具去轉化成.bag包。.bag文件的具體內容是:標定需要的圖像以及相對應的imu數據。

圖片格式是:19位時間(精度爲ns,精度不夠可以補0).png。

IMU文件格式是:19位時間戳(精確到ns,精度不夠可以補0),角速度,含重力的加速度

製作

輸入命令kalibr_bagcreater--folder dataset-dir --output-bag awsome.bag

dataset-dir是數據輸入路徑:

kalibr_bagcreater--folder kalibr_workspace/renamed/E_up/. --output-bag E_up.bag

注意要在dataset-dir後加上/.,在根目錄運行這個命令即可(在文件目錄下輸出會生成一個很小的bag文件),輸出的bag文件就在根目錄下。E_up文件夾結構如下,cam0裏面爲圖片:

其內文件結構應是這樣:

/cam0/image_raw

/imu0

awsome.bag 是製作好的bag文件。輸出默認在kalibr_bagcreater此時在的目錄下。

參考

https://github.com/ethz-asl/Kalibr/wiki/bag-format

可以使用rosbag info XX.bag來查看生成的bag文件情況(包括圖片、IMU、時間數據等)

yaml文件信息

camchain.yaml:

imu.yaml:

target.yaml:

tagCols 爲標定格每行個數

tagRows 爲標定格每列個數

tagSize 爲標定格二維碼邊長,單位m

參考:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

標定步驟

將標定板打印出來,置於平穩,光照充足的地方,注意要保持平整。使得相機與IMU位置相對固定,移動camera-IMU系統讓IMU三個軸都被激活(不能只有轉動,最好在轉動的同時移動,確保加速度計也有輸出)採集數據。參考:

https://github.com/ethz-asl/kalibr

當需要的四個文件都有時,使用命令: 

     kalibr_calibrate_imu_camera –target xx/target.yaml –cam xx/camchain.yaml –imu xx/imu.yaml –bag xx/xx.bag –bag-from-to 5 45

即可完成標定。(5-45表示取的標定數據長度,開始部分數據和結束部分可能會有晃動,把它去除)在背後加上--time—calibration可以標定IMU相對於camera的延時。

標定結果

Timeshift表示的就是IMU相對於camera的延時;

重投影誤差,大部分在1說明很準確。一個數值代表差一個像素點。

參考文獻

相機-IMU標定

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

matlab相機內參標定

https://www.cnblogs.com/li-yao7758258/p/5929145.html

yaml文件參數

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

.bag製作

https://blog.csdn.net/w492751512/article/details/81218618

Kalibr標定相機和IMU

——Camera-IMU Calibration

基本情況

目的

我們進行camera-IMU標定的目的是爲了得到IMU和相機座標系的相對位姿矩陣T和相對時間延時t_shift(t_imu=t_cam + t_shift)。

需要的文件

1、.bag:包含有圖片信息和IMU數據的ROS包
2、camchain.yaml: 包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣;
3、IMU.yaml: 包含IMU的噪聲密度、隨機遊走;

4、target.yaml:標定目標板的參數

所以在進行camera-IMU 標定前,我們分別要對camera內參和IMU進行標定得到相應的camchain.yaml和IMU.yaml文件

輸出的結果

IMU和相機座標系的相對位姿矩陣T和重投影誤差(或者像素誤差,Pixel Error(像素誤差)指的是the standard deviation of the reprojection error (in Pixel) in both x and y directions respectivly(在x和y方向上以像素爲單位的重投影誤差的標準差。根據優化的準則我們知道重投影誤差越小,就說相機標定的精度越高)。

  準備工作

提前準備好camchain.yaml(包含相機的內參、畸變參數的文件,如果是雙目的話,還包含兩個相機的位置轉換矩陣)、IMU.yaml(包含IMU的噪聲密度、隨機遊走)、target.yaml(標定目標板的參數),並製作.bag文件。

相機內參標定

可以直接使用matlab的視覺工具箱進行標定,輸入文件爲20張及以上對標定板在不同角度拍攝的照片和標定板尺寸,具體步驟可以參考:

https://www.cnblogs.com/li-yao7758258/p/5929145.html

    輸出結果爲相機內參、畸變係數、重投影誤差等。

.bag文件

內容

這是在連續時間獲得的拍攝標定版的圖像和IMU數據包,需要自己採集後再利用kalibr提供的一個工具去轉化成.bag包。.bag文件的具體內容是:標定需要的圖像以及相對應的imu數據。

圖片格式是:19位時間(精度爲ns,精度不夠可以補0).png。

IMU文件格式是:19位時間戳(精確到ns,精度不夠可以補0),角速度,含重力的加速度

製作

輸入命令kalibr_bagcreater--folder dataset-dir --output-bag awsome.bag

dataset-dir是數據輸入路徑:

kalibr_bagcreater--folder kalibr_workspace/renamed/E_up/. --output-bag E_up.bag

注意要在dataset-dir後加上/.,在根目錄運行這個命令即可(在文件目錄下輸出會生成一個很小的bag文件),輸出的bag文件就在根目錄下。E_up文件夾結構如下,cam0裏面爲圖片:

其內文件結構應是這樣:

/cam0/image_raw

/imu0

awsome.bag 是製作好的bag文件。輸出默認在kalibr_bagcreater此時在的目錄下。

參考

https://github.com/ethz-asl/Kalibr/wiki/bag-format

可以使用rosbag info XX.bag來查看生成的bag文件情況(包括圖片、IMU、時間數據等)

yaml文件信息

camchain.yaml:

imu.yaml:

target.yaml:

tagCols 爲標定格每行個數

tagRows 爲標定格每列個數

tagSize 爲標定格二維碼邊長,單位m

參考:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

標定步驟

將標定板打印出來,置於平穩,光照充足的地方,注意要保持平整。使得相機與IMU位置相對固定,移動camera-IMU系統讓IMU三個軸都被激活(不能只有轉動,最好在轉動的同時移動,確保加速度計也有輸出)採集數據。參考:

https://github.com/ethz-asl/kalibr

當需要的四個文件都有時,使用命令: 

     kalibr_calibrate_imu_camera –target xx/target.yaml –cam xx/camchain.yaml –imu xx/imu.yaml –bag xx/xx.bag –bag-from-to 5 45

即可完成標定。(5-45表示取的標定數據長度,開始部分數據和結束部分可能會有晃動,把它去除)在背後加上--time—calibration可以標定IMU相對於camera的延時。

標定結果

Timeshift表示的就是IMU相對於camera的延時;

重投影誤差,大部分在1說明很準確。一個數值代表差一個像素點。

參考文獻

相機-IMU標定

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

matlab相機內參標定

https://www.cnblogs.com/li-yao7758258/p/5929145.html

yaml文件參數

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

.bag製作

https://blog.csdn.net/w492751512/article/details/81218618

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章