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

2023-05-16

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

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)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

萌新谈相机与IMU的标定(转载) 的相关文章

  • IMU预积分学习

    IMU预积分学习 一 IMU状态传递方程 一 IMU状态传递方程 几种不同的表达形式 xff1a 1 lio mapping xff1a 参考大佬 xff1a lio mapping 及 VINS Mono代码及理论推导 xff08 2 x
  • 鱼眼+红外+IMU+VSLAM+SLAM

    一 目的 1 想知道 xff1a 二 参考 1 一分钟详解鱼眼镜头标定基本原理及实现 https mp weixin qq com s VyxoTaYtYPB Bfh3JCXl1A 三 注意 四 操作
  • ROS | Realsense中的IMU解算orientation

    文章目录 概述 一 定义介绍 二 操作教程 一 下载并编译imu tools功能包 1 创建工作空间并初始化 2 下载imu tools并编译 二 修改配置 1 修改imu tools源码 2 修改launch文件 3 启动解算 概述 本文
  • ROS2手写接收IMU数据(Imu)代码并发布

    目录 前言接收IMU数据IMU的串口连接问题 python接收串口数据 python解析数据ROS2发布IMU数据可视化IMU数据效果 前言 在前面测试完了单独用激光雷达建图之后 xff0c 一直想把IMU的数据融合进去 xff0c 由于经
  • 在PX4下更换pixhawk的IMU

    写在前面 出于一些原因 xff0c 这篇文章不给出具体的源码 xff0c 因此博主试着将这篇写成了一篇科普性质的文章 xff0c 如果你认真读的话 xff0c 应该会有收获的 为什么要更换pixhawk的传感器 xff1f 大多数的玩家拿到
  • 关于pixhawk硬件IMU和compass那点事儿

    文章目录 前言一 IMU和compass是什么 xff1f 二 导航坐标系与机体坐标系三 安装IMU xff0c compasss四 hwdef中设置IMU xff0c compass朝向总结 前言 继上一篇讲解了pixhawk的硬件组成
  • 关于imu的介绍

    1 imu时惯性运动丹云 xff0c 包含加速度计和陀螺传感器的组合 它被用来检查加速度和角速度 xff08 IMU传感器 xff0c 你所需要知道的全部 知乎 xff09 虽然时外文翻译的 xff0c 凡是整体风格清晰 2 imu的使用
  • 传统定位方法简介--------里程计、IMU惯性传感器以及光电编码器等

    移动机器人最初是通过自身携带的内部传感器基于航迹推算的方法进行定位 xff0c 后来进一步发展到通过各种外部传感器对环境特征进行观测从而计算出移动机器人相对于整个环境的位姿 目前为止 xff0c 形成了基于多传感器信息融合的定位方法 现有移
  • 再谈IMU数据处理(滤波器)

    本文开始前 xff0c 先回答一个问题 上一篇文章最后提到了卡尔曼滤波器用来做一维数据的数字滤波处理 xff0c 最终的实验结果说 xff1a 该模型下的卡尔曼滤波处理与二阶IIR低通滤波处理效果几乎一致 有网友指出是错误的 xff0c 卡
  • vins中imu融合_VINS代码解读

    VINS estimator 摘抄 我们初始化的原因是单目惯性紧耦合系统是一个非线性程度很高的系统 xff0c 首先单目是无法获得空间中的绝对尺度 xff0c 而IMU又必然存在偏置 xff0c 在后面进行求解的时候还需要用到重力加速度 包
  • ZED 2i 双目-IMU标定

    目录 xff1a 前言IMU标定1 编译标定工具2 准备数据集3 标定 Camera IMU标定1 安装依赖2 编译Kaibr3 制作标定板下载标定板生成标定板target yaml文件 4 数据采集5 相机标定标定中遇到的问题问题1 xf
  • 利用IMU数据来计算位移

    目标 xff1a 利用IMU测得的加速度信息来计算位移 xff0c 很简单假设是匀加速运动或是匀速运动都可以 xff0c 主要是看问题的背景来具体去确定运动模型 xff0c 这里我就取个简单的匀加速运动模型 学习过程 xff1a 1 了解I
  • 惯导(IMU)的使用

    提示 xff1a 和上一篇关于利用imu计算位移的文章相比 xff0c 这篇我对imu的理解应该是更加深刻了 目录 前言 一 imu调试 二 利用IMU计算旋转 1 引入库 2 读入数据 总结 前言 这次使用的imu和上一篇文章中所提到的i
  • IMU 测量模型和运动学模型

    一 概念 高斯白噪声 测量噪声是AD转换器件引起的外部噪声 xff0c 波动激烈的测量白噪声 随机游走 这里指零偏Bias 随机游走噪声 xff0c 是传感器内部机械 温度等各种物理因素产生的传感器内部误差的综合参数 xff0c 是变化缓慢
  • Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed!

    1 具体标定步骤 xff0c 跟网上别的一模一样 xff0c 此处就不列举 2 记录踩坑过程 xff1a RuntimeError Optimization failed 当执行到开始联合标定时 xff0c 也就是如下指令 xff1a ka
  • 武汉大学研究生组合导航课程合集【2022年春】

    第四公式中kk是权重 zk hx 为innovation新息 即真实的观测 估计的观测 前者包含观测误差 gps的电离层 多径 后者包含估计误差 kk近似1 则无限相信新观测 kk 0 相信估计
  • IMU+摄像头实现无标记运动捕捉

    惯性传感和计算机视觉的进步为在临床和自然环境中获得精准数据带来了新可能 然而在临床应用时需要仔细地将传感器与身体对齐 这减慢了数据收集过程 随着无标记运动捕捉的发展 研究者们提出了一个新的深度学习模型 利用来自视觉 惯性传感器及其噪声数据来
  • 浙江大学提出自感知IMU网络精准捕获3D变形

    运动捕捉目前有两种主流方法 视觉捕捉能捕获复杂的三维几何变形 但依赖于昂贵的光学设备并且存在视线遮挡问题 基于IMU的方法虽然简便 但难以捕获细微的3D变形 为了解决这个问题 浙江大学的研究者们提出了一种可配置的自感知IMU传感器网络 解决
  • IMU的ROS调试开发工具包:imu_tools

    目录 imu tool包 问题 参数配置便利性问题 实例 调试microstrain 3dm gx5 25 imu 问题 发布的imu姿态与实际imu姿态不一致问题 imu tool包 http wiki ros org imu tools
  • IMU用于上肢功能评估

    来自日本团队牵头研究揭示了利用九轴运动传感器评估上肢Fugl Meyer FMA 的潜力 该探索侧重于将惯性测量单元 IMU 集成到 FMA 的方法中 并探究是否可以出现标准化和更客观的测量 从而解决动态运动评估中的一个紧迫问题 九轴 IM

随机推荐