我发现这里所给的标定板也是这个

https://drive.google.com/file/d/0B0T1sizOvRsUdjFJem9mQXdiMTQ/edit?resourcekey=0-0Cn7Pkf1xyNGurAnRJH3aA

而且这个标定板左下角有标明尺寸

转载自:https://zhuanlan.zhihu.com/p/44424457

萌新谈相机与IMU的标定

熊勒个猫

社会太复杂了,我还是喜欢熊猫比较安全

本文主要包括相机标定和imu_camera 标定,另附上imu标定文章(非本人)。

先从摄像头的标定开始讲起吧,SLAM新手上路,第一个要玩的肯定是ORBSLAM,光跑数据肯定不够过瘾啊,所以就要用自己的摄像头转一圈。下面进入正题,

前提条件:一个笔记本,一个能用摄像头(单目或者双目)

1.相机标定--opencv

camera_calibration - ROS Wiki​

wiki.ros.org

其实wiki上已经介绍的够清楚的了,先下载image_pipeline的源码,然后下载一张棋盘纸

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/my_camera/image camera:=/my_camera

size 是指棋盘内部角点个数,我是用的标定板公有8x6个角点(即8列6行),square指方形的边长,image为输出图像的话题,camera为相机的名称(即在/image_raw前面部分)。比如我的无人机是ardrone2.0.运行起来应该是

rosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_rawosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_raw

但是再此之前别忘了检查一下你的topic名字,可以输入

rostopic list

对于的我的无人机来说,还需要运行一个驱动launch文件

roslaunch ardrone_autonomy ardrone.launch

然后你可以看到这个东西,

步骤就是左三圈右三圈,上三圈下三圈,换个姿势再来几圈.........

当标定完成的时候,那个calibrate 按钮会变蓝,然后你可以点击保存和commit。这样就会生成一个yaml文件。最后标定就完成啦!

二.相机标定--matlab

关于如何用matlab标定我就不赘述了,因为我自己没有亲自操作过,这里附上几篇文章,仅供参考

MATLAB标定工具箱的使用 - CSDN博客​blog.csdn.net

三.相机与imu标定

这里用到的是大名鼎鼎ethz 开发的kalibr

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

这个kalibr有两个版本,一个是比较全的版本,但是里面包比较多,一开始尝试去编译这个,结果电脑不争气,编译一直卡死。所以后来我就用这个CDE版本。

ethz-asl/kalibr​github.com

关于如何使用这个版本,下面这个链接里面的视频已经讲的很清楚了。(需要代理)

https://www.youtube.com/watch?v=puNXsnrYWTY&app=desktop​www.youtube.com

我把主要的命令写一下,方便大家复制。

标定纸:https://drive.google.com/file/d/0B0T1sizOvRsUdjFJem9mQXdiMTQ/edit

yaml文件:https://drive.google.com/file/d/0B0T1sizOvRsUU2lGMTdWYWhPaWc/edit

别忘了修改yaml文件里面的参数,比如格的边长和行列数。具体情况根据你标定板大小而定。

(1)录制一个rosbag

rosbag record /ardrone/front/image_raw   /ardrone/imu

一个是你相机的topic,另一个是imu的topic。

然后拿着你的设备对准标定板,先是pitch三次,yaw三次,roll三次,up and down三次,左右三次,然后再随意换几个姿势。标定时间按视频里面说,要小于60s。录制完成之后再保存。

下一步就是去下载刚才那个cde版本,如果你的电脑足够牛的话,可以用比较全的版本

ethz-asl/kalibr​github.com

安装依赖项
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-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
创建一个catkin 工作空间mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/indigo/setup.bash
catkin init
catkin config --extend /opt/ros/indigo
catkin config --merge-devel # Necessary for catkin_tools >= 0.4. catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
把kabibr放到工作空间里
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
编译
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
这个时间会很长,你可以来盘王者或者吃鸡等一会,有可能你的电脑会像我的一样卡死,那就比较尴尬了。最后别忘了source一下路径
source ~/kalibr_workspace/devel/setup.bash

其实到这里差不多已经准备就绪了,但是为了防止出现意外,我们最好先运行一下example测试一下环境。

下载这个数据集,把它放进之前的kalibr-cde文件夹下面

https://drive.google.com/file/d/0B0T1sizOvRsUcGpTWUNTRC14RzA/edit​drive.google.com

./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag dynamic.bag --bag-from-to 5 45 

假如example数据能跑通,说明kalibr工具准备好了,下面开始进入真实环境下的标定过程

(1)

上面那个example你应该可以发现,运行标定程序后面跟着四个文件,第一个是棋盘文件,就是之前需要修改的那个yaml文件,第二个是相机内参文件(这里的内参文件和之前ros获得的文件不同,需要用kalibr单独获得),第三个是imu噪声文件,第四个是之前我们录制好的rosbag

(2)

现在未获得的只有第二个camchain文件,所以先播放一下rosbag看看有没有问题

roscore&&rosbag play xxx.bag

在播放的过程中,检查一下是否有相机和imu话题 rostopic list

(3)

cd kalibr-cde

./kalibr_calibrate_cameras --target  april6x6.yaml --bag  xxxx/xxx.bag --models pinhole-equi  --topics /ardrone/front/image_raw

结束之后会得到一个report和pdf文件。

(4)

在做这一步之前。找到kalibr_calibrate_imu_camera文件,注释掉以下几行

#delete old results
rm -f $HERE/*.pdf 2> /dev/null
rm -f $HERE/*.yaml 2> /dev/null
rm -f $HERE/*.txt 2> /dev/null
rm -f $HERE/*.bag 2> /dev/null
rm -rf $HERE/cde-root/output* 2> /dev/null
./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam 之前获得的相机文件.yaml --imu imu_adis16448.yaml --bag 录制的bag路径(比如example中的dynamic/dynamic).bag --bag-from-to 5 45 

然后等待一会,就生成report啦!

如果有问题或者发现文章中有什么错误可以私信或者留言,我都会回答的,虽然我自己也不怎么会。

最后附上几篇能用到的文章

双目imu相机标定:双目相机与IMU camera IMU 联合标定工具箱使用方法--Kalibr

港科大imu标定工具: gaowenliang/imu_utils,相关的专栏文章介绍:Imu_tk算法流程

http://cache.freescale.com/files/sensors/doc/app_note/AN5087.pdf

https://www.vectornav.com/support/library/gyroscope

Department of Computer Science and Technology

编辑于 2018-09-13

同时定位和地图构建(SLAM)

视觉惯性里程计(VIO)

萌新谈相机与IMU的标定(转载)相关推荐

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

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

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

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

  3. 相机与IMU联合标定

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

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

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

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

    16个相机参数: Overview ethz-asl/kalibr is a toolbox that solves the following calibration problems: Multi ...

  6. VIO测试准备——使用imu_utils和kalibr进行相机与IMU标定

    0 前言 近期主要学习VIO.相机使用海康的两个支持外触发的单目相机,完成硬件同步外触发后,固联安装在机器人机体两侧,搭建了一个简易的双目相机.IMU使用的是LPMS-USBAL2(老型号,官方已经不 ...

  7. 相机与IMU标定教程

    标定教程 way 相机与IMU联合标定 1.imu_utils 标定IMU的内参 1. imu_utils标定IMU的内参,可以校准IMU的噪声密度和随机游走噪声 2.kalibr包标定相机的内外参数 ...

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

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

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

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

最新文章

  1. aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
  2. python【数据结构与算法】六度空间
  3. 记一次validator jar冲突导致的启动异常
  4. python 解析xml格式_Python解析XML文件
  5. SPOJ 4564 Chop Ahoy! Revisited!
  6. 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)
  7. ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable
  8. python使用梯度下降方法实现线性回归算法_python实现线性回归梯度下降算法
  9. 手机备份时,应该把软件配置也备份起来
  10. 简析struct in_addr ,struct sockadd
  11. random.uniform()用法
  12. python实现FTP文件上传和下载
  13. B2B电商平台--ChinaPay银联电子支付功能
  14. 数字信号常用典型序列(1)
  15. 【开发经验】quartz表结构说明(字段说明)
  16. 批量用title的内容命名html文件,使用批处理批量复制文件并重命名
  17. uniApp使用高德地图api
  18. 如何将普通相机改成VR相机
  19. Mac 清除dns缓存
  20. cocos creator 浅塘游戏开发(2) 搭建初始界面

热门文章

  1. 【已解决】surface 电池不好充电显示“未连接”,将充电的接口换个方向就解决了
  2. CAD中图框和比例和打印机的纸张尺寸的关系
  3. 测试基础知识考试题目(答案)
  4. 阿里在职5年,一个女测试工师的坎坷之路
  5. python批量下载网页图片及列表
  6. 【文献译文】OFDM Receiver Using Deep Learning: Redundancy Issues
  7. dcn网络与公网_ip 中的,内网,外网,公网,dcn网络,分别是什么意思?
  8. 图像无损压缩:Pichi for Mac
  9. Java可以hook微信吗,Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)
  10. 计算矩阵行列式时奇排列与偶排列的判定