精华内容
下载资源
问答
  • ZED2相机标定

    2021-05-01 11:43:16
    这里参考ZED2相机标定及运行VINS-mono 先打开一个终端 roscore 第二个终端,准备接收话题,注意这里接收的话题不是zed_wrapper发布的话题。录制结果保存在终端所在文件夹,结果文件名为Kalib_data_vga.bag。 这里...

    一、概述

    在运行视觉SLAM程序时,总会要求输入一个校正文件。这次的目的就是要把里头的参数全部填满。需要标定的参数包括:相机内参fx,fy,cx,cy;相机镜头畸变k1,k2,p1,p2;IMU陀螺仪偏移,加速度计偏移;大概就这些。

    二、录制数据集

    这里使用的相机是zed-sdk相机。
    标定流程:
    1、打印标定板
    标定板可以找合适的下载。标定板下载地址

    2、录制视频
    用zed相机自带tools,录制一段视频,视频会保存为svo文件。

    3、安装Kalibr
    zed相机自带标定程序(ubuntu默认在/usr/local/zed/tools里),这里是想和kalibr对比效果。Kalibr下载地址

    4、安装zed-ros-wrapper
    下载地址

    5、视频打包
    这里是指把zed录好的svo文件打成bag包,方便处理。
    这里参考ZED2相机标定及运行VINS-mono
    先打开一个终端

    roscore
    

    第二个终端,准备接收话题,注意这里接收的话题不是zed_wrapper发布的话题。录制结果保存在终端所在文件夹,结果文件名为Kalib_data_vga.bag。
    这里还有一点,就是zed相机里有几个话题和原始图像对应,比如:
    /zed2/zed_node/left/image_rect_color,这个话题也可以使用:分辨率没有发生变化,但是是对原始图像进行边缘裁剪后拉伸,这可能会导致丢失信息。

    rosbag record -O Kalib_data_vga.bag \
    /zed2/zed_node/imu/data_raw2 \
    /zed2/zed_node/left_raw/image_raw_color2 \
    /zed2/zed_node/right_raw/image_raw_color2
    

    第三个终端,意外发现,原因不明,总之是为了让程序发布imu数据,不用imu可以无视。

    rosrun rviz rviz
    

    打开rviz以后,添加PointCloud2,Topic填为

    /zed2/zed_node/point_cloud/cloud_registered
    

    订阅了这个话题以后,就能正常接收imu数据了。还可以添加Image之类的,确保正常录制。

    第四、五、六个终端,修改消息发布频率。
    因为zed相机通常以60Hz左右的频率进行录制,而kalibr标定又要求频率不能过高,因此要降低原话题发布频率,参考降低图像数据到20Hz,IMU数据至200Hz,ros的做法是先订阅,然后重新发布。

    rosrun topic_tools throttle messages /zed2/zed_node/imu/data_raw  200 /zed2/zed_node/imu/data_raw2
    rosrun topic_tools throttle messages /zed2/zed_node/left/image_rect_color 20 /zed2/zed_node/left/image_rect_color2
    rosrun topic_tools throttle messages /zed2/zed_node/right/image_rect_color 20 /zed2/zed_node/right/image_rect_color2
    

    第七个终端,zed_wrapper发布话题,因为要用到imu,所以运行zed2.launch,等待录制完毕。

    roslaunch zed_wrapper zed2.launch svo_file:=/path/to/xx.svo
    

    用我的电脑一般需要重复录制两三遍,才能确认流畅录制,原因不明。

    三、相机标定

    在kalibr文件夹下,执行单目标定,其中的checkboard.yaml表示同标定板一起下下来的参数文件。
    第一个终端

    roscore
    

    第二个终端

    source devel/setup.bash
    
    kalibr_calibrate_cameras \ 
    --bag /path/to/xxx.bag \
    --topics /zed2/zed_node/left/image_rect_color2 \
    --models pinhole-radtan  \
    --target /path/to/checkboard.yaml
    

    四、IMU标定

    1、安装imu_utils
    下载地址

    2、录制IMU数据
    这里按照默认值需要录制两个小时的IMU数据,imu也不能动。参考ZED2相机标定及运行VINS-mono,录制结果保存在终端所在文件夹,结果文件名为imu_calibration.bag。

    rosbag record -O imu_calibration /zed2/zed_node/imu/data_raw
    

    3、标定
    在imu_utils文件夹下打开终端,这里的ZED2_calibration.launch通过需要修改A3.launch得到。

    source devel/setup.bash
    roslaunch imu_utils ZED2_calibration.launch
    

    这里表示按照0.5倍速播放bag,可以按照需要修改,不过尽量保证播放频率为400Hz。

    rosbag play -r 0.5 imu_calibration.bag 
    

    五、相机IMU联合标定

    这里会用到之前标定的结果,总之需要把相机和IMU的标定结果填到两个yaml文件里,文件格式参考https://github.com/ethz-asl/kalibr/wiki/yaml-formats
    不过相机的yaml文件可以直接用,文件在kalibr文件夹下;imu_utils得到的结果直接用avg-axis就可以。
    执行联合标定

    kalibr_calibrate_imu_camera \
        --target /path/to/checkboard.yaml \
        --bag /path/to/xxx.bag \
        --cam /path/to/cam.yaml \
        --imu /path/to/imu.yaml \
    

    顺便一提,–imu-models scale-misalignment表示在bias+noise的模型基础上考虑scale和misalignment参数,zed相机可能用不上,参考【泡泡传感器评测】小觅双目摄像头D1000-IR-120/Color模组评测(中)

    展开全文
  • (11)ROS双目相机(ZED)标定

    千次阅读 2019-01-08 16:54:59
    1、发布双目图像 git clone ...2、标定 rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 8x6 --square 0.027 right:=/right/image_raw left:=/left/imag...

    1、发布双目图像

    git clone https://github.com/willdzeng/zed_cpu_ros

    2、标定

    rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 8x6 --square 0.027 right:=/right/image_raw left:=/left/image_raw right_camera:=/right left_camera:=/left --no-service-check

    参考:

    http://wiki.ros.org/camera_calibration/Tutorials/StereoCalibration

     

    展开全文
  • ZED2相机标定及运行VINS-mono 复古蓝 2020-11-12 13:18:14 640 收藏 5 分类专栏: Ubuntu 文章标签: ZED2相机标定 ZED2 VINS 版权 一、ZED2相机+IMU标定 1、标定工具安装 Kalibr的安装参见我的另外一篇博客...

    转载自:https://blog.csdn.net/weixin_44401286/article/details/109641268

    ZED2相机标定及运行VINS-mono

    复古蓝 2020-11-12 13:18:14 640 收藏 5

    分类专栏: Ubuntu 文章标签: ZED2相机标定 ZED2 VINS

    版权

    一、ZED2相机+IMU标定

    1、标定工具安装

    Kalibr的安装参见我的另外一篇博客Kalibr安装及相机+IMU标定
    (需要注意的是Kalibr的安装需要网络能用google,否则网络问题会导致安装不成功,如需可以找我copy相关安装所需文件)
    接下来是imu_utils的安装,参考github上的安装要求即可,且依赖于code_utils,需要先安装code_utils,然后创建catkin工作空间,必须先把code_utils放进去catkin_make,然后再把imu_utils文件放入工作空间中catkin_make,否则会报错找不到code_utils。

    2、ZED2标定数据录制

    我根据需求修改了ZED2的分辨率,在ZED2_WS/src/zed-ros-wrapper/zed_wrapper/params文件夹下找到common.yaml,设置resolution为3,即VGA模式,实际分辨率大小为672*376.

    然后打开ZED2相机开启数据录制:

    roslaunch zed_wrapper zed2.launch
    

    启用左右摄像头可视化功能,以确保将标定板保持在相机范围内。

    rosrun image_view image_view image:=/zed2/zed_node/left/image_rect_color & rosrun image_view image_view image:=/zed2/zed_node/right/image_rect_color 
    

    kalibr在处理标定数据的时候要求图像的频率不可过高,降低图像数据到20HZ,IMU数据至200HZ.

    rosrun topic_tools throttle messages /zed2/zed_node/imu/data_raw  200 /zed2/zed_node/imu/data_raw2
    rosrun topic_tools throttle messages /zed2/zed_node/left/image_rect_color 20 /zed2/zed_node/left/image_rect_color2
    rosrun topic_tools throttle messages /zed2/zed_node/right/image_rect_color 20 /zed2/zed_node/right/image_rect_color2
    

    录制数据

    rosbag record -O Kalib_data_vga.bag /zed2/zed_node/imu/data_raw2 /zed2/zed_node/left/image_rect_color2 /zed2/zed_node/right/image_rect_color2
    

    3、开始相机标定

    这里使用的是棋盘格标定板,对应的checkboard.yaml文件内容为:

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

    执行标定:

    单目情况

    kalibr_calibrate_cameras --bag /home/ipsg/ZED2_WS/Kalib_data_vga.bag --topics /zed2/zed_node/left/image_rect_color2 --models pinhole-radtan  --target /home/ipsg/dataset/checkboard.yaml --bag-from-to 5 140 --show-extraction --approx-sync 0.04
    

    双目情况:

    kalibr_calibrate_cameras --bag /home/ipsg/ZED2_WS/Kalib_data_vga.bag --topics /zed2/zed_node/left/image_rect_color2 /zed2/zed_node/right/image_rect_color2 --models pinhole-radtan  pinhole-radtan --target /home/ipsg/dataset/checkboard.yaml --bag-from-to 5 140 --show-extraction --approx-sync 0.04
    

    左目标定结果为:

    cam0:
      cam_overlaps: []
      camera_model: pinhole
      distortion_coeffs: [-0.04146142113155779, 0.040207379741452436, 0.00058191919155336,
        2.6184399452903757e-05]
      distortion_model: radtan
      intrinsics: [264.1544476767924, 265.6303085861438, 357.12188690735223, 167.47999407549506]
      resolution: [672, 376]
      rostopic: /zed2/zed_node/left/image_rect_color2
    

    注意:

    在最初运行标定时有报错,一直卡在提取角点这一步

    Initializing cam0:
        Camera model:      pinhole-radtan
        Dataset:          Kalib_data_vga.bag 
        Topic:            /zed2/zed_node/left/image_rect_color2
        Number of images: 1980
    Extracting calibration target corners
      Progress 19 / 1980     Time remaining: 9m
    

    解决办法为:

    单、双目:
    修改kalibr_calibrate_cameras.py文件中的多线程标签multithreading=multithreading改为multithreading=False

    observations = kc.extractCornersFromDataset(cam.dataset, cam.ctarget.detector,
    
                                                                                      multithreading=False, clearImages=False,
    
                                                                                      noTransformation=True)
    

    联合标定:

    修改IccSensors.py文件中的多线程标签multithreading=multithreading改为multithreading=False

    self.targetObservations = kc.extractCornersFromDataset(self.dataset, self.detector, multithreading=False)
    

    在执行单目标定、单目+IMU联合表定时会报错如下:

    Cameras are not connected through mutual observations, please check the dataset. Maybe adjust the approx. sync. tolerance.
    Traceback (most recent call last):
      File "/home/ipsg/tool/kalibr_ws/devel/bin/kalibr_calibrate_cameras", line 15, in <module>
        exec(compile(fh.read(), python_script, 'exec'), context)
      File "/home/ipsg/tool/kalibr_ws/src/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras", line 447, in <module>
        main()
      File "/home/ipsg/tool/kalibr_ws/src/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras", line 204, in main
        graph.plotGraph()
      File "/home/ipsg/tool/kalibr_ws/src/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/MulticamGraph.py", line 311, in plotGraph
        edge_label=self.G.es["weight"],
    KeyError: 'Attribute does not exist'
    
    

    解决办法:

    找到工作空间下src/Kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras中的如下代码,然后注释掉

    if not graph.isGraphConnected(): 
        obsdb.printTable() 
        print "Cameras are not connected through mutual observations, please check the dataset. Maybe adjust the approx. sync. tolerance." 
        graph.plotGraph() 
        sys.exit(-1)
    

    注释掉之后便可以得出标定结果。

    修改以上信息之后,便可以顺利运行。

    4、IMU参数标定

    单独录制IMU数据,数据包录制我录制了两个多小时,录制过程中必须保持相机静止不动。

     rosbag record -O imu_calibration /zed2/zed_node/imu/data_raw
    
    

    根据imu_utils文件夹里面的A3.launch改写ZED2标定启动文件:ZED2_calibration.launch注意,max_time_min对应的参数,默认是120,意味着两个小时,如果数据录制时间超过两小时可以不用修改,如果不足,这个时间值要改为略小于真实时间。我的内容如下:

    <launch>
        <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
            <param name="imu_topic" type="string" value= "/zed2/zed_node/imu/data_raw"/>
            <param name="imu_name" type="string" value= "ZED2"/>
            <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
            <param name="max_time_min" type="int" value= "120"/>
            <param name="max_cluster" type="int" value= "200"/>
        </node>
    </launch>
    

    启动标定:

    roslaunch imu_utils ZED2_calibration.launch
    
    

    回访数据包,以200Hz的速率回放:

    rosbag play -r 200 imu_calibration.bag  
    
    

    最后可以得到标定结果文件:/home/ipsg/tool/utils_ws/src/imu_utils/data/ZED2_imu_param.yaml

    %YAML:1.0
    ---
    type: IMU
    name: ZED2
    Gyr:
       unit: " rad/s"
       avg-axis:
          gyr_n: 1.8222305208357593e-03
          gyr_w: 3.7133721747382378e-05
       x-axis:
          gyr_n: 2.1821037744825752e-03
          gyr_w: 4.3929681760916831e-05
       y-axis:
          gyr_n: 1.6623543812424751e-03
          gyr_w: 4.1416410773020793e-05
       z-axis:
          gyr_n: 1.6222334067822277e-03
          gyr_w: 2.6055072708209496e-05
    Acc:
       unit: " m/s^2"
       avg-axis:
          acc_n: 1.9690445544535126e-02
          acc_w: 5.2966882234280319e-04
       x-axis:
          acc_n: 2.0618609665773655e-02
          acc_w: 5.4447136705058940e-04
       y-axis:
          acc_n: 1.7485637447877407e-02
          acc_w: 6.3371577751311896e-04
       z-axis:
          acc_n: 2.0967089519954317e-02
          acc_w: 4.1081932246470108e-04
    

    5、执行相机+IMU联合标定

    利用步骤2中录制的数据包,执行标定,需要准备cam.yaml及imu.yaml文件,cam.yaml为单双目输出的标定文件,本次标定仅对左目标定,使用如下:

    cam0:
      cam_overlaps: []
      camera_model: pinhole
      distortion_coeffs: [-0.04146142113155779, 0.040207379741452436, 0.00058191919155336,
        2.6184399452903757e-05]
      distortion_model: radtan
      intrinsics: [264.1544476767924, 265.6303085861438, 357.12188690735223, 167.47999407549506]
      resolution: [672, 376]
      rostopic: /zed2/zed_node/left/image_rect_color2
    

    imu.yaml信息由步骤4中的IMU标定结果得出,取标定结果Acc及Gyr的平均值填入imu.yaml文件,得如下内容:

    #Accelerometers
    accelerometer_noise_density: 1.96e-02   #Noise density (continuous-time)
    accelerometer_random_walk:   5.29e-04   #Bias random walk
    
    #Gyroscopes
    gyroscope_noise_density:     1.82e-03   #Noise density (continuous-time)
    gyroscope_random_walk:       3.71e-05   #Bias random walk
    
    rostopic:                    /zed2/zed_node/imu/data_raw2   #the IMU ROS topic
    update_rate:                 200.0      #Hz (for discretization of the values above)
    

    除了使用自己标定的IMU参数信息,也可以直接使用官网上提供的该参数,经验证,标定过后也是可以在系统中运行的,其给定的参数为(IMU rate及topic需要修改):

    #Accelerometers
    accelerometer_noise_density: 1.4e-03   #Noise density (continuous-time)
    accelerometer_random_walk:   8.0e-05   #Bias random walk
     
    #Gyroscopes
    gyroscope_noise_density:     8.6e-05   #Noise density (continuous-time)
    gyroscope_random_walk:       2.2e-06   #Bias random walk
     
    rostopic:                    /zed2/zed_node/imu/data_raw      #the IMU ROS topic
    update_rate:                 400.0     #Hz (for discretization of the values above)
    

    执行联合标定:

    kalibr_calibrate_imu_camera \
        --target /home/ipsg/dataset/checkboard.yaml \
        --bag /home/ipsg/ZED2_WS/Kalib_data_vga.bag \
        --bag-from-to 10 130 \
        --cam /home/ipsg/tool/kalibr_ws/cam.yaml \
        --imu /home/ipsg/tool/kalibr_ws/imu.yaml \
        --imu-models scale-misalignment \
        --timeoffset-padding 0.1
    

    可得标定结果为camchain-imucam-homeipsgZED2_WSKalib_data_vga.yaml,如下:

    cam0:
      T_cam_imu:
      - [0.010461959926441555, -0.9997613415836004, -0.019178302048279805, 0.0261061220321363]
      - [-0.04841582739273925, 0.01865039796109419, -0.9986531281249599, 0.004580655437468762]
      - [0.9987724741162884, 0.011376402368514227, -0.04820915283196389, -0.06740069267783835]
      - [0.0, 0.0, 0.0, 1.0]
      cam_overlaps: []
      camera_model: pinhole
      distortion_coeffs: [-0.04146142113155779, 0.040207379741452436, 0.00058191919155336,
        2.6184399452903757e-05]
      distortion_model: radtan
      intrinsics: [264.1544476767924, 265.6303085861438, 357.12188690735223, 167.47999407549506]
      resolution: [672, 376]
      rostopic: /zed2/zed_node/left/image_rect_color2
      timeshift_cam_imu: 0.001248879099353284
    

    二、使用ZED2运行VINS-mono

    修改realsense_color_config.yaml文件
    1、订阅topics修改

    imu_topic: "/zed2/zed_node/imu/data_raw"
    image_topic: "/zed2/zed_node/left/image_rect_color"
    

    2、左目相机内参修改

    model_type: PINHOLE
    camera_name: camera
    image_width: 672
    image_height: 376
    distortion_parameters:
       k1: 0
       k2: 0
       p1: 0
       p2: 0
    projection_parameters:
       fx: 264.154447
       fy: 265.630308
       cx: 357.121886
       cy: 167.479994
    

    这里使用的是校正后的图像,故设置畸变系数均为0;

    3、IMU至cam的变换矩阵,参数修改为2,使用在线标定(设置为0,使用已有的标定参数也是可以运行的):

    # Extrinsic parameter between IMU and Camera.
    estimate_extrinsic: 2   # 0  Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
                            # 1  Have an initial guess about extrinsic parameters. We will optimize around your initial guess.
                            # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
    #If you choose 0 or 1, you should write down the following matrix.
    
    

    4、IMU参数,使用VINS-mono中给定的参数

    #imu parameters       The more accurate parameters you provide, the better performance
    acc_n: 0.2          # accelerometer measurement noise standard deviation. #0.2
    gyr_n: 0.05         # gyroscope measurement noise standard deviation.     #0.05
    acc_w: 0.02         # accelerometer bias random work noise standard deviation.  #0.02
    gyr_w: 4.0e-5       # gyroscope bias random work noise standard deviation.     #4.0e-5
    g_norm: 9.80       # gravity magnitude
    
    

    5、不需要在线估计同步时差

    #unsynchronization parameters
    estimate_td: 0                      # online estimate time offset between camera and imu
    td: 0.000                           # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)
    
    

    6、相机改为全局曝光

    #rolling shutter parameters
    rolling_shutter: 0                      # 0: global shutter camera, 1: rolling shutter camera
    rolling_shutter_tr: 0               # unit: s. rolling shutter read out time per frame (from data sheet). 
    
    

    7、开始运行

    roslaunch zed_wrapper zed2.launch
    roslaunch vins_estimator realsense_live.launch 
    roslaunch vins_estimator vins_rviz.launch
    

    结果如下:
    在这里插入图片描述

    参考链接:
    https://blog.csdn.net/u011178262/article/details/83316968
    https://blog.csdn.net/fb_941219/article/details/104709049
    https://blog.csdn.net/u010590316/article/details/89297324
    https://zhuanlan.zhihu.com/p/268825840
    https://blog.csdn.net/weixin_44580210/article/details/89789416

    展开全文
  • MATLAB标定ZED双目摄像头

    千次阅读 2018-05-17 10:51:53
    MATLAB标定ZED双目摄像头步骤 Matlab version:2017b Matlab标定双目摄像头三步走: 图像采集 单目相机标定 双目相机标定 图像采集 利用Matlab对棋盘格进行图像采集,图片数量在15~25之间。采集代码如下: ...

    MATLAB标定ZED双目摄像头步骤

    Matlab version:2017b

    Matlab标定双目摄像头三步走:

    • 图像采集
    • 单目相机标定
    • 双目相机标定

    图像采集

    利用Matlab对棋盘格进行图像采集,图片数量在15~25之间。采集代码如下:

    % 代码功能:每次按下enter键,采集一次棋盘格图片,并将左右相机的图像分离,各自存到事先建好的目录下
    clear all;close all;clc;
    
    % Open the ZED
    zed = webcam('ZED')
    % Set video resolution=720P
    zed.Resolution = zed.AvailableResolutions{1};
    % Get image size
    [height width channels] = size(snapshot(zed))
    ok = 1;
    i = 0;
    % Start loop
    while ok
      % get key value
      w = waitforbuttonpress;
      if w
          % Capture the current image
          img = snapshot(zed);
    
          % Split the side by side image image into two images
          image_left = img(:, 1 : width/2, :);
          image_right = img(:, width/2 +1: width, :);
          % save images
          imwrite(image_left, ['E:\zed\leftImage\',num2str(i),'.jpg']);
          imwrite(image_right, ['E:\zed\rightImage\',num2str(i),'.jpg']);
          % Display the left and right images
          subplot(1,2,1);
          imshow(image_left);
          title('Image Left');
          subplot(1,2,2);
          imshow(image_right);
          title('Image Right');
          drawnow;
          i = i+1;
      end
    end
    
      % close the camera instance
      clear zed

    这里插补一下ZED相机在Matlab中的使用方法:
    在Matlab命令窗口输入

    >> webcamlist

    ZED相机被检测到的话,会得到

    ans ='ZED'

    初次使用这个命令会报错

    Error using webcamlist (line 20)
    MATLAB Support Package for Webcams has not been installed. Open  Support Package Installer to install the Webcam Support Package.

    解决方法:点击错误里面的链接,注册一下Matlab的账号,下载安装一下支持包就可以了。
    打开相机,输入

    >> cam = webcam

    Matlab会返回相机信息

    cam =
    
    webcam with properties:
    
    Name: 'ZED'
    Resolution: '2560x720'
    AvailableResolutions: {1x4 cell}
    WhiteBalanceMode: 'auto'
    Sharpness: 4
    Saturation: 5
    Hue: 0
    Gain: 4
    WhiteBalance: 4600
    Contrast: 4
    Brightness: 4
    Exposure: 2
    ExposureMode: 'auto'

    运行相机,输入

    >> preview(cam)

    抓取图片,输入

    >> img = snapshot(cam);

    关闭相机,输入

    >> clear cam

    单目相机标定

    这里,先标定左相机。标定主要用的是Matlab的标定工具箱插件。插件下载地址:
    Camera Calibration Toolbox for Matlab

    将下载好的文件夹放在Matlab的toolbox目录下,然后在Matlab命令窗口输入

    >> pathtool

    在弹出的Set path 窗口中,点击Add Folder,添加toolbox_calib插件目录,点击save。
    这里写图片描述
    将Matlab当前文件夹切换到包含左相机图片的文件夹下。
    这里写图片描述

    在Matlab命令窗口输入

    >> calib_gui

    弹出工具栏窗口
    这里写图片描述
    选择第一个选项,弹出标定界面
    这里写图片描述
    点击“Image names”,Matlab命令窗口显示如下
    这里写图片描述
    这里是要求输入图片命名里除了数字和后缀之外的部分,比如图片命名为“left1.jpg”,这里要输入“left”,因为我的图片命名里只有1,2,3…数字,所以直接回车。
    这里写图片描述
    Image format是图片的格式,按照实际情况选择。回车。图片加载成功。
    这里写图片描述
    然后,点击标定界面的Extract grid corners(提取角点),Matlab命令窗口如下
    这里写图片描述
    一路回车,默认即可。最后会跳出第一幅图棋盘图,然后按顺时针或逆时针旋转棋盘格最外面的四个格子的内角点。
    这里写图片描述
    之后,Matlab的命令窗口要求输入格子的大小,单位mm,我的是30*30mm,所以输入30。
    这里写图片描述
    然后,会弹出一个角点提取的图片。
    这里写图片描述
    如果对角点提取不满意,即红色十字和实际的角点不是很接近,可以通过系数kc调整,如下图
    这里写图片描述
    注意kc的取值范围在-1~+1之间,一般可以试试-0.1、-0.2、-0.3。调好以后,在Satisfied with distortion? ([]=no, other=yes) 后输入1。之后会进入第二张图片进行角点提取,重复上述过程,直到所有图片的角点提取完成。
    这里写图片描述
    所有图片的角点提取完成后,Malba命令窗口会显示左相机的内参。
    这里写图片描述
    标定结束后可以通过标定界面按钮进行可视化的观察,比如误差图的查看,点击Analyse error
    这里写图片描述
    可以点击误差较大的点,在Matlab命令窗口显示这个点的基本信息。
    左相机标定结果出来后,点击标定界面的Save,这时结果文件默认保存在当前文件夹下面,默认文件名为Calib_Results.mat,将其改为Calib_Results_left.mat(双目标定用到)。至此左摄像头标定结束,右摄像头标定过程与左一样,最后保存为Calib_Results_right.mat。

    双目相机标定

    Matlab命令行输入

    >> stereo_gui

    弹出立体标定界面,选择第一个Load
    这里写图片描述
    load左右相机标定结果的.mat文件,如果命名是“Calib_Results_left.mat”和“Calib_Results_right.mat”,直接回车,否则需要输入正确的文件名。
    这里写图片描述
    回车后,Matlab会显示左右相机的标定结果,点击一下标定界面的run,会显示优化后的标定结果。
    这里写图片描述
    至此,左、右相机的内参和双目相机的外参都标定好了。标定结束。
    如果想将标定结果转换为opencv能用的文件,参考下面的博客。
    参考博客

    展开全文
  • ubuntu18.04 ZED2相机标定

    2021-04-27 11:11:06
    参考:Ubuntu下ZED2 SDK使用及开发环境配置\ 1.1 驱动下载 cuda 11.1下载 安装cuda11.1 我第一次是按照教程安装的cuda10.2,但是报错了,在后面启动相机的时候ERROR,经查询可能是cuda版本问题。 wget ...
  • ZED2、IMU联合标定

    2020-11-20 18:52:01
    上一次标定ZED2相机,链接: https://editor.csdn.net/md/?articleId=109696090 接下来标定IMU。 同样,先录制数据包。 rosbag record -O imu_cyx_calibration /zed2/zed_node/imu/data_raw 将imu_utils文件夹下...
  • rosrun topic_tools throttle messages /zed2/zed_node/left/image_rect_color 20 /zed2/zed_node/left/image_rect_color2 rosrun topic_tools throttle messages /zed2/zed_node/right/image_rect_color 20 /zed2/...
  • ZED 内参标定 & 外参标定准备 之前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 记录了我用 Autoware 标定相机和雷达的过程,虽然用的不是 Calibration Tool Kit 工具,但是博客...
  • ZED2双目相机+IMU标定

    2021-03-12 21:40:57
    本文主要使用了kalibr工具标定ZED2双目相机+IMU,并运行VINS-Fusion。 阐述了标定板的选择方法,以及标定中的注意事项。

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

zed标定