为了获得相机的内参,以及D435i各传感器坐标的外参,利用intel自带的Dynamic Calibrator进行标定。

Kalibr标定d435i内参、与IMU外参

1.标定内参

录制数据集:

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color

利用throttle工具降低录制的RGB图像频率,降至4HZ,新发布的topic名字是/color

录制时需要准备标定板,这里建议TB直接买人家做好的,省去自己打印的不好。Kalibr支持tag和chessboard,博主这里借用了同学的棋盘格标定板,按照Kalibr的提示修改yaml文件,这里采用的标定板实际是9*12的,但是注意配置文件中是内角点:

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

录制好数据集就可以开始进行标定了:

kalibr_calibrate_cameras --target ~/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --bag ~/dev/kalibr_ws/src/kalibr/data/kalibr_color.bag --models pinhole-equi --topics /color

这是官网的例子,修改为自己的具体对应的文件就行,我这里是直接输入的绝对路径。

*问题:

这里运行时卡在提取角点上

然后在github的issue里到了答案:

在上述命令后加入--show-extraction

这样就能够运行了,参考链接

2.标定与IMU的外参

同样录制数据集,降低图像数据到20HZ,IMU数据至200HZ。

这里需要不同的配置文件,camchain.yaml和imu.yaml

camchain.yaml:

cam0:camera_model: pinholeintrinsics: [632.9640658678117, 638.2668942402212, 339.9807921782614, 243.68020465500277]distortion_model: equidistantdistortion_coeffs: [0.366041713382057, 1.1433178097591097, -3.008125411486294, -3.1186836086733227]T_cam_imu:- [0.01779318, 0.99967549,-0.01822936, 0.07008565]- [-0.9998017, 0.01795239, 0.00860714,-0.01771023]- [0.00893160, 0.01807260, 0.99979678, 0.00399246]- [0.0, 0.0, 0.0, 1.0]timeshift_cam_imu: -8.121e-05rostopic: /colorresolution: [640, 480]

imu.yaml:

rostopic: /imu
update_rate: 200.0 #Hzaccelerometer_noise_density: 0.01 #continous
accelerometer_random_walk: 0.0002
gyroscope_noise_density: 0.005 #continous
gyroscope_random_walk: 4.0e-06

这里我用得到的相机内参替换了官方模板程序里面的数值,但是T_cam_imu和time_shift_imu并未修改,这里博主也不是很清楚。

然后运行:

kalibr_calibrate_imu_camera --target ~/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --cam ~/dev/kalibr_ws/src/kalibr/data/camchain.yaml --imu ~/dev/kalibr_ws/src/kalibr/data/imu.yaml --bag ~/dev/kalibr_ws/src/kalibr/data/color_imu.bag --bag-from-to 5 45 --show-extraction

这样就能够运行了。上述命令的5 45指的是采用的数据集的范围。


D435i的IMU的标定(用RealSense官方的)

参考文献:官网链接

首先到github上安装librealsense,本人直接下载了压缩包,然后解压缩后,在librealsense文件夹中新建了一个build文件夹,然后进入build文件夹,打开命令行,运行:

cmake ..

然后如果网络情况不好的话,会报错:

报的错是librealsense/third-party/libtm/resources/CMakeLists.txt中的第98行报错,可以将92行到94行注释掉。

然后:

make

sudo make install

然后按照pdf的教程安装各种python的东西,最后在tools/rs-imu-calibration中运行

python rs-imu-calibration.py

按照PDF的提示,一步步操作,最后输入footer按enter就能看到最后标定的结果,选择是否将结果写入到相机的eeprom中。


[相机标定]RealSense D435i相机标定相关推荐

  1. Kinect DK相机与Realsense D435i相机记录

    Kinect DK相机与Realsense D435i相机记录 文章目录 Kinect DK相机与Realsense D435i相机记录 前言 一.Kinect DK相机 1.imu 2.RGB摄像头 ...

  2. 在 NVIDIA jetson tx2 上基于 realsense d435i 相机运行 vins 相关配置

    在 NVIDIA jetson tx2 上基于 realsense d435i 相机运行 vins 相关配置 一.tx2刷机 二.安装librealsense,realsense驱动 1.安装依赖库 ...

  3. Ubuntu 18.04 Intel RealSense D435i 相机标定教程

    1.D435i相机简介 RealSenseD435i 是一款立体视觉深度相机,如下图所示,其集成了两个红外传感器(IR Stereo Camera).一个红外激光发射器(IR Projector)和一 ...

  4. 相机+IMU标定 Realsense D435i

    使用的标定工具总共包含两个,一个是苏黎士联邦理工的Kalibr工具,可以标定相机内参及相机-IMU外参,另外一个是港科大的imu_utils,可以标定IMU内参,我们先标定IMU内参,再标定相机内参, ...

  5. kalibr标定realsense鱼眼相机

    这几天项目需要使用realsense相机,正好实验室有realsense t265和d435i,在这里介绍一下realsense相机驱动安装和kalibr功能包标定相机的方法. 博主以 realsen ...

  6. RealSense D435i + imu 标定 Ros Melodic

    准备工作: ubuntu/ros-melodic环境 librealsense realsense-ros 一.修改rs_camera.launch文件中的参数 修改之前装好的realsense环境中 ...

  7. Intel Realsense D435i各类标定教程

      在之前的实验中用到了realsense-D435i,为了提高精度使用之前必须要进行标定.本篇文章就介绍下各类标定方法.因为我最终的目的是完成IMU和双目的联合标定,整个流程都是围绕整个目的展开的. ...

  8. Dobot magician + realsense D435i 手眼标定(外参)

    想着拿实验室的Dobot magician 来测试自己的算法,测试之前要先确定D435i相对Dobot基座标的位姿矩阵,想着是不是可以弄个程序跑完就出一个位姿矩阵,就有了这几天踩坑的历程,虽然网上有些 ...

  9. Dobot magician + realsense D435i 手眼标定(外参)C++

    之前写过一篇用python实现的,最近在ubuntu18.04弄了一个c++的,记录一下 一.pipeline: 1.下载aruco_ros.realsense-ros,打印aruco二维码,最好打印 ...

最新文章

  1. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...
  2. PTA 基础程序编程集 7-2 然后是几点 C语言
  3. tensorflow笔记:多层CNN代码分析
  4. ini配置文件的读取
  5. sql中的text字段如何导入oracle
  6. Python进阶:对象复制与比较,分深浅,见真假
  7. postgresql导入mysql_【原创】MySQL和PostgreSQL 导入数据对比
  8. java反射 获取局部变量_Java反射:如何获取变量的名称?
  9. 用JavaScript实现本地缓存
  10. Android L系统mtk平台下AAL自动背光调整服务亮度曲线调试需要涉及的地方
  11. 美国实现Believe me I can fly, Believe me I can touch sky (2)
  12. linux 达梦C接口,达梦数据守护搭建
  13. Git-本地库与中央库
  14. linux查找以h结尾的文件,linux中文件查找的常用命令
  15. 简单函数编写_strcpy、_stroverchg、_strcmp
  16. yum安装mysql my.cnf_Linxu Yum方式安装Mysql
  17. 分库分表中间件sharding-jdbc的使用
  18. Keil出现 err:Cannot read project file异常;err:点击Project闪退
  19. 微信小程序转发分享及好友点击进入传参
  20. 百度世界大会全新打开方式!VR会场“希壤”上线

热门文章

  1. python和js优劣势_Python对比其他语言,在web开发中有什么优劣势?
  2. 前端开发:Vue中findIndex() 方法的使用
  3. Tomcat常见面试题
  4. Tomcat配置域名
  5. 【每日早报】2019/07/05
  6. Sklearn:天池新人实战赛o2o优惠券使用预测 part1
  7. scala入门_Scala和Scalatra入门–第一部分
  8. 【SQL 语法教程】小白专属SQL教程
  9. vgg16 清华镜像_经典网络-使用VGG16进行迁移学习
  10. Vue数组更新检测无效