16个相机参数:

Overview

ethz-asl/kalibr is a toolbox that solves the following calibration problems:

Multiple camera calibration: intrinsic and extrinsic calibration of a camera-systems with non-globally shared overlapping fields of view
    Camera-IMU calibration: spatial and temporal calibration of an IMU w.r.t a camera-system
    Rolling Shutter Camera calibration: full intrinsic calibration (projection, distortion and shutter parameters) of rolling shutter cameras

kalibr website:

https://github.com/ethz-asl/kalibr/wiki/multiple-camera-calibration

https://github.com/ethz-asl/kalibr

1.安装

Kalibr 提供两种使用方式。第一种为CDE下直接使用,作者将所需的库文件打包好,省去了配置dependency的步骤,可以直接从

https://github.com/ethz-asl/kalibr/wiki/downloads

下载, 注意需要科学浏览。

下载之后直接用

./cde-exec+命令 即可使用对应的工具。

例如如果我们想使用kalibr内的kalibr_calibrate_cameras功能,

使用

./ced-exec kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw

单目+IMU双目+IMU 为例,讲解使用 Kalibr工具 标定 Camera-IMU,其中使用的摄像头分别为 Realsense ZR300MYNT-EYE S系列摄像头

2.开始标定

Kalibr不仅提供了IMU以及camera的联合标定工具箱,也提供了camera标定工具箱。

在此我们先使用camera标定工具对相机进行标定。

首先我们需要制作标定板,在此推荐使用april tag,可以使用kalibr自带工具自定义生成不同大小的标定板,命令如下

kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]
  1. roscore
  2. rosrun uvc_camera uvc_camera_node
  3. rosrun image_view image_view image:=/image_raw
  4. rostipic list
  5. rqt_image_view
  6. rosbag record -o test /image_raw
  7. rosbag play test_2019-08-14-14-22-35.bag

将生成的pdf打印出来,置于平稳,光照充足的地方,注意要保持平整。

Kalibr作者推荐将camera固定,然后移动标定板,这样可以提高标定的稳定性,但是鉴于我使用场景受限,我使用的是晃动camera方法。

之后就可以开始录制bag了,使用

rosbag record /cam0/image_raw /cam1/image_raw /imu0

若对相机标定结果满意我们可以继续进行camera以及imu的联合标定步骤,此步使用了如下信息:

1. 标定板yaml

2. 相机标定结果yaml

3. imu内参yaml

4. 前面使用的对应bag

有了如上材料即可进行联合标定,具体如下

kalibr_calibrate_imu_camera --target aprilgrid6x4.yaml --cam camchain-2017-06-14-09-13-29.yaml --imu imu.yaml --bag 2017-06-14-09-13-29.bag --bag-from-to 5 45

最后的--bag_from_to是选取地5-45s的bag数据,去除了拾取防止设备产生的抖动部分影响。我们建议进行多组标定之后将标定结果进行最佳无偏估计,不建议对R部分直接取平均值,可以将多组数据的R部分转换成四元数。之后进行处理。

3.标定板文件:target.yaml
Kalibr支持三种标定板,分别是Aprilgrid、Checkerboard和Circlegrid。

4.帮助小陶的标定记录

april.yaml

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.025           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize
                         #example: tagSize=2m, spacing=0.5m --> tagSpacing=0.25[-]

imu_adis16448.yaml

rostopic: /imu/data
update_rate: 200.0 #Hz

#accelerometer_noise_density: 2.0000e-3 #continous
#accelerometer_random_walk: 1.9393e-05 
#gyroscope_noise_density: 1.6968e-04 #continous
#gyroscope_random_walk: 1.9393e-05

accelerometer_noise_density: 1.2e-2 #continous
accelerometer_random_walk: 3.0e-05 
gyroscope_noise_density: 1.0e-02 #continous
gyroscope_random_walk: 3.0e-05

results-imucam-2019-11-12-11-40-05.txt

Calibration results
===================
Normalized Residuals
----------------------------
Reprojection error (cam0):     mean 0.233871733163, median 0.206334845347, std: 0.148605727319
Gyroscope error (imu0):        mean 0.0943654955325, median 0.0867912466407, std: 0.0496732486016
Accelerometer error (imu0):    mean 0.119169698923, median 0.107462875286, std: 0.0668447618807

Residuals
----------------------------
Reprojection error (cam0) [px]:     mean 0.233871733163, median 0.206334845347, std: 0.148605727319
Gyroscope error (imu0) [rad/s]:     mean 0.0133452963602, median 0.0122741358095, std: 0.00702485818595
Accelerometer error (imu0) [m/s^2]: mean 0.020223768533, median 0.0182370546818, std: 0.011343932259

Transformation (cam0):
-----------------------
T_ci:  (imu0 to cam0): 
[[ 0.01032731 -0.99994666 -0.00016158  0.01401135]
 [ 0.03105076  0.0004822  -0.99951769  0.07414391]
 [ 0.99946446  0.01031731  0.03105408 -0.04191072]
 [ 0.          0.          0.          1.        ]]

T_ic:  (cam0 to imu0): 
[[ 0.01032731  0.03105076  0.99946446  0.03944135]
 [-0.99994666  0.0004822   0.01031731  0.01440725]
 [-0.00016158 -0.99951769  0.03105408  0.07541191]
 [ 0.          0.          0.          1.        ]]

timeshift cam0 to imu0: [s] (t_imu = t_cam + shift)
0.00165763516901

Gravity vector in target coords: [m/s^2]
[-0.00215999 -9.7244984  -1.26591825]

Calibration configuration
=========================

cam0
-----
  Camera model: omni
  Focal length: [3657.3894212462615, 3636.5284554729647]
  Principal point: [638.9568695670013, 503.393652719486]
  Omni xi: 5.80194283441
  Distortion model: radtan
  Distortion coefficients: [1.5274292230602973, -6.475270653629076, 0.0004049030197607094, 0.0019115670188138707]
  Type: aprilgrid
  Tags: 
    Rows: 6
    Cols: 6
    Size: 0.025 [m]
    Spacing 0.0075 [m]

IMU configuration
=================

IMU0:
----------------------------
  Model: calibrated
  Update rate: 200.0
  Accelerometer:
    Noise density: 0.012 
    Noise density (discrete): 0.169705627485 
    Random walk: 3e-05
  Gyroscope:
    Noise density: 0.01
    Noise density (discrete): 0.141421356237 
    Random walk: 3e-05
  T_i_b
    [[ 1.  0.  0.  0.]
     [ 0.  1.  0.  0.]
     [ 0.  0.  1.  0.]
     [ 0.  0.  0.  1.]]
  time offset with respect to IMU0: 0.0 [s]

Q1:I imu topics修改:如果标定相机zed leadsensor mynt 等相机录制IMU节点topics可能为xxx/imu/data 需要修改imu.yaml文件进行适配。

Q2:一个是利用rosbag节点运行的时候, 将发布的主题进行修改(remap )。另一个则是这roslaunch文件中进行修改.

下面利用两种不同的方式将/image_raw‘映射到/camera/image_raw.

1. rosbag remap
 rosbag play ros.bag  /image_raw:=/camera/image_raw

2. roslaunch remap
<remap from="/image_raw" to="/camera/image_raw"/>

  1. https://github.com/ethz-asl/kalibr/wiki/calibration-targets
  2. https://www.cnblogs.com/wongyi/p/11152062.html
  3. https://blog.csdn.net/yangdashi888/article/details/51356385
  4. https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration

标定(二)----------双目相机与IMU联合标定(工具箱使用方法——Kalibr)相关推荐

  1. 双目相机与IMU联合标定

    前言 为了后面的视觉激光融合SLAM以及跑通VINS-Fusion,需要标定双目相机和IMU得内参以及它们得外参(变换矩阵). 准备工作 双目相机:ZED-m IMU:realsense-t265(仅 ...

  2. ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装

    一.引言 同样是项目需求,需要利用视觉惯性导航做一些开发,所以第一步先做些算法的测试–仿真与实物测验,通过仿真的测试结果,最终是决定使用ORB-SLAM3来完成任务,当然了,Vins-fusion作为 ...

  3. 相机与IMU联合标定

    相机与IMU联合标定 1 imu_utils 标定IMU的内参 1.1 安装环境 1.2 录制IMU数据集 2 kalibr 标定工具 2.1 安装 2.2 校准相机的内外参 2.3 校准相机与IMU ...

  4. 双目相机 -- IMU联合标定

    声明:一些图片是不该有水印的,CSDN把图片链接的格式改了,暂时还不知道怎么去掉,请见谅!!! 目录 **声明**:一些图片是不该有水印的,CSDN把图片链接的格式改了,暂时还不知道怎么去掉,请见谅! ...

  5. 萌新谈相机与IMU的标定(转载)

    我发现这里所给的标定板也是这个 https://drive.google.com/file/d/0B0T1sizOvRsUdjFJem9mQXdiMTQ/edit?resourcekey=0-0Cn7 ...

  6. rs_D455相机内外参标定+imu联合标定

    IMU标定 <launch><node pkg="imu_utils" type="imu_an" name="imu_an&quo ...

  7. 相机标定和双目相机标定标定原理推导及效果展示

    文章目录 前言 一.相机标定 1.相机的四个坐标系 2.相机的畸变 二.张正友标定法 1.求解内参矩阵与外参矩阵的积 2.求解内参矩阵 3.求解外参矩阵 4.标定相机的畸变参数 5.双目标定 6.极线 ...

  8. 安卓手机 相机和IMU数据获取标定 在VINS-MONO运行自己的数据集(含打包方法) (非常详细一步一步来)

    Android手机上图像和IMU数据采集的方法 网上有相关的教程,但都讲的很模糊,而且不全,甚至还有人要收费.自己完整做了一遍发现还是有些麻烦,固记录下来供大家参考,希望能帮到大家. 采用开源库 Vi ...

  9. 【camera-radar】相机-毫米波雷达联合标定方案介绍+实现

    [camera-radar]相机-毫米波雷达联合标定方案介绍+实现代 代码下载地址:下载地址 部分代码: #include "typedef.h" #include <ope ...

最新文章

  1. javascript构造可以上传文件的form表单(通过js修改enctype)
  2. vsftpd设置虚拟用户
  3. 计算机视觉开源库OpenCV形态学morphologyEx函数之开运算和闭运算
  4. 2018 焦作站亚洲区域赛校内选拔赛题解
  5. ui设计师常用的设计工具_2020年应该使用哪个UI设计工具?
  6. “电脑人才”是怎么炼成的
  7. 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)
  8. Visual Stdio2013 编译错误【error C4996:'scanf':This function or variable may be unsafe.】最简单的解决方法
  9. Pandas入门教程(一)
  10. [.NET]使用十年股价对比各种序列化技术
  11. 基于粒子群优化算法的移动机器人全局路径规划-附代码
  12. python识别图片文字_python实现简单图片文字识别翻译OCR
  13. 参考文献的序号怎么对齐_word序号对齐方式 word中如何让编号自动对齐
  14. 2021 绩效管理必读
  15. 一文详解什么是代理模式
  16. Consider defining a bean of type ‘com.xingchen.media.service.MediaFileService‘ in your configuration
  17. 有道换域名,目标中立、客观、包容
  18. 《千与千寻》细节解读
  19. 什么是视频内容推荐引擎?
  20. 从IT开发人员到IT行业专家的IT职业规划

热门文章

  1. window linux上传文件命令,windows通过cmd命令行使用sftp上传文件至linux
  2. java date类_Java的败笔-Date类
  3. html5的在线播放页面,整理5款html5网页播放器,总有一款适合你吧
  4. PyTorch框架:(4)如何去构建数据
  5. 国产芯片WiFi物联网智能插座—电耗采集功能设计
  6. 4. 编程规范和编程安全指南--go语言
  7. Linux那些事儿 之 戏说USB(大结局)还是那个match
  8. Linux那些事儿 之 戏说USB(20)设备的生命线(三)
  9. Linux那些事儿之我是Sysfs(5)举例二sculld
  10. ios 贝塞尔曲线 颜色填充_PS的3D颜色深度映射到球体模拟天线