본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링/드론

[ VOXL ] 카메라 캘리브레이션

by 베니스상인 2021. 3. 25.

트래킹 카메라 캘리브레이션 과정

 

체크패턴을 움직이면서  X, Y, Size, Skew가 녹색으로 될 때까지 수행한다.

 

 

모두 녹색으로 바뀌면 Calibrate 버튼이 활성화된다. Calibrate 버튼을 누르면 아래와 같이 수행결과를 나타내준다.

 

 

GUI에서 Save 버튼을 누르면 그 결과가 호스트 PC의 아래 경로에 저장된다.

 

'Wrote calibration data to ', '/tmp/calibrationdata.tar.gz'

 

그 결과를 VOXL로 옮기려면 호스트PC에서 아래 명령어를 수행한다.

$ ./push_tracking_cal_to_voxl.sh

 

전송 결과는 VOXL로 보내어지며 아래와 같이 수행된다.

 

 

 

 

좌우 위아래 과정

 

 

좌우 스큐 과정

 

 

 

스테레오 카메라의 캘리브레이션 결과이다.

 

CUSTOM CALIBRATOR, with ModalAI Fisheye Patch
CUSTOM CALIBRATOR, with ModalAI Fisheye Patch
*** Added sample 1, p_x = 0.320, p_y = 0.252, p_size = 0.190, skew = 0.084
*** Added sample 2, p_x = 0.169, p_y = 0.175, p_size = 0.192, skew = 0.124
*** Added sample 3, p_x = 0.472, p_y = 0.301, p_size = 0.211, skew = 0.015
*** Added sample 4, p_x = 0.820, p_y = 0.472, p_size = 0.556, skew = 0.036
*** Added sample 5, p_x = 0.505, p_y = 0.552, p_size = 0.640, skew = 0.154
*** Added sample 6, p_x = 0.513, p_y = 0.510, p_size = 0.348, skew = 0.029
*** Added sample 7, p_x = 0.609, p_y = 0.878, p_size = 0.369, skew = 0.026
*** Added sample 8, p_x = 0.545, p_y = 0.616, p_size = 0.308, skew = 0.203
*** Added sample 9, p_x = 0.422, p_y = 0.578, p_size = 0.318, skew = 0.080
*** Added sample 10, p_x = 0.470, p_y = 0.695, p_size = 0.351, skew = 0.036
*** Added sample 11, p_x = 0.459, p_y = 0.222, p_size = 0.412, skew = 0.037
*** Added sample 12, p_x = 0.638, p_y = 0.576, p_size = 0.359, skew = 0.096
*** Added sample 13, p_x = 0.525, p_y = 0.400, p_size = 0.349, skew = 0.158
*** Added sample 14, p_x = 0.492, p_y = 0.276, p_size = 0.363, skew = 0.207
*** Added sample 15, p_x = 0.452, p_y = 0.380, p_size = 0.378, skew = 0.029
*** Added sample 16, p_x = 0.778, p_y = 0.349, p_size = 0.224, skew = 0.381
*** Added sample 17, p_x = 0.888, p_y = 0.292, p_size = 0.211, skew = 0.502
*** Added sample 18, p_x = 0.777, p_y = 0.321, p_size = 0.352, skew = 0.177
*** Added sample 19, p_x = 0.633, p_y = 0.236, p_size = 0.305, skew = 0.194
*** Added sample 20, p_x = 0.540, p_y = 0.233, p_size = 0.273, skew = 0.281
*** Added sample 21, p_x = 0.815, p_y = 0.854, p_size = 0.384, skew = 0.595
Stero Calibration, calculating left intrinsics

00:23:46.392537
Using instrinsic guess
Stero Calibration, calculating right intrinsics

00:23:47.925835
Using instrinsic guess
Stero Calibration, calculating extrinsics

00:23:49.918648
00:23:50.043990

Left:
('D = ', [-0.18831103077255, 0.09979392881997494, -0.001874558763111393, -0.003364828044223498, 0.0])
('K = ', [496.4483869872976, 0.0, 318.13194222244135, 0.0, 496.00455632506436, 254.98228876117963, 0.0, 0.0, 1.0])
('R = ', [0.7135620220051729, -0.006748466471476072, -0.7005595613166465, 0.012939598040397899, 0.9999099864063884, 0.0035476594155846837, 0.7004725601723752, -0.011596434152765206, 0.7135851141668375])
('P = ', [7599.160763622445, 0.0, 1265.467307806015, 0.0, 0.0, 7599.160763622445, 232.83489227294922, 0.0, 0.0, 0.0, 1.0, 0.0])

Right:
('D = ', [-0.18074431297879, 0.09867497473634164, -0.0009884954467132986, 0.0036353564073705403, 0.0])
('K = ', [498.7409883267622, 0.0, 291.5762187032763, 0.0, 498.30987684184066, 227.68080990553125, 0.0, 0.0, 1.0])
('R = ', [0.7615991377315566, 0.058995280645396275, -0.645357505781191, -0.06461826976319257, 0.9977979698625183, 0.01495628801033251, 0.6448187595125938, 0.030311189349936044, 0.7637342464370913])
('P = ', [7599.160763622445, 0.0, 1265.467307806015, -1711.1482708710546, 0.0, 7599.160763622445, 232.83489227294922, 0.0, 0.0, 0.0, 1.0, 0.0])
('self.T ', [-0.17149381203576658, -0.01328431857227886, 0.14531899172307178])
('self.R ', [0.9942899335632859, -0.07722967777136173, -0.07364173331778835, 0.07624005280745842, 0.9969585250967534, -0.016160247053250816, 0.07466580450669887, 0.010453521331962081, 0.997153820395394])
None
# oST version 5.0 parameters


[image]

width
640

height
480

[stereo/left]

camera matrix
496.448387 0.000000 318.131942
0.000000 496.004556 254.982289
0.000000 0.000000 1.000000

distortion
-0.188311 0.099794 -0.001875 -0.003365 0.000000

rectification
0.713562 -0.006748 -0.700560
0.012940 0.999910 0.003548
0.700473 -0.011596 0.713585

projection
7599.160764 0.000000 1265.467308 0.000000
0.000000 7599.160764 232.834892 0.000000
0.000000 0.000000 1.000000 0.000000

# oST version 5.0 parameters


[image]

width
640

height
480

[stereo/right]

camera matrix
498.740988 0.000000 291.576219
0.000000 498.309877 227.680810
0.000000 0.000000 1.000000

distortion
-0.180744 0.098675 -0.000988 0.003635 0.000000

rectification
0.761599 0.058995 -0.645358
-0.064618 0.997798 0.014956
0.644819 0.030311 0.763734

projection
7599.160764 0.000000 1265.467308 -1711.148271
0.000000 7599.160764 232.834892 0.000000
0.000000 0.000000 1.000000 0.000000

 

 

GUI에서 Save 버튼을 누르면 그 결과가 호스트 PC의 아래 경로에 저장된다.

 

'Wrote calibration data to ', '/tmp/calibrationdata.tar.gz'

 

그 결과를 VOXL로 옮기려면 호스트PC에서 아래 명령어를 수행한다.

$ ./push_stereo_cal_to_voxl.sh

 

 

전송 결과는 VOXL로 보내어지며 아래와 같이 수행된다.

 

 

 

실제로 VOXL 디바이스의 아래 경로를 확인해보면 Calibration 을 통하여 저장된 *.yaml 파일들이 저장되어 있다.

 

yocto:/# cd /home/root/.ros/camera_info/

 

 

 

 

 

728x90

댓글