Realsense d435i内参、外参标定
使用工具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内参、外参标定相关推荐
- 计算机视觉——棋盘格标定法获取相机内参外参
计算机视觉--棋盘格标定法获取相机内参外参 一.原理 相机标定目的 相机标定的输入 相机标定的输出 相机标定策略 相机拍摄图像变换过程 相机内参 相机外参 二.环境 三.数据集 四.运行结果与分析 角 ...
- ros --- 双目相机内参与外参标定
ros --- 双目相机内参与外参标定 小觅相机直接获取参数 手动重新标定 1. 双目相机内外参标定 生成标定板 录制 stereo_calibra.bag 标定 标定结果 标定验证 2. 双目 + ...
- Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题
Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题 鱼香ROS介绍: 鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流. 进群加V:fishros2048 ...
- 二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)
专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...
- SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)
原文链接: SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022) 论文阅读:SST-Calib: Simultaneous Spatial-T ...
- 多传感器融合感知 --传感器外参标定及在线标定学习
0. 简介 作为无人车以及智能机器人而言,在装配过程中各个传感器之间的外参标定一直是比较头疼的问题.这里作者也系统的学习了一下,传感器的外参标定和在线标定问题.下图是我们常用的几个坐标系,而对于常用的 ...
- 单线激光雷达的外参标定方法
单线激光雷达标定 激光雷达的标定意义: 激光雷达内参标定:内部激光发射器坐标系与雷达本身坐标系的转换关系,在出厂前已经标定完成,可以直接使用. 所谓激光雷达外参标定,就是将计算激光雷达自身坐标系与我们 ...
- JointCalib-雷达与相机的外参标定
0. 简介 作为自动驾驶行业最头疼的问题之一,外参标定一直以来受到广泛的关注,尤其是最常使用的激光雷达与相机的外参标定.之前在文章:3D雷达与相机的标定方法详细教程与多传感器融合感知 --传感器外参标 ...
- 【相机标定基于消失点的外参标定】
[相机标定&基于消失点的外参标定] 文章一:Camera calibration using two or three vanishing points 文章二:Online Extrinsi ...
最新文章
- CA证书服务器(4) 证书、CA、PKI
- Linux优化和目录结构
- 【论文笔记】CNN for NLP
- linux笔记-硬链接和符号链接
- C++设计模式-面向对象程序设计要点以及封装性特点
- 新版蓝色广告跳转页面代码分享
- pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光
- 风格化图像_【开源】图像风格化和目标检测
- 洛谷——P1375 小猫
- android的大转盘抽奖完美实现
- 系统没有wmi服务器,Win8系统下sql 2008 MOF编译器无法连接WMI服务器怎么办
- JedisClusterException: No way to dispatch this command to Redis Cluster because keys have different
- shimo的学习之MySQL 学习
- 你们要的炒股软件来啦,同花顺等 6 款工具类软件上架优麒麟软件商店
- 《腾讯之道》读书笔记
- 来听听外国UX设计师的22句话
- Spring之面向切面编程AOP(八)
- 华为认证HCIP的持证人数
- 智慧配煤解决方案,焦化行业产能提升解决方案
- 【趣发现】形态各异的区块链和云计算