ZED2使用

zed2标定

ROS安装

参考网页

ZED ROS Wrapper安装

  1. 下载并放置在ROS工作空间

    cd ~/catkin_ws/src
    git clone https://github.com/stereolabs/zed-ros-wrapper
    
  2. 编译(如果失败建议按照ROS安装中第四个参考网址从头配置,包含显卡驱动、cuda安装、ZED SDK安装

    cd ~/catkin_ws
    catkin_make zed-ros-wrapper
    source ./devel/setup.bash
    

Kalibr安装与使用

参考网页

  1. 安装Kalibr依赖项,版本不一样需要修改其中的kinetic为melodic

    sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
    
    sudo pip install python-igraph --upgrade
    

    或melodic版本

    sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
    
    sudo pip install python-igraph --upgrade
    
  2. 创建工作区间

    mkdir -p~/kalibr_workspace/src
    cd ~/kalibr_workspace
    source/opt/ros/indigo/setup.bash
    catkin init
    catkin config --extend /opt/ros/indigo
    catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
    
  3. 克隆源文件至kalibr_ws的src目录下

    cd~/kalibr_workspace/src
    git clone https://github.com/ethz-asl/Kalibr.git
    
  4. 编译工具源码

    cd~/kalibr_workspace
    catkin build -DCMAKE_BUILD_TYPE=Release -j4
    
  5. 刷新工作区间(用于标定命令行打开必须运行)

    source~/kalibr_workspace/devel/setup.bash
    
  6. 利用官方的标定bag文件进行标定测试(非必须,这里没有做)

    https://github.com/ethz-asl/kalibr/wiki/downloads 下载对应文件

    对于Multiple camera calibration文件,可用如下命令测试:

    source ~/kalibr_ws/devel/setup.bash
    kalibr_calibrate_cameras --target /home/bruce/dataset/april_6x6.yaml --bag /home/bruce/dataset/static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw
    

    注意:–target后面是指向yaml文件的路径,–bag后面指向bag文件所在的位置。

ZED2相机标定

  1. 下载打印标定板

    下载地址

    选择 Aprilgrid 6x6 0.8x0.8 m (unscaled) 下载打印pdf并修改yaml文件,修改ymal参数需要具体测量,方法如图:

    tagCols 为标定格每行个数

    tagRows 为标定格每列个数

    tagSize 为标定格二维码边长,单位m

在这里插入图片描述

在这里插入图片描述

#我实际使用的参数,具体值需要测量
target_type: ‘aprilgrid’ #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.088 #size of apriltag, edge to edge [m]
tagSpacing: 0.3 #ratio of space between tags to tagSize

  1. 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 Kalibr_data.bag /zed2/zed_node/imu/data_raw /zed2/zed_node/left/image_rect_color /zed2/zed_node/right/image_rect_color
    

    参考网址:ZED2相机标定及运行VINS-mono

  2. 开始相机标定

    kalibr_calibrate_cameras --bag Kalibr_data.bag --topics /zed2/zed_node/left/image_rect_color /zed2/zed_node/right/image_rect_color --models pinhole-radtan pinhole-radtan --target april_6x6_80x80cm.yaml
    
  3. 得到类似以下格式结果,命名camchain.yaml

    cam0:
      cam_overlaps: [1]
      camera_model: pinhole
      distortion_coeffs: [0.962084349711143]
      distortion_model: fov
      intrinsics: [334.23991339518517, 333.6035571693483, 368.20264278064553, 252.393048692916]
      resolution: [752, 480]
      rostopic: /zed2/zed_node/left/image_rect_color
    cam1:
      T_cn_cnm1:
      - [0.9999904159643447, 0.0026734233431591698, -0.003467100673890538, -0.1172292375035688]
      - [-0.002666210133778015, 0.999994275307285, 0.002083428947247444, 0.0001658846059485747]
      - [0.003472650713385957, -0.002074164960638575, 0.9999918192349059, -0.0002328222935304919]
      - [0.0, 0.0, 0.0, 1.0]
      cam_overlaps: [0]
      camera_model: pinhole
      distortion_coeffs: [0.9617138563016285]
      distortion_model: fov
      intrinsics: [330.66005261900216, 330.07191301082963, 371.03802575515203, 231.03601204806853]
      resolution: [752, 480]
      rostopic: /zed2/zed_node/right/image_rect_color
    

ZED2 IMU标定

  1. imu_utils的安装

    参考github上的安装要求即可,且依赖于code_utils,需要先安装code_utils,然后创建catkin工作空间,必须先把code_utils放进去catkin_make,然后再把imu_utils文件放入工作空间中catkin_make,否则会报错找不到code_utils

    • 下载code_utils: https://github.com/gaowenliang/code_utils

      解压至catkin下的src文件,然后在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”

      然后运行catkin_make

      错误提示:

      code_utils/backward.hpp:216:30: fatal error: elfutils/libdw.h: No such file or directory compilation terminated.

      运行: apt-get install libdw-dev 安装对应的库即可,一般安装这个就可以,如果这样还不可以试试:sudo apt-get install elfutils

    • **下载imu_utils:**https://github.com/gaowenliang/imu_utils

      再次catkin_make

  2. 接下来就可以就可以标定IMU了

    参考网址

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

      <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= "30"/>
              <param name="max_cluster" type="int" value= "200"/>
          </node>
      </launch>
      
    • 单独录制IMU数据,录制过程中必须保持相机静止不动

      rosbag record -O imu_calibration /zed2/zed_node/imu/data_raw
      
    • 启动标定

      roslaunch imu_utils ZED2_calibration.launch
      
    • 回放数据

      rosbag play -r 200 imu_calibration.bag
      
  3. 最后可以得到标定结果文件:

    /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
    
  4. 将IMU的标定结果保存到文件imu.yaml中:

    #Accelerometers
    accelerometer_noise_density: 2.4753056458491202e-02   #Noise density (continuous-time)
    accelerometer_random_walk:   5.1092097834339175e-04   #Bias random walk
     
    #Gyroscopes
    gyroscope_noise_density:     4.0642638745600332e-03   #Noise density (continuous-time)
    gyroscope_random_walk:       2.6537322064011450e-05   #Bias random walk
     
    rostopic:                    /imu0      #the IMU ROS topic
    update_rate:                 200.0      #Hz (for discretization of the values above)
    
    

联合标定

参考网址

  1. 联合标定目的:

  2. 双目 + IMU数据录制(按照 相机标定 第2条的录制方法,1分钟即可,也可以3分钟并修改第三步的--bag-from-to 5 45--bag-from-to 10 120

  3. 标定,采用之前得到的相机标定结果和IMU标定结果camchain.yamlimu.yaml

    kalibr_calibrate_imu_camera \
        --target april_6x6_24x24mm.yaml \
        --bag images_imu.bag \
        --bag-from-to 5 45 \
        --cam camchain.yaml \
        --imu imu.yaml \
        --imu-models scale-misalignment \
        --timeoffset-padding 0.1
    
    • –bag-from-to 5 45: because there are shocks in the dataset (sensor pick-up/lay-down), only the data between 5s to 45s is used(5-45数据被采用)
  4. 得到最终报告

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值