当前位置: 首页 > news >正文

使用kalibr_calibration标定相机(realsense)和imu(h7min)

vslam-evaluation/VINS/Installation documentation/4.IMU和相机联合标定kalibr_calibration.md at master · DroidAITech/vslam-evaluation · GitHub

目录

1.kalibr安装

1.1安装依赖项

1.2创建工作空间

1.3下载kalibr并编译

1.4设置环境变量

2.准备标定板

3.配置驱动和打开realsense摄像头

3.1更新系统

3.2注册服务器公钥

3.3添加Intel RealSense仓库

3.4安装realsense SDK

3.5测试RealSense D435/D435i

3.6ROS环境下的配置

3.7启动ROS节点并测试摄像头

3.8查看相机内参等信息通过rostopic echo /camera/color/data_raw

4.用imu_utils标定IMU数据 

注意:

5.录制imu和相机的bag包

6.相机、imu、标定板yaml文件


1.kalibr安装

1.1安装依赖项

sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-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-devsudo pip install python-igraph --upgrade

1.2创建工作空间

mkdir -p ~/kalibr_workspace/srccd ~/kalibr_workspacesource /opt/ros/kinetic/setup.bashcatkin initcatkin config --extend /opt/ros/kineticcatkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

1.3下载kalibr并编译

cd ~/kalibr_workspace/srcgit clone https://github.com/ethz-asl/Kalibr.gitcd ~/kalibr_workspacecatkin build -DCMAKE_BUILD_TYPE=Release -j4 

1.4设置环境变量

source ~/kalibr_workspace/devel/setup.bash

2.准备标定板

标定板可以用 kalibr 提供的pdf 下载地址为:https://github.com/ethz-asl/kalibr/wiki/downloads, 由于Aprilgrid能提供序号信息, 能够防止姿态计算时出现跳跃的

情况,所以这里采用Aprilgrid 6x6 0.8x0.8 m (A0 page)进行标定。

我下载了这个pdf, 打印成了A4纸大小,在标定前, 注意测量格子的尺寸信息填入yaml文件, 尺寸信息具体是哪些数据可以看看kalibr的说明,说明的网址为: 

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

3.配置驱动和打开realsense摄像头

3.1更新系统

sudo apt-get update && sudo apt-get upgrade

3.2注册服务器公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

3.3添加Intel RealSense仓库

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u

3.4安装realsense SDK

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

3.5测试RealSense D435/D435i

realsense-viewer

3.6ROS环境下的配置

sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-$ROS_DISTRO-realsense2-description

3.7启动ROS节点并测试摄像头

roslaunch realsense2_camera rs_camera.launch
//see images
rosrun image_view image_view image:=/camera/color/image_raw

3.8查看相机内参等信息通过rostopic echo /camera/color/data_raw

4.用imu_utils标定IMU数据 

双目相机 -- IMU联合标定_双目+imu 如何标定-CSDN博客

使用Kalibr标定相机和IMU(ZED+px4)外参-CSDN博客(我参考了这篇博客的imu)

sudo apt-get install libdw-dev

4.1下载imu_utils和code_utils,并将imu_utils和code_utils放在工作空间下。

code_utils.zip

imu_utils.zip

注意:

1. code_utils 依赖 ceres库, 需要先全局安装ceres库,okvis等内部的ceres不行。

2. 由于imu_utils依赖code_utils,所以先把code_utils放在工作空间的src下面,然后编译。

3. 编译code_utils 报错, fatal error: backward.hpp: No such file or directory

解决办法: 在code_utils下面找到sumpixel_test.cpp,修改#include “backward.hpp” 为

#include “code_utils/backward.hpp” 即可编译成功。

cd catkin_ws
catkin_make

4.2编译成功以后,再把imu_utils放到工作空间的src下面,进行编译。

cd catkin_ws
catkin_make

4.3让IMU静止不动两个小时,录制IMU的bag.

cd MYNT-EYE-D-SDK
source wrappers/ros/devel/setup.bash
roslaunch mynteye_wrapper_d display.launch
rosbag record /mynteye/imu/data_raw -O imu.bag

4.4两个小时以后按Ctrl+C完成录制。

4.5获得这四个参数

Gyr:avg-axis:gyr_n: 3.1820671461855504e-03gyr_w: 3.0693398103399251e-05
Acc:avg-axis:acc_n: 2.6449533258549235e-02acc_w: 7.2111910796954259e-04

5.录制imu和相机的bag包

rosbag record /camera/color/image_raw /mavros/imu/data_raw -O imu_camera.bag

注意:1.录制bag包的时候imu的频率应为200hz左右

2.录制的时候要注意按照官方的说法-充分激励IMU- 绕3个轴旋转和3个方向的平移,这里有个官方视频介绍,打不开的话有人把它搬到B站上了https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY
3.三个topic按照自己的情况改。另外可以再加两个(非必要): /camera/left/camera_info /camera/right/camera_info

4.录制时间大于30min

6.相机、imu、标定板yaml文件

相机

cam0:cam_overlaps: [] camera_model: "pinhole"  # 相机模型,kalibr也支持鱼眼模型distortion_coeffs: [0.0, 0.0, 0.0, 0.0]  # 相机畸变参数distortion_model: "radtan"  # 畸变模型intrinsics: [603.3211669921875, 602.70361328125, 324.1352844238281, 242.0079803466797]  # 内参resolution: [640, 480]  # 分辨率rostopic: "/camera/color/image_raw"  # ROS话题

imu

rostopic: /mavros/imu/data_raw
update_rate: 195 #Hzaccelerometer_noise_density: 0.1 #VINS默认 0.2
accelerometer_random_walk: 0.03 #0.05
gyroscope_noise_density: 0.02 #0.02
gyroscope_random_walk: 0.00004 #4e-5

target

#example for aprilgridtarget_type: 'aprilgrid' #gridtypetagCols: 6                  #number of apriltagstagRows: 6                  #number of apriltagstagSize: 0.02              #size of apriltag, edge to edge [m]tagSpacing: 0.3             #ratio of space between tags to tagSize a=0.02cm b=0.006cm

7.运行获取结果

rosrun kalibr kalibr_calibrate_imu_camera --imu /home/fhzn/calib/imu.yaml --cam /home/fhzn/calib/camera.yaml --target /home/fhzn/calib/target.yaml --bag /home/fhzn/calib/imu_camera.bag --show-extraction

使用kalibr标定双目相机以及IMU--安装运行标定全过程以及踩坑记录-CSDN博客

相关文章:

使用kalibr_calibration标定相机(realsense)和imu(h7min)

vslam-evaluation/VINS/Installation documentation/4.IMU和相机联合标定kalibr_calibration.md at master DroidAITech/vslam-evaluation GitHub 目录 1.kalibr安装 1.1安装依赖项 1.2创建工作空间 1.3下载kalibr并编译 1.4设置环境变量 2.准备标定板 3.配置驱动和打…...

绿色工厂认定流程

以下是认定绿色工厂的一般流程: 编制年度创建计划 各省辖市、省直管县(市)会结合本地区重点产业发展现状,挑选一批基础条件良好、有创建意愿和条件的企业进行储备培育,并依据当地工业企业发展实际情况按年度制定绿色工…...

《Python游戏编程入门》注-第5章5

《Python游戏编程入门》的“Analog Clock示例程序”部分讲解了模拟时钟的实现方法。该模拟时钟可以通过时针、分针和秒针的旋转,显示当前时间,如图1所示。 图1 模拟时钟 1 绘制圆 从图1中可以看出,时钟的边缘是一个白色的圆,可以通过如图2所示的代码进行绘制。 图2 绘制圆…...

LangChain Ollama实战文献检索助手(二)少样本提示FewShotPromptTemplate示例选择器

本期是用样例来提示大模型生成我们想要的答案。即在输入中给定提示的样例,以及提示模板,然后匹配较相关的样例进行文献综述。 创建示例样本FewShotPromptTemplate 这里我用GTP-o1生成了几个回答,作为样本 samples [{"theme": &…...

K倍区间 C++

1230. K倍区间 - AcWing题库 一开始想到的用前缀和来做&#xff0c;时间复杂度为O(n^2),Time Limit Exceeded #include <iostream> #include <cstring> #include <algorithm> #include <cstdio>using namespace std;const int N 100010;int n,k; in…...

Linux - 弯路系列3:安装和编译libvirt-4.5.0

系统&#xff1a;Anolis8&#xff08;离线&#xff09; 目录 1、步骤2、make过程中的错误错误1&#xff1a;error: xdr_u_int64_t undeclared (first use in this function) 3、make install的错误错误1&#xff1a;/usr/bin/mkdir -p ""/usr/local/etc/libvirt/nwf…...

Jenkins插件使用问题总结

Git Push插件 插件介绍 主要是用于git推送代码到远程仓库中使用&#xff0c;插件地址 pipeline中使用 官方说明中只有一句代码gitPush(gitScm: scm, targetBranch: env.BRANCH_NAME, targetRepo: origin) 流水线语法中也做的不齐全所以一开始我老是设置错&#xff0c;导致代…...

u盘怎么重装电脑系统_u盘重装电脑系统步骤和详细教程【新手宝典】

u盘怎么重装电脑系统&#xff1f;一个u盘怎么重装电脑系统呢&#xff0c;需要将u盘制作成u盘启动盘pe&#xff0c;然后通过U盘启动盘进入pe进行安装系统&#xff0c;下面小编就教大家u盘重装电脑系统步骤和详细教程。 u盘启动是什么意思&#xff1f; U盘启动盘是一种具有特殊功…...

Sql server查询数据库表的数量

SELECT count(*) FROM sys.objects WHERE typeU --统计表数量 SELECT NAME FROM sys.objects WHERE typeU --列出表名称 或者 SELECT COUNT(*) FROM SysObjects Where XTypeU --统计表数量 SELECT Name FROM SysObjects Where XTypeU --列出表名称 --判断字…...

Linux学习笔记之软件包管理RPM与YUM

RPM包的管理 介绍 RPM&#xff08;RedHat Package Manager&#xff09;用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。他生成具有.RPM扩展名的文件。RPM类似Windows的setup.exe&#xff0c;这一文件格式虽然打上了RedHat的标志&#xff0c;但理念…...

15分钟学 Go 第 41 天:中间件的使用

第41天&#xff1a;中间件的使用 目标&#xff1a;学习如何在Go语言的Web服务中使用中间件 中间件&#xff08;Middleware&#xff09;是Web开发中的一种常见设计模式&#xff0c;通常用于处理请求和响应过程中的一些共通功能。比如&#xff1a;日志记录、认证授权、请求处理…...

《Python 与 SQLite:强大的数据库组合》

《Python 与 SQLite&#xff1a;强大的数据库组合》 一、Python 与 SQLite 的结合二、安装与连接&#xff08;一&#xff09;安装 SQLite 模块&#xff08;二&#xff09;连接到数据库 三、数据库操作&#xff08;一&#xff09;创建表格&#xff08;二&#xff09;插入数据&am…...

Golang | Leetcode Golang题解之第552题学生出勤记录II

题目&#xff1a; 题解&#xff1a; const mod int 1e9 7type matrix [6][6]intfunc (a matrix) mul(b matrix) matrix {c : matrix{}for i, row : range a {for j : range b[0] {for k, v : range row {c[i][j] (c[i][j] v*b[k][j]) % mod}}}return c }func (a matrix) p…...

Vue3 常用代码指南手抄,超详细 cheatsheet

一、Vue3 基础 1.1 创建 Vue3 项目 使用 Vite 创建 npm create vitelatest my-vue-app -- --template vue cd my-vue-app npm install npm run dev使用 Vue CLI 创建 npm install -g vue/cli vue create my-vue-app1.2 项目结构 my-vue-app ├── node_modules ├── pu…...

结构体是否包含特定类型的成员变量

结构体是否包含特定类型的成员变量 在C中&#xff0c;可以使用模板元编程和类型特性&#xff08;type traits&#xff09;来判断一个结构体是否包含特定类型的成员变量。这通常通过std::is_member_object_pointer类型特性来实现&#xff0c;它可以用来检查给定的成员指针是否指…...

堆排序与链式二叉树:数据结构与排序算法的双重探索

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 引言 一.堆排序 1.1 版本一 核心概念 堆排序过程 1.2 版本二 堆排序函数 HeapSort 向下调整算法 AdjustDown 向上调整算法 AdjustUp 二.链式二叉树 2.1 前中后序遍历 链式二叉树的结构 创建链式二叉树 前序遍历…...

用 Python 从零开始创建神经网络(四):激活函数(Activation Functions)

激活函数&#xff08;Activation Functions&#xff09; 引言1. 激活函数的种类a. 阶跃激活功能b. 线性激活函数c. Sigmoid激活函数d. ReLU 激活函数e. more 2. 为什么使用激活函数3. 隐藏层的线性激活4. 一对神经元的 ReLU 激活5. 在隐蔽层中激活 ReLU6. ReLU 激活函数代码7. …...

使用 Flask 和 ONLYOFFICE 实现文档在线编辑功能

提示&#xff1a;CSDN 博主测评ONLYOFFICE 文章目录 引言技术栈环境准备安装 ONLYOFFICE 文档服务器获取 API 密钥安装 Flask 和 Requests 创建 Flask 应用项目结构编写 app.py创建模板 templates/index.html 运行应用功能详解文档上传生成编辑器 URL显示编辑器回调处理 安全性…...

【C++】【算法基础】序列编辑距离

编辑距离 题目 给定 n n n个长度不超过 10 10 10 的字符串以及 m m m 次询问&#xff0c;每次询问给出一个字符串和一个操作次数上限。 对于每次询问&#xff0c;请你求出给定的 n n n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个…...

【Android】轮播图——Banner

引言 Banner轮播图是一种在网页和移动应用界面设计中常见的元素&#xff0c;主要用于在一个固定的区域内自动或手动切换一系列图片&#xff0c;以展示不同的内容或信息。这个控件在软件当中经常看到&#xff0c;商品促销、热门歌单、头像新闻等等。它不同于ViewPgaer在于无需手…...

Stata 数据处理实战:时间序列数据的日期转换与聚合

1. 时间序列数据处理的常见痛点 刚接触时间序列分析的朋友们&#xff0c;经常会遇到这样的困扰&#xff1a;从Excel导入的数据明明是日期格式&#xff0c;到了Stata里却变成了看不懂的字符&#xff1b;想按周汇总销售数据&#xff0c;却发现系统根本不认识"2023-W15"…...

利用taotoken token plan套餐为stm32长期ai项目控制成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用 Taotoken Token Plan 套餐为 STM32 长期 AI 项目控制成本 对于计划在 STM32 产品中持续集成 AI 功能的项目负责人而言&#x…...

构建自动化编译系统:Makefile递归遍历与智能目录生成实践

1. 为什么需要自动化编译系统 如果你曾经维护过一个包含几十个源文件的中大型C/C项目&#xff0c;肯定经历过这样的痛苦&#xff1a;每次新增一个源文件&#xff0c;都要手动修改Makefile&#xff1b;项目结构调整时&#xff0c;编译规则需要全部重写&#xff1b;不同模块之间的…...

为智能硬件项目集成大模型能力利用Taotoken实现低成本高可用的方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为智能硬件项目集成大模型能力利用Taotoken实现低成本高可用的方案 在智能家居、物联网等嵌入式硬件项目中引入大模型能力&#xf…...

低成本传感器动态校准:SenDaL框架原理与应用

1. 低成本传感器校准的行业痛点与SenDaL解决方案在智能家居和工业物联网领域&#xff0c;我们经常面临一个尴尬的境地&#xff1a;高精度传感器价格昂贵难以大规模部署&#xff0c;而低成本传感器的数据质量又令人担忧。以PM2.5监测为例&#xff0c;专业级β射线传感器的价格可…...

AI代码工程化实战:从生成到部署的确定性框架

1. 项目概述&#xff1a;从“AI画饼”到“AI交付”的工程化桥梁如果你和我一样&#xff0c;在过去一年里深度使用过 Claude Code、Cursor 或者 GitHub Copilot&#xff0c;那你一定经历过这种场景&#xff1a;AI 助手噼里啪啦生成了一大堆看起来非常酷炫的代码&#xff0c;你兴…...

AI编程工具的内卷:Copilot、Cursor、通义灵码,谁能笑到最后?

当“内卷”的风吹到AI编程工具2026年&#xff0c;AI编程工具已不再是新鲜事物&#xff0c;而是开发者工具箱中的标配。从最初的代码补全&#xff0c;到如今的全栈智能体&#xff0c;这个赛道正经历着一场前所未有的“内卷”。GitHub Copilot、Cursor、通义灵码三足鼎立&#xf…...

Windows右键菜单为何变得臃肿?ContextMenuManager帮你重新掌控

Windows右键菜单为何变得臃肿&#xff1f;ContextMenuManager帮你重新掌控 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单的混乱而烦…...

有机颜料哪个更前沿

下游行业不断升级&#xff0c;从环保要求到个性化着色需求都在提升&#xff0c;很多采购和技术负责人都会问&#xff1a;现在有机颜料哪个方向更前沿&#xff1f;其实有机颜料的技术迭代始终围绕下游需求走&#xff0c;没有绝对的“最优前沿”&#xff0c;只有更适配自身需求的…...

基于Godot引擎的经典游戏重制:OpenClaw项目架构与实现深度解析

1. 项目概述与核心价值最近在独立游戏开发圈里&#xff0c;一个名为“OpenClaw”的开源项目热度不低。它的全称是“GambitGamesLLC/openclaw-godot”&#xff0c;简单说&#xff0c;这是一个基于Godot引擎&#xff0c;对经典DOS平台动作冒险游戏《The Claw》进行的开源重制版。…...