Kalibr标定单个相机全流程(超超超级详细)

2024-03-16 23:59

本文主要是介绍Kalibr标定单个相机全流程(超超超级详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:一些闲话


笔者写下这篇面向纯小白的文章的原因是因为笔者也是一个纯小白,想要记录一下自己接下来这段时间的点点滴滴,当作记录一下自己的成长。回顾我的大学两年,大部分时间都在彷徨犹豫选择中度过,没有真正沉下心去学习或者做些项目,借这个机会,我就以开始写博文的方式倒逼自己做些记录和坚持下去,也希望大家能坚持做困难但是有意义的事情。

一.下载VMware并且安装虚拟机

这个网上教程比较多,需要注意的是如果要运行Kalibr,内存得选择8G以上,因为后面如果要下载和配置Kalibr,内存过小会出现一些莫名其妙的错误。我下载的是20.04版本的ubuntu,所以后面的方式都基于这个版本,但是我看着好像是18.04安装和配置Kalibr的博文比较多,如果你也像我一样一开始就选择了20.04,那本篇大概会具有更多的参考价值。还有值得注意的是需要了解一些ubuntu的基本概念,有利于后续工作展开

安装Ubuntu推荐博文:安装Ubuntu

Ubuntu基本概念:Ubuntu入门

二.下载ros

值得注意的是,rosd版本和ubuntu是适配的,所以要选择相对应的版本。可以预先了解一下ros的基本概念和基本工作模式,但基本不了解也可以。推荐古月居的b站教程,或者随便找个ros的基本介绍博文看也可以。

下载ros推荐博文:ROS安装

(博主很早安了ros,当时什么都不知道,还是找淘宝安的,实在不行找淘宝,不丢人)

三.安装并且配置Kalibr

最最最关键的是要先看原文,原文讲述了所有你需要知道的东西,虽然仍然存在一些踩坑以及最大的问题-看不懂英文等,但是还是推荐先阅读原文,原文中看不懂的部分再结合博主的博文对他翻译,这是最优解。

看完原文就可以开始找下载的博文进行阅读了,在阅读完之后,还要下载python3等,这些都是我们安装的基础,这些csdn的文章也很多,笔者不再赘述。遇到命令错误的时候下载对应的东西就可以

下载Kalibr并且成功安装和配置困难就成功了一大步,笔者是根据两篇博文来回换着敲命令(任何一篇在我这里都没有单独成功),最后才成功把所有包都安装上。Kalibr下载博文1,Kalibr下载博文2(命令都要敲在终端)

这里有个比较抽象的问题,一是可能之前设置的内存配置不够大,或者是网速等等问题,导致包一下子没有办法全部安装,然后就得重复地运行编译指令,他会慢慢地陆续成功;二是可能是有其他问题(笔者没有遇到),可以参考以下这个博文编译错误

四.收集数据

首先需要获取标定板,参考相对应的博文这篇文章中的准备部分。标定板的意思就是一块固定参数的板子,电脑通过传输给他的标准标定板参数和图像中标定板中的参数得到相机的内参等。最保险的肯定是去官网下载示例中的标定板,下载第一块April 6x6的pdf就可以(可能需要翻一下才能下载),然后按照原尺寸打出来贴在硬板子上。再用相机从各个角度拍照(需要30-50张不嫌多)注意要拍全

接下来到刚刚下载标定板的网站将对应April 6x6的yawl文件也下载一下。

五.建立共享文件夹

刚刚拍的照片和yawl文件还都在主机上,怎么把他转移到虚拟机,对笔者而言最简单的方法就是建立共享文件夹,可以参考以下博文共享文件夹的创建。

建立后,将照片和yawl文件放入,就可以将主机文件传入虚拟机,这些文件在Other Location的Computer的mnt的hgfs里可以找到。

六.打包成bag

在找到共享文件夹后,就可以复制出其中的图像文件到指定的工作文件夹。笔者是复制到了Downloads下面新建的dataset-dir文件夹中新建的cam0文件夹中,然后再downloads文件夹中打开终端,输入指令:

source ~/kalibr_ws/devel/setup.bash //kalibr_ws就是前面教程让你创建的kalibr工作文件夹,有的博主是kalibr_workspace,我这里是kalibr_ws
rosrun kalibr kalibr_bagcreater --folder dataset-dir/. --output-bag awsome.bag

可以用以下指令看一下生成的awsome.bag里面有些什么

rosbag info awsome.bag

注意图片的命名需要按照指定的格式要有19位,可以尝试用以下博文的办法。不用管imu

改变图片名称

打包bag推荐博文:要钱的详细文章

简单文章

七.运行标定程序

运行标定程序还是先需要知道需要输入什么量,依旧是推荐先看原文,以下文章有详解四个输入量

1.bag文件

2.yawl文件(之前下载的,要复制到与bag一个文件夹)

3.相机模型文件,就是你所需要的内参的模板,针孔相机(手机)就选pinhole-radtan

4.topic,就是bag文件中相机发布图像的topic话题

八,得到结果

原文有对输出文件的详解

这篇关于Kalibr标定单个相机全流程(超超超级详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817171

相关文章

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

Java 操作 MinIO详细步骤

《Java操作MinIO详细步骤》本文详细介绍了如何使用Java操作MinIO,涵盖了从环境准备、核心API详解到实战场景的全过程,文章从基础的桶和对象操作开始,到大文件分片上传、预签名URL生成... 目录Java 操作 MinIO 全指南:从 API 详解到实战场景引言:为什么选择 MinIO?一、环境

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

Python操作Excel的实用工具与库openpyxl/pandas的详细指南

《Python操作Excel的实用工具与库openpyxl/pandas的详细指南》在日常数据处理工作中,Excel是最常见的数据文件格式之一,本文将带你了解openpyxl和pandas的核心用法,... 目录一、openpyxl:原生 Excel 文件操作库1. 安装 openpyxl2. 创建 Exc

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数