[相机标定]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

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

*问题:

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

[相机标定]RealSense D435i相机标定_第1张图片

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

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

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

2.标定与IMU的外参

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

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

camchain.yaml:

cam0:
  camera_model: pinhole
  intrinsics: [632.9640658678117, 638.2668942402212, 339.9807921782614, 243.68020465500277]
  distortion_model: equidistant
  distortion_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-05
  rostopic: /color
  resolution: [640, 480]

imu.yaml:

rostopic: /imu
update_rate: 200.0 #Hz

accelerometer_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中。


 

你可能感兴趣的:(problem)