d455双目相机联合IMU标定

2023-05-16

感谢这两位博主的优秀文章:

RealSense D455的标定并运行VINS-FUSION_Z_Jin16的博客-CSDN博客_d455 标定

Realsense D435I标定_小岛_神酱的博客-CSDN博客_d435i参数

主要目的是测试标定好的相机在vins和orb3上的效果。

  • IMU标定

建立工作空间,下载code_utils imu_utils;得先编译code组件。

git clone git@github.com:gaowenliang/imu_utils.git
git clone git@github.com:gaowenliang/code_utils.git
 

修改参数rs_camera

<arg name="unite_imu_method"          default="linear_interpolation"/>

编写启动文件,打开../imu_utils/launch ,打开终端运行

gedit d455_imu_calibration.launch

输入:

<launch>

    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
    	<!--TOPIC名称和上面一致-->
        <param name="imu_topic" type="string" value= "/camera/imu"/>
        <!--imu_name 无所谓-->
        <param name="imu_name" type="string" value= "d455"/>
        <!--标定结果存放路径-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <!--数据录制时间-min-->
        <param name="max_time_min" type="int" value= "50"/>
        <!--采样频率,即是IMU频率,采样频率可以使用rostopic hz /camera/imu查看,设置为200,为后面的rosbag play播放频率-->
        <param name="max_cluster" type="int" value= "200"/>
    </node>
    
</launch>

记录IMU数据,本人2小时;

rosbag record -O imu_calibration /camera/imu

运行刚刚写的launch;注意source;

roslaunch imu_utils d455_imu_calibration.launch

然后播放录制的包:也可以实时,自己改;

cd 存放imu_calibration.bag的路径
rosbag play -r 200 imu_calibration.bag

标定结束后在/src/imu_utils/data中生成许多文件,其中d455_imu_param.yaml就是我们想要的结果。

  • 多相机标定

使用的自己的棋盘格标定板。

官网下载编译kalibar:https://github.com/ethz-asl/kalibr/wiki/installation

棋盘格参数设置:

target_type: 'checkerboard' #gridtype
targetCols: 8               #number of internal chessboard corners 注意是内角点数目
targetRows: 11               #number of internal chessboard corners 注意是内角点数目
rowSpacingMeters: 0.045      #size of one chessboard square [m]
colSpacingMeters: 0.045      #size of one chessboard square [m]

ros录制和回放数据子集教程参考官网或链接https://blog.csdn.net/u010510350/article/details/72457758。

rosrun kalibr kalibr_calibrate_cameras --target src/kalibr/checkerboard.yaml --bag ~/project/calibration_ws/bag/d455_915/multicameras_calibration.bag --models pinhole-radtan pinhole-radtan --topics /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw

其中–target / ...yaml是标定板的配置文件,注意如果选择棋格盘,注意targetCols和targetRows表示的是内侧角点的数量,不是格子数量。–bag ....bag 是录制的数据包,models pinhole-radtan pinhole-radtan pinhole-radtan表示摄像头的相机模型和畸变模型(解释参考https://github.com/ethz-asl/kalibr/wiki/supported-models,根据需要选取,其中VINS使用的畸变模型是radtan), --topics /camera1 /camera2 /cameran表示摄像头对应的拍摄的数据话题,–bag-from-to 3 202表示处理bag中3-202秒的数据。–show-extraction表示显示检测特征点的过程,这些参数可以相应的调整。
可以使用rosbag info 来参看录制的包的信息

结束后有三个文件

看一下results-cam-homezjmulticameras_calibration.txt中的误差reprojection error在0.1-0.2标定结果是好的,用打印的纸很难标到这么低的误差。

  • IMU+双目相机标定

写imu和双目配置文件:示例:

imu.yaml

#Accelerometers
accelerometer_noise_density: 1.9880997991281971e-02  #Noise density (continuous-time)
accelerometer_random_walk:   4.0490731441383501e-04  #Bias random walk

#Gyroscopes
gyroscope_noise_density:     2.0419394959506850e-03   #Noise density (continuous-time)
gyroscope_random_walk:       1.4730980784156999e-05  #Bias random walk

rostopic:                    /camera/imu     #the IMU ROS topic
update_rate:                 200.0      #Hz (for discretization of the values above)

chain.yaml格式参考Kalibr官方教程https://github.com/ethz-asl/kalibr/wiki/yaml-formats中的chain.yaml,具体的参数参考上面得到的yaml文件,没有的参数可以删除,最终结果示例如下:

cam0: 
  camera_model: pinhole
  distortion_coeffs: [0.00422382476865408, -0.007054135809324035, -0.0002644424623023447, -0.0005760298576609872]
  distortion_model: radtan
  intrinsics: [385.97860717844003, 386.2571493245202, 316.8739581897098, 239.24969368480154]
  resolution: [640, 480]
  rostopic: /camera/infra1/image_rect_raw
cam1:
  T_cn_cnm1:
  - [0.9999979820943965, 1.986357968399704e-05, 0.002008833635563198, -0.09510360205596391]
  - [-2.045914753445403e-05, 0.9999999558481248, 0.00029645433663592707, -7.479825700268832e-05]
  - [-0.0020088276582250855, -0.0002964948374427818, 0.9999979383490013, 0.000352390591339898]
  - [0.0, 0.0, 0.0, 1.0] 
  camera_model: pinhole
  distortion_coeffs: [0.004823082443302526, -0.006446052821538248, -0.000172048480870964, -0.0013969375809827992]
  distortion_model: radtan
  intrinsics: [385.99858040160655, 386.4362381008456, 316.56843505915964, 239.25358539372698]
  resolution: [640, 480]
  rostopic: /camera/infra2/image_rect_raw

imu和双目数据时间对齐

<arg name="enable_sync"               default="true"/>

调整imu和双目topic的发布频率 ,其中双目图像的发布频率改为20Hz,imu发布频率改为200Hz

记录包:

rosbag record -O imu_stereo.bag /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /camera/imu

开始标定

kalibr_calibrate_imu_camera --bag ~/project/calibration_ws/bag/d455_915/imu_stereo.bag --cam ~/project/calibration_ws/bag/d455_915/chain.yaml --imu ~/project/calibration_ws/bag/d455_915/imu.yaml --target /home/b/project/kalibar_ws/src/kalibr/d455/chain.yaml /home/b/project/kalibar_ws/src/kalibr/d455/imu.yaml/checkboard.yaml --bag-from-to 2 110 --show-extraction

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

d455双目相机联合IMU标定 的相关文章

随机推荐

  • Matlab画图 线条的颜色、宽度等相关设置

    线条的属性有 xff1a Color 颜色 LineWidth 线条宽度 LineStyle 线型 LineJoin 线条边角的样式 AlignVertexCenters 锐化垂直线和水平线 线条属性的默认值为 0 0 0 39 39 39
  • 一、图像预处理

    四种图像的基本数据结构 xff1a Image 指Halcon的图像类型 Region 指图像中的一块区域 XLD 指图像中某一块区域的轮廓 Tuple 类似于数组 xff0c 用于存储一幅或多幅图像 内核矩阵的选择 xff1a 核越大越模
  • halcon边缘检测

    边缘检测 Ronny丶 博客园 寻找边缘的传统方法 xff0c 即图像中的暗 光转换 xff0c 是应用边缘滤波器 这些滤光器可以在光和暗区域的边界找到像素 从数学术语中来说 xff0c 这意味着这些滤波器决定了图像的梯度 此图像渐变通常作
  • ZED双目摄像头

    ZED stereol abs 配置踩过的坑 现在种树也不晚 博客园 介绍 xff1a CUDA CUDA 是 ZED SDK 使用的 NVIDIA 库 xff0c 用于在显卡上运行快速 AI 和计算机视觉任务 在 ZED SDK 安装过程
  • linux---五种高级IO模型

    阻塞IO模型非阻塞IO模型信号驱动IO模型异步IO模型多路转接IO模型高级IO重要概念 阻塞IO模型 在内核将数据准备好 xff0c 系统调用会一直等待 xff0c 所有的套接字默认都是阻塞IO方式 阻塞IO是最常见的IO模型 非阻塞IO模
  • Ubuntu错误处理集

    1 W GPG 错误 xff1a https developer download nvidia com compute cuda repos ubuntu1604 x86 64 Release 由于没有公钥 xff0c 无法验证下列签名
  • Linux下配置虚拟CAN

    1 加载vcan模块 sudo modprobe vcan 2 添加vcan0网卡 sudo ip link add dev vcan0 type vcan 3 查看当前CAN网络 ifconfig a 4 开启vcan0 sudo ip
  • ROS基础

    一 ROS的核心概念 节点 xff1a 节点管理器 xff1a 话题 xff1a 消息 xff1a 服务 xff1a 参数 xff1a 二 命令行工具的使用 命令行工具都是以ros开头的 常用命令 rostopicrosserviceros
  • Linux下编译Opencv和contrib

    1 安装准备 1 1 安装依赖项 sudo apt get install cmake sudo apt get install build essential libgtk2 0 dev libavcodec dev libavforma
  • YOLOv5和YOLOv7环境(GPU)搭建测试成功

    本来是用doc写的 xff0c 直接复制到这里很多图片加载缓慢 xff0c 我直接把doc上传到资源里面了 xff0c 0积分下载 xff1a 10条消息 YOLOv5和YOLOv7开发环境搭建和demo运行 Python文档类资源 CSD
  • 单片机通信总述——理论部分(CAN、串口、SPI、I2C等)

    一 基础概念 1 1 通信方法 并行通信 xff1a 传输原理 xff1a 数据各个位同时传输 xff1b 优点 xff1a 速度快 xff1b 缺点 xff1a 占用引脚资源多 是指使用 8 16 32 及 64 根或更多的数据线 有多少
  • Ubuntu系统搭建

    一 创建环境常见问题 1 1 windows11下打开虚拟机蓝屏问题 参考这篇文章 xff0c 控制面板 xff0c 启用和关闭windows功能 xff08 对话框 xff09 113条消息 VMware安装Ubuntu开启蓝屏解决方案
  • J-Link工具查看单片机内存等信息

    1 打开下图应用 2 输入 connect xff08 连接开发板 xff09 AC78013FDLA xff08 你的单片机型号 xff09 SWD xff08 仿真器接口 xff09 1000HZ xff08 接口速度 xff09 连接
  • Qt调用ffmpeg动态库和静态库及编译ffmpeg的方法

    一 编译 二 引入ffmpeg库文件 1 Qt工程下创建lib文件夹 xff0c lib文件夹下再创建ffmepg文件夹 2 将编译好的ffmpeg里面的include 和lib文件夹粘贴到如下文件夹下 xff08 3 xff09 在 pr
  • autoware花屏重影问题

    autoware 安装 花屏 重影问题 最近尝试下autoware来做建图 xff0c 无奈各类安装太过麻烦 xff0c 这里给几个小问题做下纪律 1 xff0c 安装过程 xff0c 走的官网那个 xff0c 事实证明官网教程最全面 xf
  • linux---select,poll,epoll的原理以及优缺点

    多路转接IO xff08 也叫IO多路复用 xff09 是一种处理高并发的IO事件监控 xff0c 同时对大量的描述符进行时间监控 xff0c 监控是否具备IO条件 就绪 xff1a 包括了读就绪事件 xff08 就是有数据到来的时候 xf
  • DTAM实现

    DTAM实现 这里是实现github上DTAM的一次记录 xff0c 主要是有些步骤的记录 需要下载的源码 xff08 可以多试试几个 xff0c 按照实现可能性排序 xff09 xff1a https github com Teddybe
  • jetson镜像克隆到固态再扩容简单方法

    jetson克隆方法很多 xff0c 我是自己把之前的sd镜像克隆做成img镜像了 然后烧写后之前是64g的后续烧写都是64g的不能把新的储存设备占满 这里有一个扩容和移植到固态的方法 主要分三步 xff1a 镜像克隆和烧录到sd卡使用固态
  • Orb_slam3 ROS ,D435i使用,ubuntu编译小记

    C 43 43 版本编译 先官网下载代码 xff0c 并下载安装官网所述安装包 git clone https github com UZ SLAMLab ORB SLAM3 git ORB SLAM3 下载完编译c 43 43 版本 cd
  • d455双目相机联合IMU标定

    感谢这两位博主的优秀文章 xff1a RealSense D455的标定并运行VINS FUSION Z Jin16的博客 CSDN博客 d455 标定 Realsense D435I标定 小岛 神酱的博客 CSDN博客 d435i参数 主