使用工具code_utils、imu_utils、kalibr对Realsense d435i 内参、外参标定。本文介绍上述工具的安装,及标定方法。

一、code_utils安装

1.建立工作空间
  • mkdir -p calibration_ws/src
2.下载源码
  • cd calibration/src
  • git clone https://github.com/gaowenliang/code_utils.git
3.编译
  • cd …
  • catkin_make

编译可能出错

(1)error1

code_utils-master/src/sumpixel_test.cpp:2:24: fatal error: backward.hpp:No such file or directory
修改:在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”,再编译。

(2)error2

/home/ocean/calibration/src/code_utils/include/code_utils/backward.hpp:216:12: fatal error: elfutils/libdw.h: No such file or directory # include <elfutils/libdw.h>
解决:sudo apt-get install libdw-dev

二、imu_utils安装

1.下载源码
  • cd calibration/src
  • git clone https://github.com/gaowenliang/imu_utils.git
2.编译
  • cd …
  • catkin_make

注:在相同工作空间下,先编译code_utils;在clone下imu_utils编译

三、kalibr 安装

1.安装依赖
  • sudo apt-get install python-catkin-tools # ubuntu 16.04, 18.04
  • sudo apt-get install python3-catkin-tools python3-osrf-pycommon # ubuntu 20.04
  • sudo apt-get install -y \
  • git wget autoconf automake nano \
    
  • libeigen3-dev libboost-all-dev libsuitesparse-dev \
    
  • doxygen libopencv-dev \
    
  • libpoco-dev libtbb-dev libblas-dev liblapack-dev libv4l-dev
    
  • sudo apt-get install -y python2.7-dev python-pip python-scipy \
  • python-matplotlib ipython python-wxgtk3.0 python-tk python-igraph # Ubuntu 16.04
    
  • sudo apt-get install -y python3-dev python-pip python-scipy \
  • python-matplotlib ipython python-wxgtk4.0 python-tk python-igraph # Ubuntu 18.04
    
  • sudo apt-get install -y python3-dev python3-pip python3-scipy \
  • python3-matplotlib ipython3 python3-wxgtk4.0 python3-tk python3-igraph # Ubuntu 20.04
    
2.建立工作空间
  • mkdir -p kalibr_ws/src
3.下载源码
  • cd kalibr_ws/src
  • git clone https://github.com/ethz-asl/kalibr.git
4.编译
  • cd …
  • catkin build -DCMAKE_BUILD_TYPE=Release -j4

四、标定

应用上述工具对d435i进行标定,是建立在已完成对d435i驱动安装、配置及校准的基础上,具体可参考另一篇博文Realsense d435i驱动安装、配置及校准

1.imu随机游走标定

imu随机游走标定前,需编写.launch 文件,进入文件

  • cd calibration/src/imu_utils/launch
  • touch d435i.launch
<launch> <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen"> <param name="imu_topic" type="string" value= "/camera/imu"/> #imu topic的名字 <param name="imu_name" type="string" value= "Realsense"/> <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/> <param name="max_time_min" type="int" value= "40"/>  #标定的时长 <param name="max_cluster" type="int" value= "100"/> </node>
</launch>
(1)运行d435i
  • cd realsense_ws
  • source devel/setup.bash
  • roslaunch realsense2_camera rs_camera.launch
(2)运行标定launch
  • cd calibration_ws
  • roslaunch imu_utils d435i.launch

运行完后会在calibration_ws/src/imu_utils/data/生成文件:Realsense_imu_param.yaml,内容如下:

注:标定过程中,保持静置;也可先录制imu数据再进行标定

2.双目相机内参标定
(1)下载kalibr标定纸

https://github.com/ethz-asl/kalibr/wiki/downloads
可用A4纸打印出来,本文直接在电脑上打开Aprilgrid 6x6 0.8x0.8 m (A0 page) pdf 文件,这样有个好处是可以保证标定纸是绝对平整的。如下图所示:

(2)编写标定板yaml文件

cd /相机标定结果存储
eg:

  • cd kalibr_ws/src/kalibr
  • mkdir data
  • cd data
  • touch checkerboard.yaml
target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.022           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

注:tagSize 原大小A0是0.088,A4显示缩小了4倍,也可实际测量得到。

(3)同上运行d435i
(4)录制bag

使用throttle工具降低录制数据频率

  • rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /left
  • rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /right
  • rosbag record -O d435i_infra_left /left
  • rosbag record -O d435i_infra_right /right

录制完成后,在data文件下会生成d435i_infra_left.bag、d435i_infra_right.bag
注:录制过程中,调整相机角度,尽量在各个方向都采集到数据,但要拍到完整的标定板,否则利用bag数据标定是会报错Detection failed;
录包过程中,可运行rviz,实时观测画面,确保标定板始终在镜头内;
分别录制了左目相机、右目相机bag,在校准过程中发现两者内参并不一样,可能是录制数据差异造成的。

(5)运行标定
  • rosrun kalibr kalibr_calibrate_cameras --target src/Kalibr/data/checkerboard.yaml --bag src/Kalibr/data/d435i_infra_left.bag --models pinhole-radtan --topics /left --bag-from-10 100 --show-extractio

  • rosrun kalibr kalibr_calibrate_cameras --target src/Kalibr/data/checkerboard.yaml --bag src/Kalibr/data/d435i_infra_right.bag --models pinhole-radtan --topics /right --bag-from-10 100 --show-extractio

输出左目结果:d435i_infra_left-camchain.yaml,d435i_infra_left-report-cam.pdf,d435i_infra_left-result-cam.txt,右目结果:d435i_infra_right-camchain.yaml,d435i_infra_right-report-cam.pdf,d435i_infra_right-result-cam.txt
以左目为例显示结果如下图

3.相机-imu外参标定

由于文本主要是为了后续实战vins_fusion,而vins_fusion可以实时优化相机外参,故本文对于kailbr标定相机外参不做介绍,关于vins_fusion可参考另一篇博文。。。。
而使用kailbr标定相机外参与相机内参标定类似,只是需同时录制imu、camera bag包,再调用命令:

  • rosrun kalibr kalibr_calibrate_imu_camera --target src/Kalibr/data/checkerboard.yaml --cam src/Kalibr/data/camchain.yaml --imu src/Kalibr/data/imu.yaml src/Kalibr/data/camimu.bag --show-extraction

其中:
camchain.yaml

cam0:
camera_model: pinhole
intrinsics: [391.57645976863694, 392.2173924045597, 326.83301528066227, 235.30947818084246]
distortion_model: radtan
distortion_coeffs: [0.007532405272341989, -0.003198723534231893, -0.00015249992792258453, 0.001638891018727039]
T_cam_imu:#先验,后期优化
[0.99995, -0.00851610, 0.003972445, 0.043946]
[0.008539021, 0.9999467,-0.005786767, 0.01996812]
[-0.0039229529, 0.005820432, 0.999975, 0.01636738]
[0.0, 0.0, 0.0, 1.0]
timeshift_cam_imu: 0.002004
rostopic: /left
resolution: [640, 480]

intrinsics,distortion_coeffs内参、畸变系数为上述标定的数据,T_cam_imu为初始化参数。

imu.yaml

rostopic: /imu
update_rate: 200.0 #Hz
accelerometer_noise_density: 1.7512828345266122e-02 #continous
accelerometer_random_walk: 4.2528647943077756e-04
gyroscope_noise_density: 3.3502044635737617e-03 #continous
gyroscope_random_walk: 4.8760608618583259e-03

为随机游走标定的数据。

参考:

https://blog.csdn.net/u010196944/article/details/127238908
https://github.com/ethz-asl/kalibr/wiki/installation
https://zhuanlan.zhihu.com/p/309287821
https://blog.csdn.net/weixin_45702256/article/details/120553799

Realsense d435i内参、外参标定相关推荐

  1. 计算机视觉——棋盘格标定法获取相机内参外参

    计算机视觉--棋盘格标定法获取相机内参外参 一.原理 相机标定目的 相机标定的输入 相机标定的输出 相机标定策略 相机拍摄图像变换过程 相机内参 相机外参 二.环境 三.数据集 四.运行结果与分析 角 ...

  2. ros --- 双目相机内参与外参标定

    ros --- 双目相机内参与外参标定 小觅相机直接获取参数 手动重新标定 1. 双目相机内外参标定 生成标定板 录制 stereo_calibra.bag 标定 标定结果 标定验证 2. 双目 + ...

  3. Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题

    Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题 鱼香ROS介绍: 鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流. 进群加V:fishros2048 ...

  4. 二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  5. SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)

    原文链接: SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022) 论文阅读:SST-Calib: Simultaneous Spatial-T ...

  6. 多传感器融合感知 --传感器外参标定及在线标定学习

    0. 简介 作为无人车以及智能机器人而言,在装配过程中各个传感器之间的外参标定一直是比较头疼的问题.这里作者也系统的学习了一下,传感器的外参标定和在线标定问题.下图是我们常用的几个坐标系,而对于常用的 ...

  7. 单线激光雷达的外参标定方法

    单线激光雷达标定 激光雷达的标定意义: 激光雷达内参标定:内部激光发射器坐标系与雷达本身坐标系的转换关系,在出厂前已经标定完成,可以直接使用. 所谓激光雷达外参标定,就是将计算激光雷达自身坐标系与我们 ...

  8. JointCalib-雷达与相机的外参标定

    0. 简介 作为自动驾驶行业最头疼的问题之一,外参标定一直以来受到广泛的关注,尤其是最常使用的激光雷达与相机的外参标定.之前在文章:3D雷达与相机的标定方法详细教程与多传感器融合感知 --传感器外参标 ...

  9. 【相机标定基于消失点的外参标定】

    [相机标定&基于消失点的外参标定] 文章一:Camera calibration using two or three vanishing points 文章二:Online Extrinsi ...

最新文章

  1. CA证书服务器(4) 证书、CA、PKI
  2. Linux优化和目录结构
  3. 【论文笔记】CNN for NLP
  4. linux笔记-硬链接和符号链接
  5. C++设计模式-面向对象程序设计要点以及封装性特点
  6. 新版蓝色广告跳转页面代码分享
  7. pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光
  8. 风格化图像_【开源】图像风格化和目标检测
  9. 洛谷——P1375 小猫
  10. android的大转盘抽奖完美实现
  11. 系统没有wmi服务器,Win8系统下sql 2008 MOF编译器无法连接WMI服务器怎么办
  12. JedisClusterException: No way to dispatch this command to Redis Cluster because keys have different
  13. shimo的学习之MySQL 学习
  14. 你们要的炒股软件来啦,同花顺等 6 款工具类软件上架优麒麟软件商店
  15. 《腾讯之道》读书笔记
  16. 来听听外国UX设计师的22句话
  17. Spring之面向切面编程AOP(八)
  18. 华为认证HCIP的持证人数
  19. 智慧配煤解决方案,焦化行业产能提升解决方案
  20. 【趣发现】形态各异的区块链和云计算

热门文章

  1. 美通企业日报 | 京沪深中高端人才月薪超2万;天津首家戴森官方体验店开幕
  2. 【重磅新课上线】一建通信与广电实务(老杨)
  3. MPC入门与Matlab实现
  4. 音响指标中常见的几种dB
  5. Tiva C 系列微处理器使用注意事项
  6. 新能源汽车电池的发展及类型
  7. qt实现word风格界面_用Word展示自己的风格
  8. SIMCOM7600CE FTP指令
  9. 完全二叉树叶子节点、度为1节点、度为2节点的个数
  10. 【五星级资源】主题模板站整站打包开源+数据库,完美分享助大家建站!