【摄像头标定】使用kalibr进行双目摄像头标定(ros1、ros2)

使用kalibr进行双目摄像头标定

    • 前言
    • 标定板
    • 标定
      • ①板端准备和录制
      • ②上位机准备和标定

前言

本文不是纯用ros1进行标定,需要ros1和ros2通信。给使用ros2进行开发,但又想用kalibr标定双目摄像头的小伙伴一个教程。本文双目摄像头的数据发布使用ros2,所以需要用到ros1_bridge功能包将ros2和ros1的话题进行适配,使得ros1环境中可以接收ros2的话题,然后使用rosbag录制话题数据,完成后将bag包放到虚拟机的ubuntu中,使用kalibr进行标定。
前提是自己已经写好了双目相机图像的发布节点。

标定板

标定板使用6×6的Aprilgrid,目前网上没找到这个标定板的pdf,可以参考下面这个博客自己制作:
https://blog.csdn.net/h1527820835/article/details/123397154
在这里插入图片描述

标定

①板端准备和录制

准备:
如果是使用ros1进行开发的不用看此教程。板端使用ros2进行开发的往下看,在板端再安装对应版本的ros1,一般就是noetic,可以之间使用鱼香ros的一键安装指令:wget http://fishros.com/install -O fishros && . fishros
新开一个终端,source ros2的环境变量,在ros2的环境下安装ros1_bridge:

source /opt/ros/foxy/setup.bash
sudo apt install ros-foxy-ros1-bridge

安装完成即可。

录制:
一共需要开启四个终端,分别是ros1环境下的roscore、ros1环境下的rosbag、ros1,ros2环境下的ros1_bridge、ros2环境下的发布图像节点。下面以小标号的形式展示,每个代表一个终端:

source /opt/ros/noetic/setup.bash
roscore

source /opt/ros/foxy/setup.bash
source /opt/ros/noetic/setup.bash
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

source /opt/ros/foxy/setup.bash
ros2 launch hobot_t1_cam mipi_cam.launch.py mipi_out_format:=bgr8 mipi_io_method:=ros mipi_framerate:=4             //这个是我的图像发布节点,发布图像数据话题:/image_raw_left,/image_raw_right

source /opt/ros/noetic/setup.bashrosbag record /image_raw_right /image_raw_left -O stereo_4hz.bag                                //两个话题分别对应自己发布双目相机图像数据话题

录制时固定相机,手持标定板移动,最好每个角落都要有图像,录个几十秒即可。这样板端就完成了,之后的操作都在虚拟机的ubuntu里。

②上位机准备和标定

准备:
这里上位机使用vmware安装ubuntu20.04,有条件的也可以双系统,比起虚拟机运行,性能会更好。ubuntu安装完成后,同样使用鱼香ros一键安装ros1-noetic:wget http://fishros.com/install -O fishros && . fishros,安装完ros1之后,顺便再使用这个命令安装一下rosdep。

依赖安装:

sudo apt-get install -y \git wget autoconf automake nano \libeigen3-dev libboost-all-dev libsuitesparse-dev \doxygen libopencv-dev \libpoco-dev libtbb-dev libblas-dev liblapack-dev libv4l-dev

标定:
⚪工作空间src中,下载Kalibr源码,编译:

mkdir -p ~/my_ws/src
cd ~/my_ws/src
git clone https://github.com/ethz-asl/kalibr.git
cd ..
source /opt/ros/noetic/setup.bash
catkin_make
source devel/setup.bash

⚪将录制得到的bag文件拷贝到/src/kalibr文件夹里,新建april_6_6.yaml也放在这个目录,yaml代码如下:

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.021           #size of apriltag, edge to edge [m]
tagSpacing: 0.28          #ratio of space between tags to tagSize
codeOffset: 0            #code offset for the first tag in the aprilboard
6,6表示标定板是六行六列,0.021表示每个方块21mm,tagSpacing表示小黑方块长度除以大黑方块长度的值

⚪终端运行双目标定功能包:

rosrun kalibr kalibr_calibrate_cameras --bag src/kalibr/stereo_4hz.bag --topics /image_raw_right /image_raw_right --models pinhole-radtan pinhole-radtan --target src/kalibr/april_6_6.yaml --show-extraction

bag:录制的双目视频;topic:要和板端运行录制代码中话题的顺序一样;models:相机模型,我的是带畸变的针孔,所以是pinhole-radtan;target:标定板的配置文件,上面自己新建了;需要注意的是–models pinhole-radtan pinhole-radtan,表示的是摄像头的模型,我这里两个都是针孔摄像头,具体自己的型号需要问厂家.加上 --show-extraction即可可视化角点图

⚪运行可能会报错:“ImportError: No module named igraph”,安装以下即可:

1、sudo apt-get install -y libigraph0-dev
2、pip install python-igraph==0.7.1.post6
python2.7只支持0.8X以前的版本

安装完之后再次运行双目标定功能包,标定结束后在kalibr文件中会生成三个文件:

  • .yaml:保存着左右相机的内参,以及左相机到右相机的变换矩阵
  • .pdf:保存着各种图,比如重投影误差图
  • .txt:含有相机内参以及重投影误差

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收银系统源码-千呼新零售2.0【线上营销】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看&a…

Js逆向爬虫基础篇

这里写自定义目录标题 逆向技巧断点一 、请求入口定位1. 关键字搜索2. 请求堆栈3. hook4. JSON.stringify 二、响应入口定位:1. 关键字搜索2. hook3. JSON.parse 逆向技巧 断点 普通断点 条件断点 日志断点 XHR断点 一 、请求入口定位 1. 关键字搜索 key关…

办公软件的答案?ONLYOFFICE 桌面应用编辑器会是最好用的 Office 软件?ONLYOFFICE 桌面编辑器使用初体验

文章目录 📋前言🎯什么是 ONLYOFFICE🎯 主要功能介绍及 8.1 新功能体验🎯 在线体验📝最后 📋前言 提到办公软件,大家最常用的可能就是微软的 Microsoft Office 和国产的 WPS Office。这两款软件…

jenkins环境搭建--关于jenkins在Ubuntu下的安装篇(一)

在ubuntu下使用命令进行下载安装包: 关于jenkins的安装有多种,可以借助docker容器进行安装,也可以通过传统方法手动一步步的进行安装,以下介绍手动一步步的安装方法,后续我们将解释关于jenkins的相关配置以及实战使用…

欧盟指控苹果应用商店规则非法压制竞争,面临巨额罚款风险

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Excel 宏录制与VBA编程 —— 14、使用VBA处理Excel事件

简介 若希望特定事件处理程序在触发特定事件时运行,可以为 Application 对象编写事件处理程序。 Application 对象的事件处理程序是全局的,这意味着只要 Microsoft Excel 处于打开状态,事件处理程序将在发生相应的事件时运行,而不…

计算机网络 交换机的基本配置

一、理论知识 1.三种模式: ①用户模式:当登录路由器后,系统自动进入用户EXEC命令模式。 例如: Router> 在用户模式状态下,用户只能查看路由器的连接状态和基本信息,访问其他网络和主机&#xff0c…

数据库管理与数据库语句

数据库用户管理及高级sql语句 数据库管理 数据库用户管理 mysql权限表 在mysql中mysql库中的user表是最重要的权限表,记录允许连接到服务器的账号信息以及全局权限, 在mysql库中db和host表也是重要的权限表 db表中存储了用户对某个数据库的操作权限&…

DataGrip 2024 mac/win版:让数据库管理更简单

JetBrains DataGrip 2024 是一款专为数据库开发者设计的集成开发环境(IDE),它凭借其卓越的性能和丰富的功能,为数据库管理提供了前所未有的便利。 DataGrip 2024 mac/win版获取 DataGrip 2024 支持几乎所有主流的关系型数据库管理系统,如 My…

浅谈目标检测之YOLO(You Only Look Once)v1

简介:本文章要介绍的YOLOv1算法,它与之前的目标检测算法如R-CNN等不同,R-NN等目标检测算法是一种两阶段(two-stage)算法,步骤为先在图片上生成候选框,然后利用分类器对这些候选框进行逐一的判断…

记录一下MATLAB优化器出现的问题和解决

今天MATLAB优化器出了点问题。我想了想,决定解决一下,不然后面项目没有办法进行下去。 我忘了截图了。 具体来说,是出现了下面的问题。 Gurobi: Cplex: 在上次为了强化学习调整了Pytoch环境以后(不知道是不是这个原因&#…

仓库管理系统09--修改用户密码

1、添加窗体 2、窗体布局控件 UI设计这块还是传统的表格布局&#xff0c;采用5行2列 3、创建viewmodel 4、前台UI绑定viewmodel 这里要注意属性绑定和命令绑定及命令绑定时传递的参数 <Window x:Class"West.StoreMgr.Windows.EditPasswordWindow"xmlns"http…

制造业工厂的管理到底有多难

一、引言 随着全球经济的不断发展&#xff0c;制造业作为实体经济的核心&#xff0c;对国家的经济增长起着至关重要的作用。然而&#xff0c;制造业工厂的管理却是一项复杂而艰巨的任务。本文将深入探讨制造业工厂管理所面临的挑战&#xff0c;并提出相应的应对策略。 二、制造…

TCP: 传输控制协议

TCP: 传输控制协议 TCP的服务TCP 的首部小结 本系列文章旨在巩固网络编程理论知识&#xff0c;后续将结合实际开展深入理解的文章。 TCP的服务 T C P和U D P都使用相同的网络层&#xff08;I P&#xff09;&#xff0c;T C P却向应用层提供与U D P完全不同的服务。 T C P提供一…

【已解决】Python报错:AttributeError: module ‘json‘ has no attribute ‘loads‘

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

图片如何去水印,分享4个小妙招,手把手教会你!

作为一个经常逛社区网站下载表情包、头像的人&#xff0c;遇到的一个大难题就是图片有水印。如何才能快速去除水印&#xff1f;询问了一圈身边朋友&#xff0c;搜集了各种资料&#xff0c;小编整理了4个超好用的方法。 如果大家和小编一样&#xff0c;能坐着就不站着&#xff0…

一次DC1靶机的渗透测试

确定目标IP&#xff1a; nmap -sP 192.168.11.1/24 发现目标机器 扫描开放的端口&#xff1a; nmap -T4 -A -v 192.168.11.145 发现开放了一个80端口&#xff0c;并且给出了是Drupal的管理系统 浏览器访问这个服务&#xff1a; 因为这是一个Drupal的管理系统&#xff0c;那么…

利用第三方服务对目标进行被动信息收集防止被发现(web安全白帽子)

利用第三方服务对目标进行被动信息收集防止被发现&#xff08;web安全白帽子&#xff09; 1 被动信息收集1.1 信息收集内容1.2 信息用途 2 信息收集-DNS2.1 DNS信息收集NSLOOKUP2.1.1 ping2.1.2 nslookup 2.2 DNS信息收集-DIG&#xff08;此命令查到的结果更复杂些&#xff0c;…

算法训练营day19--530.二叉搜索树的最小绝对差+501.二叉搜索树中的众数+236. 二叉树的最近公共祖先

一、530.二叉搜索树的最小绝对差 题目链接&#xff1a;https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 文章讲解&#xff1a;https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF…

MAB规范(3):Chapter6 Glossary 术语表

第6章 - 术语表 此章不做过多的批注&#xff0c;都是些简单的术语解释。