zed2i相机内参标定

news/2024/11/29 11:32:04/

参考:

https://blog.csdn.net/yanpeng_love/article/details/107166922
https://blog.csdn.net/weixin_41954990/article/details/127928852

参考以上连接先安装kalibr

注意:

  • python包装不上,换成:pip install
  • 出现pyx找不到的错误:sudo apt-get install python3-pyx

1. 生成标定板

可以自己定制特定尺寸的标定板:

source ~/桌面/liweidong/kalibr_ws/devel/setup.bash
rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 4 --ny 4 --tsize 0.035 --tspace 0.2

其中,tsize为方块的边长,tspace为方块边长/方块间距离(上述参数刚好可以用A4纸张打印出来)。
同时,生成相应的配置文件aprilgrid.yaml

target_type: 'aprilgrid' #gridtype
tagCols: 4               #number of apriltags
tagRows: 4               #number of apriltags
tagSize: 0.035           #size of apriltag, edge to edge [m]
tagSpacing: 0.2          #ratio of space between tags to tagSize

根据张正友标定法,标本板需要为平面,采用纸张可能不够平整,最好用特制的标定板。实验室的标定板如下,规格为297x210mm:
f7f473fb9df222991cd888a5f7a246e.jpg
生成的配置文件如下:

target_type: 'aprilgrid' #gridtype
tagCols: 7               #number of apriltags
tagRows: 5               #number of apriltags
tagSize: 0.03           #size of apriltag, edge to edge [m]
tagSpacing: 0.2          #ratio of space between tags to tagSize

(很疑惑,我用购买的标定板的标定质量反而不如打印的A4纸)

2. 开启zed2i相机

source ~/桌面/zed/ros/catkin_ws/devel/setup.bash
roslaunch zed_wrapper zed2i.launch

3. 显示图片

开两个终端,分别输入以下命令,用以观察相机左右目图像

rqt_image_view

两个窗口分别订阅话题:
/zed2i/zed_node/left/image_rect_color/zed2i/zed_node/right/image_rect_color

4. 录制bag

相机对准标定板

rosbag record /zed2i/zed_node/imu/data /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color 

要求:

  • 相机的6个自由度都要运动到,且运动要比较缓慢
  • 标定板应当占据图像比较大的视野
    可以参考以下视频:
    https://youtu.be/puNXsnrYWTY?t=57

5. 计算相机参数

将录制的bag以及aprilgrid.yaml放到同一目录下

rosrun kalibr kalibr_calibrate_cameras --bag xxx.bag --topics /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color --models pinhole-radtan pinhole-radtan --target aprilgrid.yaml

如果依赖出现错误:

pip install -U wxPython
pip uninstall numpy
pip install numpy==1.23.5

如果焦距初始化有问题:

Initialization of focal length failed. You can enable manual input by setting ‘KALIBR_MANUAL_FOCAL_LENGTH_INIT’.
[ERROR] [1668944382.174500]: initialization of focal length for cam with topic /color failed

先输入export KALIBR_MANUAL_FOCAL_LENGTH_INIT=1,然后再输入标定命令,会再次出现上述错误,然后手动输入焦距初始值,比如513,不需要太准确。

之后需要等待一段时间,然后会生成标定报告

6. 标定报告

标定结果的质量衡量主要靠重投影误差,我标定的平均重投影误差如下:

reprojection error: [-0.000013, -0.000000] +- [0.439647, 0.382278]
reprojection error: [0.000014, -0.000000] +- [0.446480, 0.360552]

得到的内参为:

cam0:cam_overlaps: [1]camera_model: pinholedistortion_coeffs: [-0.007672411193999486, -0.0018797608319184925, 0.00010455529940025013, 0.003016299846222382]distortion_model: radtanintrinsics: [513.9484564548267, 514.419647214949, 655.6025133839975, 355.2192952629164]resolution: [1280, 720]rostopic: /zed2i/zed_node/left/image_rect_color
cam1:T_cn_cnm1:- [0.999984579215046, -0.0002977357189092575, -0.005545510395196279, -0.1198602703850598]- [0.00029918561625662975, 0.9999999212808846, 0.00026062652575081026, 0.00013190712977596532]- [0.005545432360832611, -0.0002622816436302485, 0.9999845895753918, -0.0028534346937582433]- [0.0, 0.0, 0.0, 1.0]cam_overlaps: [0]camera_model: pinholedistortion_coeffs: [-0.00881952628646651, -0.0009790074643185275, 6.896618449740411e-06, 0.0021108942872241914]distortion_model: radtanintrinsics: [512.4235378267127, 511.74360543501797, 658.7869197242953, 354.8151090771085]resolution: [1280, 720]rostopic: /zed2i/zed_node/right/image_rect_color

http://www.ppmy.cn/news/483774.html

相关文章

RealSense D435i深度相机介绍

文章目录 D435i硬件结构及各个组件原理详解前言一、硬件参数信息二、视觉处理器D4三、深度模块四、红外投影仪(Infrared Projector)五、彩色图像信号处理机(ISP)六、 IMU D435i硬件结构及各个组件原理详解 前言 RealSense 是一款立体视觉深度相机,如下图所示&…

前端布局应用

前端布局是指在网页或应用程序的前端开发中,如何组织和安排页面元素的位置、大小和样式,以实现用户界面的设计和用户体验的目标。 以下是几种常见的前端布局技术和方法: 1. 盒模型布局(Box Model Layout)&#xff1a…

苹果的安全机制

客户端安全性处理方式 网络传输协议 自定义协议 数据库 源代码混淆 现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度 加盐(Salt):在明文的固定位置插入随机串,然后再…

ios 安全区域问题

1、在ios中存在安全区域问题&#xff0c;也就是ios的刘海屏&#xff0c;解决办法 calc(constant(safe-area-inset-top/bottom/left/right)); //兼容 IOS<11.2 calc(env(safe-area-inset-top/bottom/left/right)); //兼容 IOS>11.2 2、在ios中图片下载没有缓存…

ios 安全区域

env()和constant()函数有个必要的使用前提&#xff0c;H5网页设置viewport-fitcover的时候才生效&#xff0c;小程序里的viewport-fit默认是cover。 <meta name"viewport" content"widthdevice-width, initial-scale1.0, viewport-fitcover"> env(…

苹果手机顶部安全区兼容

问题&#xff1a; 如图所示&#xff0c;标题与ios安全区域没有分开。 解决方式&#xff1a; 写一个div&#xff0c;使它高度与Ios安全区一致。将其余内容挤压到安全区下 具体代码如下 <template><div class"quiz-edit"><div class"top"…

iphoneX安全区适配

首先需要在viewport的meta中的content添加viewport-fitcover&#xff0c;开启覆盖安全区&#xff0c;此时页面内容将会覆盖整个屏幕&#xff1b; 若有内容不想出现在安全区&#xff0c;但是整个页面需要覆盖背景色&#xff0c;可添加css body{ padding-top: env(safe-area-inse…

苹果安全区设置

1&#xff1a;meta头部添加 <!-- 在 head 标签中添加 meta 标签&#xff0c;并设置 viewport-fitcover 值 --><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, minimum-scale1.0, viewport-fitcover"/>…