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