kalibr标定ZED2i双目加imu

 一、录制bag

本人使用的zed2i相机。

rosbag record -O 32 /zed2i/zed_node/imu/data /zed2i/zed_node/imdata_raw  /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color /zed2i/zed_node/left_raw/image_raw_color /zed2i/zed_node/right_raw/image_raw_color

我录制了相机自我去畸变和原本图像的双目图像,如果你也使用的ZED相机,推荐查看这篇博客,了解各个话题的含义:

双目立体视觉(3)- ZED2 & ROS Melodic 发布RGB图像及深度信息_zed2官方文档-CSDN博客

 我电脑18.04,cuda11.4,zedsdk 3.8  

 图像分辨率,设置的1280*720,10hz  ,Imu 300hz 录制1min左右,频率官网说调到4hz最好,之前标定发现不改也可以,如果修改可以使用以下命令

举例:

rosrun topic_tools throttle messages /zed2i/zed_node/right_raw/image_raw_color 4.0 /right/image_raw

 以下是我的配置文件,一些自己尝试出来的注意事项,希望给大家避坑:

1、zed2i.yaml

# params/zed2i.yaml
# Parameters for Stereolabs ZED2 camera
---general:camera_model:               'zed2i'depth:min_depth:                  0.7             # Min: 0.2, Max: 3.0 - Default 0.7 - Note: reducing this value wil require more computational power and GPU memorymax_depth:                  10.0             # Max: 40.0pos_tracking:imu_fusion:                 true            # enable/disable IMU fusion. When set to false, only the optical odometry will be used.sensors:sensors_timestamp_sync:     false           # Synchronize Sensors messages timestamp with latest received frame 不能开,开会极大降低IMU频率max_pub_rate:               200.            # max frequency of publishing of sensors data. MAX: 400. - MIN: grab rate imu的频率,开到400实际值会在360附近publish_imu_tf:             true            # publish `IMU -> <cam_name>_left_camera_frame` TFobject_detection:od_enabled:                 false           # True to enable Object Detection [not available for ZED]model:                      0               # '0': MULTI_CLASS_BOX - '1': MULTI_CLASS_BOX_ACCURATE - '2': HUMAN_BODY_FAST - '3': HUMAN_BODY_ACCURATE - '4': MULTI_CLASS_BOX_MEDIUM - '5': HUMAN_BODY_MEDIUM - '6': PERSON_HEAD_BOXconfidence_threshold:       50              # Minimum value of the detection confidence of an object [0,100]max_range:                  15.             # Maximum detection rangeobject_tracking_enabled:    true            # Enable/disable the tracking of the detected objectsbody_fitting:               false           # Enable/disable body fitting for 'HUMAN_BODY_X' modelsmc_people:                  true            # Enable/disable the detection of persons for 'MULTI_CLASS_BOX_X' modelsmc_vehicle:                 true            # Enable/disable the detection of vehicles for 'MULTI_CLASS_BOX_X' modelsmc_bag:                     true            # Enable/disable the detection of bags for 'MULTI_CLASS_BOX_X' modelsmc_animal:                  true            # Enable/disable the detection of animals for 'MULTI_CLASS_BOX_X' modelsmc_electronics:             true            # Enable/disable the detection of electronic devices for 'MULTI_CLASS_BOX_X' modelsmc_fruit_vegetable:         true            # Enable/disable the detection of fruits and vegetables for 'MULTI_CLASS_BOX_X' modelsmc_sport:                   true            # Enable/disable the detection of sport-related objects for 'MULTI_CLASS_BOX_X' models

 2、common.yaml

# params/common.yaml
# Common parameters to Stereolabs ZED and ZED mini cameras
---# Dynamic parameters cannot have a namespace
brightness:                 4                                   # Dynamic
contrast:                   4                                   # Dynamic
hue:                        0                                   # Dynamic
saturation:                 4                                   # Dynamic
sharpness:                  4                                   # Dynamic
gamma:                      8                                   # Dynamic - Requires SDK >=v3.1
auto_exposure_gain:         true                                # Dynamic
gain:                       100                                 # Dynamic - works only if `auto_exposure_gain` is false
exposure:                   100                                 # Dynamic - works only if `auto_exposure_gain` is false
auto_whitebalance:          true                                # Dynamic
whitebalance_temperature:   42                                  # Dynamic - works only if `auto_whitebalance` is false
depth_confidence:           30                                  # Dynamic
depth_texture_conf:         100                                 # Dynamic
pub_frame_rate:             10.0                                # Dynamic - frequency of publishing of video and depth data
point_cloud_freq:           10.0                                # Dynamic - frequency of the pointcloud publishing (equal or less to `grab_frame_rate` value)general:camera_name:                zed                             # A name for the camera (can be different from camera model and node name and can be overwritten by the launch file)zed_id:                     0serial_number:              0resolution:                 2                               # '0': HD2K, '1': HD1080, '2': HD720, '3': VGAgrab_frame_rate:            10                              # Frequency of frame grabbing for internal SDK operationsgpu_id:                     -1base_frame:                 'base_link'                     # must be equal to the frame_id used in the URDF fileverbose:                    false                           # Enable info message by the ZED SDKsvo_compression:            2                               # `0`: LOSSLESS, `1`: AVCHD, `2`: HEVCself_calib:                 true                            # enable/disable self calibration at startingcamera_flip:                falsevideo:img_downsample_factor:      1                             # Resample factor for images [0.01,1.0] The SDK works with native image sizes, but publishes rescaled image.缩放因子,例如0.5会缩小图像长宽各一半extrinsic_in_camera_frame:  true                            # if `false` extrinsic parameter in `camera_info` will use ROS native frame (X FORWARD, Z UP) instead of the camera frame (Z FORWARD, Y DOWN) [`true` use old behavior as for version < v3.1]depth:quality:                    3                               # '0': NONE, '1': PERFORMANCE, '2': QUALITY, '3': ULTRA, '4': NEURAL
#控制深度图的质量级别。'0': NONE:不生成深度图。'1': PERFORMANCE:优先性能的深度图生成模式,适用于需要较高帧率的应用。'2': QUALITY':优先质量的深度图生成模式,适用于需要更准确深度信息的应用,但可能降低帧率。'3': ULTRA':最高质量的深度图生成模式,提供最好的深度信息,但要求高计算能力。'4': NEURAL':使用神经网络增强的深度图生成模式,旨在提供更准确和详细的深度信息。sensing_mode:               0                               # '0': STANDARD, '1': FILL (not use FILL for robotic applications)depth_stabilization:        1                               # `0`: disabled, `1`: enabledopenni_depth_mode:          false                           # 'false': 32bit float meters, 'true': 16bit uchar millimetersdepth_downsample_factor:    1                             # Resample factor for depth data matrices [0.01,1.0] The SDK works with native data sizes, but publishes rescaled matrices (depth map, point cloud, ...)pos_tracking:pos_tracking_enabled:       false                            # True to enable positional tracking from startpublish_tf:                 true                            # publish `odom -> base_link` TFpublish_map_tf:             true                            # publish `map -> odom` TFmap_frame:                  'map'                           # main frameodometry_frame:             'odom'                          # odometry framearea_memory_db_path:        'zed_area_memory.area'          # file loaded when the node starts to restore the "known visual features" map. save_area_memory_db_on_exit: false                          # save the "known visual features" map when the node is correctly closed to the path indicated by `area_memory_db_path`area_memory:                true                            # Enable to detect loop closurefloor_alignment:            false                           # Enable to automatically calculate camera/floor offsetinitial_base_pose:          [0.0,0.0,0.0, 0.0,0.0,0.0]      # Initial position of the `base_frame` -> [X, Y, Z, R, P, Y]init_odom_with_first_valid_pose: true                       # Enable to initialize the odometry with the first valid posepath_pub_rate:              2.0                             # Camera trajectory publishing frequencypath_max_count:             -1                              # use '-1' for unlimited path sizetwo_d_mode:                 false                           # Force navigation on a plane. If true the Z value will be fixed to "fixed_z_value", roll and pitch to zerofixed_z_value:              0.00                            # Value to be used for Z coordinate if `two_d_mode` is true    mapping:mapping_enabled:            false                           # True to enable mapping and fused point cloud publicationresolution:                 0.05                            # maps resolution in meters [0.01f, 0.2f]max_mapping_range:          -1                              # maximum depth range while mapping in meters (-1 for automatic calculation) [2.0, 20.0]fused_pointcloud_freq:      1.0                             # frequency of the publishing of the fused colored point cloudclicked_point_topic:        '/clicked_point'                # Topic published by Rviz when a point of the cloud is clicked. Used for plane detection

二、kalibr的使用

1、双目相机标定

首先,安装教程有很多,而且没有明显的坑,可以自己搜索,或者直接编译我调整好的

报错:ImportError: No module named igraph

解决方式: sudo apt-get install python2.7-igraph

先标定双目:

rosrun kalibr kalibr_calibrate_cameras --bag '/home/lb/bag/3/32.bag' --topics  /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color --models pinhole-radtan pinhole-radtan --target '/home/lb/calib/kalibr_workspace/april_6x6.yaml' 

命令含义(GPT生成):

  • rosrun:这是一个ROS命令,用于在ROS包中运行特定的节点。
  • kalibr:这是你要运行的ROS包的名称。
  • kalibr_calibrate_cameras:这是 kalibr 包中你想要运行的特定节点或可执行文件。它似乎用于相机校准。
  • --bag '/home/lb/bag/3/32.bag':这指定了你要用于校准的ROS包文件。ROS包是存储ROS消息数据的一种便捷方式。
  • --topics /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color:这指定了你要用于校准的包文件中的主题。在这种情况下,似乎是左右相机图像。
  • --models pinhole-radtan pinhole-radtan:这指定了你要用于校准的相机模型。在这里,你使用的是针孔-radial-tangential模型,用于左右两个相机。
  • --target '/home/lb/calib/kalibr_workspace/april_6x6.yaml':这指定了校准目标的YAML文件。校准目标是具有已知几何形状的模式或物体,用于校准相机。

耐心等待之后

结果:

 重投影误差1左右,可用

 2、Imu标定

使用 imu_utils 进行标定,它依赖ceres-solver优化库,要先安装ceres库

另外,imu_utils是依赖于code_utils的,所以先编译code_utils后再下载编译imu_utils

 录制2h左右,期间保持相机不动。

结果:

 新建一个imu.yaml

填入:

rostopic: /zed2i/zed_node/imu/data
update_rate: 300.0 #Hzaccelerometer_noise_density: 1.8370034577350359e-02
accelerometer_random_walk: 3.1364398099665192e-04
gyroscope_noise_density: 2.2804362845695965e-03
gyroscope_random_walk: 4.7394104123124287e-05

3、开始联合标定

rosrun kalibr kalibr_calibrate_imu_camera --bag '/home/lb/bag/3/32.bag'  --target '/home/lb/calib/kalibr_workspace/april_6x6.yaml'  --cam '/home/lb/bag/3/32-camchain.yaml'  --imu '/home/lb/calib/kalibr_workspace/imu.yaml'

rosrun kalibr kalibr_calibrate_imu_camera --bag '/home/lb/bag/3/32.bag'  --target '/home/lb/calib/kalibr_workspace/april_6x6.yaml'  --cam '/home/lb/bag/3/32-camchain.yaml'  --imu '/home/lb/calib/kalibr_workspace/imu.yaml'

 

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

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

相关文章

Matlab|【免费】基于合作博弈的综合能源系统利益分配优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序实现的模型为综合能源系统利益分配优化调度&#xff0c;采用合作博弈方法&#xff0c;模型针对IES系统的P2G、电解槽、甲烷反应器、储氢罐、CHP和燃气锅炉等设备进行建模&#xff0c;实现基于合作博弈的…

Linux 学习笔记(10)

十、 进程管理 进程就是运行中的程序&#xff0c;一个运行着的程序&#xff0c;可能有多个进程。 比如 LinuxSir.Org 所用的 WWW 服务器是 apache 服务器&#xff0c;当管理员启动服务后&#xff0c;可能会有好多人来访问&#xff0c;也就是说许多用户来同时请 求 htt…

Django官网项目 二

官网地址&#xff1a;Writing your first Django app, part 2 | Django documentation | Django 创建模组&#xff1a; 注册model &#xff08;bug&#xff1a;没有加后面的逗号&#xff09; 在manage.py 的目录下&#xff1a; python manage.py makemigrations polls pyth…

redis09 集群(cluster)

思维草图 为什么要使用集群 单台redis内存容量的限制单台redis并发写量太大有性能瓶颈 redis集群认识 redis集群是对redis的水平扩容&#xff0c;即启动N个redis节点&#xff0c;将整个数据分布存储在这个N个节点中&#xff0c;每个节点存储总数据的1/N。 如下图&#xff1…

C++ 根据公式计算椭圆任意点到中心的距离

#include <iostream> using namespace std;double fact(int x) //定义阶乘函数。注意是double类型 {double y x; //注意是double类型for (int i x-1; i > 0; i--)y * i;return y; };double My_sin(int x) //定义sin函数。注意是double类型 {double y 0; //注意是do…

【视频图像取证篇】Amped FIVE专业法医图像和视频增强软件之模糊图像去隔行功能

【视频图像取证篇】Amped FIVE专业法医图像和视频增强软件之模糊图像去隔行功能 法医图像和视频增强软件&#xff0c;专业又强大&#xff01;&#xff01;&#xff01;超过 140 种过滤器和工具&#xff0c;用于分析、恢复和增强数字图像和视频。Amped FIVE能够稳定抖动的视频&…

Linux:ansible-playbook配置文件(剧本)(进阶)

Linux&#xff1a;ansible-playbook配置文件&#xff08;剧本&#xff09;_ansible-playbook -i参数-CSDN博客https://blog.csdn.net/w14768855/article/details/132579492?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170930036016800215061982%2522%252C%2522s…

LaTeX排版论文的常见问题汇总(持续更新中)

文章目录 LaTeX排版论文的常见问题汇总&#xff08;持续更新中&#xff09;1.如何上传期刊或会议提供的LaTeX模板&#xff1f;2.模板中各文件的说明3.LaTeX中如何设置字体大小&#xff1f;3.1如何设置表格中的字体大小&#xff1f;3.2如何设置表格、图片标题的字体大小&#xf…

A/D转换

硬件电路模型 模数转换代码 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "XPT2046.h"unsigned int ADValue; int main(){LCD_Init();LCD_ShowString(1,1,"ADJ NTC RG");while(1){ADValue …

什么是Vue的服务端渲染(SSR)?它有什么作用?

Vue的服务端渲染&#xff08;SSR&#xff09;是指将Vue组件在服务器端进行渲染&#xff0c;然后将已经渲染好的页面返回给浏览器&#xff0c;相比于传统的客户端渲染&#xff0c;SSR可以更好地优化SEO和加速首屏加载速度。在传统的客户端渲染中&#xff0c;浏览器需要加载所有的…

【MySQL系列】在 MacOS 上安装 MySQL

在 MacOS 上有两种方式安装 MySQL 服务器&#xff1a;通过 brew 安装和通过安装包安装。 文章目录 1、通过 brew 安装 MySQL1.1、安装 MySQL1.2、启动 MySQL 服务器1.3、配置 MySQL 服务器1.4、MySQL 服务器管理命令 2、通过安装包安装 MySQL2.1、下载安装包2.2、安装 MySQL2.3…

深入理解快速排序算法:从原理到实现

目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点&#xff1a; 5.2 缺点&#xff1a; 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现&#xff1a; 6.2 JavaScript 实现&#…

30、类和接口

文章目录 接口概念接口和类之间有何关系&#xff1f; 可以使用接口来约束类接口继承接口接口还可以继承类接口为什么可以继承类内层原因&#xff1a;接口为什么可以继承类 用得出的结论解释最初的demo接口继承类的一些限制 接口概念 接口&#xff08;Interfaces&#xff09;可…

【大厂AI课学习笔记NO.61】环境部署的选择

主要是选择单机和分布式、生产和开发环境的规划等。 开发环境、测试环境、预发布环境和生产环境是软件开发和部署过程中常见的几个环境&#xff0c;它们各自的定义、区别、联系以及实现的关键技术如下&#xff1a; 1. 开发环境&#xff08;Development Environment&#xff09…

完全解析淘宝天猫详情接口API:购物小白也能秒变高手

在如今的电商领域中&#xff0c;淘宝和天猫是最为重要和热门的平台之一。作为购物平台的用户&#xff0c;我们通常只是浏览商品的页面&#xff0c;点击购买和支付&#xff0c;却未能深入了解背后的技术信息。然而&#xff0c;淘宝天猫详情接口API的了解和运用&#xff0c;联讯数…

力扣hot4--双指针

题目&#xff1a; 双指针想法&#xff1a; i 指针在数组不为 0 的地方停留&#xff0c;j 指针在每个地方停留&#xff0c;依次交换 i 和 j 指针。当 i 指针遍历完所有数组元素时&#xff0c;j 指针指向的元素及后面的元素都为0。 代码如下&#xff1a; C版本 class Solution …

冒泡、插入、希尔、选择、堆排序、快速排序(附源码)

目录 插入排序&#xff1a; 核心思想&#xff1a; 时间复杂度&#xff1a; 冒泡排序&#xff1a; 核心思想&#xff1a; 时间复杂度&#xff1a; 希尔排序&#xff1a; 核心思想&#xff1a; 时间复杂度&#xff1a; 选择排序&#xff1a; 核心思想&#xff1a; 时间…

告别手动填写邀请码,这款App数据统计工具帮你轻松实现

在移动互联网时代&#xff0c;App的推广和运营已成为各大企业的必修课。然而&#xff0c;面对错综复杂的推广渠道和浩如烟海的数据&#xff0c;如何精准地追踪用户来源、优化推广策略&#xff0c;一直是困扰着运营者的难题。今天&#xff0c;我们就来聊聊一款能够帮助你轻松解决…

新火种AI|AI商业中的里程碑事件已敲定! 欧盟27国一致通过《人工智能法案》。

作者&#xff1a;小岩 编辑&#xff1a;彩云 根据路透社2月2日消息&#xff0c;欧盟国家就《人工智能法案》立法正式达成协议。 此次立法的成功堪称AI商业领域上的里程碑事件。因为单从商业视角来看&#xff0c;这一法案的通过率先为欧盟内部的人工智能创新提供了明确的法律…

在 Linux 上用 zram 替代传统交换空间 | Linux 中国

我在我的电脑上花了很多时间&#xff08;我是说工作&#xff09;&#xff0c;我发现了很多有趣的东西。其中最近引起我注意的是 zram0 设备。我是在几个月前写一篇文章时第一次注意到它&#xff0c;它显示在 lsblk 命令的输出中&#xff1a; # lsblk NAME MAJ:MIN RM…