D455相机标定-双目相机标定(二)

环境:

ubuntu 20.04   ros:noetic   传感器:D455

1. 双目相机标定

1.1 安装Kalibr

   

//安装依赖

sudo apt-get install libv4l-dev

//创建工作空间
mkdir -p ~/kalibr_ws/src
cd ~/kalibr_ws/src
     
//安装编译kalibr(注意我这里选择的是noetic版本的)
git clone https://github.com/ethz-asl/Kalibr.git   
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
​

2.2 标定前准备
A4纸下载地址:

Downloads · ethz-asl/kalibr Wiki · GitHub

打印标定板,放在A4纸上打印出来,贴在固定白墙上。

原始pdf格子参数为:

D455相机标定-双目相机标定(二)_第1张图片

调整后格子参数为:

千万要自己测量大格子边长,即tagSize

tagSpacing:小格子的边长/大格子的边长

2.3 建立标定文件

touch checkerboard.yaml

里面内容填写如下:

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

2.3. 左右目相机数据准备

2.3.1 修改rs_camera.launch内容

(1)打开双目

 
 

(2)打开imu的加速度计和陀螺仪

  
  

并合并为一个topic



(3)传感器同步

  

2.3.2 关闭结构光

默认开始IR结构光时,双目图像会有很多点,这些点可能对标定有影响,所以使用时需要关闭结构光。

如果你使用的是jetson开发板使用方法一会出现很多错误(无法安装pyqt5),建议使用方法二

方法一:(一次性)

roslaunch realsense2_camera rs_camera.launch

sudo apt-get install ros-noetic-rqt-reconfigure

rosrun rqt_reconfigure rqt_reconfigure

然后在配置中做修改,可以看文章底部参考链接,网上有很多教程,这里就不详细说了

方法二:(永久性)

在上面修改了的文件基础上在后添加下面代码:


    
  
 
  /camera/stereo_module/emitter_enabled: 0
 
 
 
  /camera/stereo_module/emitter_enabled: 1
 

2.3.3 打开相机录制话题

将rs_camera.launch(上面的修改保存)备份,然后将里面的相关话题修改,需要改的有以下:

     

      
      
      
      
      
      

启动相机

roslaunch realsense2_camera rs_camera.launch

 

 打开rviz,将左右目和彩色话题/camera/color/image_raw ,/camera/infra1/image_rect_raw 和/camera/infra2/image_rect_raw订阅出来:

然后先将图像发布频率降低到4Hz

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /infra_left
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /infra_right

开始录制

rosbag record -O mult_cam_d455  /infra_left /infra_right  /color

然后相机的移动如下:首先前后、左右、上下各两个来回,然后俯仰、滚转、偏航三个方向两个来回,注意移动不要太快、需要保证标定板始终出现在图像中.

可参考:

https://www.youtube.com/watch?v=puNXsnrYWTY&app=desktop

2.4 开始标定

将bag、checkerboard.yaml放在kalibr_ws路径下

  cd kalibr_ws
  source devel/setup.bash
  rosrun kalibr kalibr_calibrate_cameras --target checkerboard.yaml --bag mult_cam_d455.bag --models pinhole-radtan pinhole-radtan  --topics /infra_left /infra_right /color

参数解释:

--target checkerboard.yaml  表示标定板的配置文文件,注意如果选择棋盘,targetCols和targetRows表示的是内测点的数量。

--bag mult_cam_d455.bag 录制的包

--models pinhole-radtan pinhole-radtan  表示三个设想头的相机模型和及便模型

—topics /infra_left /infra_right /color表示三个摄像头对应的拍摄的数据话题

–show-extraction表示显示检测特征点的过程,这些参数可以相应的调整。
可以使用rosbag info 来参看录制的包的信息(我标定的时候没有用)

2.5 结果

Camera-system parameters:
    cam0 (/infra_left):
     type: 
     distortion: [ 0.0096964  -0.00566172  0.00115569  0.0018209 ] +- [0.00100847 0.00096696 0.00020295 0.00028872]
     projection: [433.54980966 435.68316368 429.8010202  241.64337826] +- [0.45833065 0.45672505 0.37916978 0.32418984]
     reprojection error: [0.000048, -0.000008] +- [0.552363, 0.400148]

    cam1 (/infra_right):
     type: 
     distortion: [ 0.01410159 -0.00779497  0.00039713 -0.00319093] +- [0.00099843 0.00096758 0.00019239 0.00027278]
     projection: [433.16074225 435.09128217 421.40889107 241.01116892] +- [0.44783224 0.444526   0.36506732 0.30355817]
     reprojection error: [-0.000058, 0.000026] +- [0.575817, 0.412169]

    baseline T_1_0:
     q: [ 0.00066354 -0.00968669 -0.00047014  0.99995275] +- [0.00067496 0.00102756 0.0001445 ]
     t: [-0.3950731   0.0000782   0.00416542] +- [0.00015362 0.00012994 0.00045187]

起中 reprojection error如果在1个像素以下就算合理了,这里我的标定结果为0.03多,说明比较准确了

参考:

Realsence D455标定并运行Vins-Fusion_realsense 自动标定_呼叫江江的博客-CSDN博客

D435关闭结构光(ubuntu条件下)_d435guanbi 结构光_大山同学的博客-CSDN博客

D455相机标定 双目+imu(二)_全日制一起混的博客-CSDN博客

你可能感兴趣的:(环境配置,视觉slam,数码相机,c++)