[相机标定]RealSense D435i相机标定

为了获得相机的内参,以及D435i各传感器坐标的外参,利用intel自带的Dynamic Calibrator进行标定。

Kalibr标定d435i内参、与IMU外参

1.标定内参

录制数据集:

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color

利用throttle工具降低录制的RGB图像频率,降至4HZ,新发布的topic名字是/color

录制时需要准备标定板,这里建议TB直接买人家做好的,省去自己打印的不好。Kalibr支持tag和chessboard,博主这里借用了同学的棋盘格标定板,按照Kalibr的提示修改yaml文件,这里采用的标定板实际是9*12的,但是注意配置文件中是内角点:

target_type: 'checkerboard' #gridtype
targetCols: 8               #number of internal chessboard corners
targetRows: 11               #number of internal chessboard corners
rowSpacingMeters: 0.025      #size of one chessboard square [m]
colSpacingMeters: 0.025      #size of one chessboard square [m]

录制好数据集就可以开始进行标定了:

kalibr_calibrate_cameras --target ~/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --bag ~/dev/kalibr_ws/src/kalibr/data/kalibr_color.bag --models pinhole-equi --topics /color

这是官网的例子,修改为自己的具体对应的文件就行,我这里是直接输入的绝对路径。

*问题:

这里运行时卡在提取角点上 

然后在github的issue里到了答案:

在上述命令后加入--show-extraction

这样就能够运行了,参考链接

2.标定与IMU的外参

同样录制数据集,降低图像数据到20HZ,IMU数据至200HZ。

这里需要不同的配置文件,camchain.yaml和imu.yaml

camchain.yaml:

cam0:camera_model: pinholeintrinsics: [632.9640658678117, 638.2668942402212, 339.9807921782614, 243.68020465500277]distortion_model: equidistantdistortion_coeffs: [0.366041713382057, 1.1433178097591097, -3.008125411486294, -3.1186836086733227]T_cam_imu:- [0.01779318, 0.99967549,-0.01822936, 0.07008565]- [-0.9998017, 0.01795239, 0.00860714,-0.01771023]- [0.00893160, 0.01807260, 0.99979678, 0.00399246]- [0.0, 0.0, 0.0, 1.0]timeshift_cam_imu: -8.121e-05rostopic: /colorresolution: [640, 480]

imu.yaml:

rostopic: /imu
update_rate: 200.0 #Hzaccelerometer_noise_density: 0.01 #continous
accelerometer_random_walk: 0.0002 
gyroscope_noise_density: 0.005 #continous
gyroscope_random_walk: 4.0e-06

这里我用得到的相机内参替换了官方模板程序里面的数值,但是T_cam_imu和time_shift_imu并未修改,这里博主也不是很清楚。

然后运行:

kalibr_calibrate_imu_camera --target ~/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --cam ~/dev/kalibr_ws/src/kalibr/data/camchain.yaml --imu ~/dev/kalibr_ws/src/kalibr/data/imu.yaml --bag ~/dev/kalibr_ws/src/kalibr/data/color_imu.bag --bag-from-to 5 45 --show-extraction

这样就能够运行了。上述命令的5 45指的是采用的数据集的范围。


D435i的IMU的标定(用RealSense官方的)

参考文献:官网链接

首先到github上安装librealsense,本人直接下载了压缩包,然后解压缩后,在librealsense文件夹中新建了一个build文件夹,然后进入build文件夹,打开命令行,运行:

cmake ..

然后如果网络情况不好的话,会报错:

报的错是librealsense/third-party/libtm/resources/CMakeLists.txt中的第98行报错,可以将92行到94行注释掉。

然后:

make

sudo make install

然后按照pdf的教程安装各种python的东西,最后在tools/rs-imu-calibration中运行

python rs-imu-calibration.py

按照PDF的提示,一步步操作,最后输入footer按enter就能看到最后标定的结果,选择是否将结果写入到相机的eeprom中。


 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部