ZED2i相机在ROS2上运行vins排坑与用docker运行Kalibr标定ZED2i相机

按照ZED官网提供的方式ZED2i的SDK和ros2 wrapper之后, 还有很多工作要做才能让ZED成功运行稳定的VINS

1. ZED2i用Kalibr标定IMU和相机

由于我的电脑怎么装Kalibr都装不上, 说是啥boost这个库版本不一样, 但是我程序都是写在当前boost库中的, 改了怕出bug, 于是我只有用Docker去安装Kalibr.

1. Ubuntu 20.04通过Docker准备Kalibr环境

  1. 在docker hub下载stereolabs/kalibr镜像
    stereolabs/kalibr镜像链接: Kalibr
docker pull stereolabs/kalibr

一般运行docker需要管理员权限, sudo或者root都可.

  1. 创建并开启Kalibr容器, 并且挂载目录.
    挂载的目录中的文件可以共享在主机和容器中, 如新建的目录/home/data, 就挂载在kalibr系统中的/data目录下,/home/data和 /data目录可以共享文件内容.
docker run -itd -v /home/data:/data --name kalibr stereolabs/kalibr bash
docker attach kalibr
  1. Kalibr的Docker排坑.
    docker里由于无法可视化任何东西, 所以需要关闭kalibr的图像生成部分, 注释/kalibr_workspace/src/Kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras 中的第201行到205行.
    但是docker没有vim等编辑器, 需要下载vim.
    又发现国内网太高, docker源在外面, 执行sudo apt-get下载不了任何东西. 又没有vim编辑器, 可以用一下方式
#1.进入容器
docker exec -it <容器名称/id> bash
#2.执行命令apt-get update 发现缓慢
#3.进入apt-get 配置目录
cd /ect/apt
#4.执行备份命令 --避免修改失败无法使用
cp sources.list sources.list.bak

#5.同时执行echo下的4行命令,修改成国内镜像源
echo "">sources.list
echo "deb http://ftp2.cn.debian.org/debian/ buster main">>sources.list
echo "deb http://ftp2.cn.debian.org/debian/debian-security buster/updates main">>sources.list
echo "deb http://ftp2.cn.debian.org/debian/debian buster-updates main">>sources.list

#6.查看文件 是否修改成功
cat sources.list
###############################
root@62be94cc90e7:/etc/apt# cat sources.list

deb http://ftp2.cn.debian.org/debian/ buster main
deb http://ftp2.cn.debian.org/debian/debian-security buster/updates main
deb http://ftp2.cn.debian.org/debian/debian buster-updates main
root@62be94cc90e7:/etc/apt#
###############################
#7.更新apt-get
apt-get update
#修改完成
#如果发现安装vim 缓慢或者失败,说明本教程不适合你
apt-get install vim
#将备份完成的文件改回来,即可。
rm sources.list
mv sources.list.bak sources.list

以上参考自Docker国内加速
然后就下载完vim.
注释/kalibr_workspace/src/Kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras 中的第201行到205行.

vi /kalibr_workspace/src/Kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras 

注释这里

2. ZED2i相机用Kalibr联合标定

Kalibr只支持ros1的数据格式, 于是又安装了zed的ros环境.

  1. 生成标定板:
    在kalibr docker中生成标定板
kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.04 --tspace 0.3

在这里插入图片描述
具体的参数介绍见Kalibr官网

--type apriltag                标定板类型
 
--nx [NUM_COLS]                列个数
 
--ny [NUM_ROWS]                行个数
 
--tsize [TAG_WIDTH_M]          二维码方格长度,单位m
 
--tspace [TAG_SPACING_PERCENT] 小方格与二维码方格长度比例

遇到问题"ImportError: No module named pyx"
sudo apt-get install python-pyx
生成的target.pdf在docker中, 一般是访问不到的. 我们可以用主机的docker cp 把docker中的文件cp到交互文件夹下, 如/data, 然后我们就可从主机把/data文件夹下的东西拿出来.
在这里插入图片描述

我们还需要准备几个文件, 放到docker内

  1. april.yaml
  2. ZED的rosbag
    april.yaml文件内容由生成target.pdf的命令变换, 如下
    在这里插入图片描述
    kalibr的rosbag录制的设备移动方法见官网的YouTube视频, B站上也有.
rosbag record -O Kalibr_data.bag /zed2i/zed_node/imu/data_raw /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color

可以更改zed的ros配置内容, 去变换ZED发布的分辨率或者发布频率, 我的是VGA15hz+IMU200HZ
然后把录好的bag也放到docker的/data中
然后在Docker中运行

kalibr_calibrate_cameras --bag /data/Kalibr_data.bag --topics /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color --models pinhole-radtan pinhole-radtan --target /data/april.yaml

然后会生成相机标定文件camchain-dataKalibr_data.yaml与results-cam-dataKalibr_data.txt. 这两个文件会在后面相机与IMU联合标定的时候用到.
我们还要准备一下imu_params.yaml这个文件. 因为没时间标定单独的IMU, 所以我直接用的官网的数据
在这里插入图片描述
然后联合标定

kalibr_calibrate_imu_camera --bag /data/Kalibr_data.bag --cam /data/camchain-dataKalibr_data.yaml --imu /data/imu_params.yaml --target /data/april.yaml

然后就会生成camchain-imucam-dataKalibr_data.yaml , imu-dataKalibr_data.yaml, results-imucam-dataKalibr_data.txt
具体camera到IMU外参可以看results-imucam-dataKalibr_data.txt生成的文件里. 再把这里面的东西写入VINS的配置文件中.

这里要注意的是, ROS2中ZED发布的message信息的分辨率是896*512, 并不是HD720P的, 所以我们要在VINS的相机配置文件改一下内参和分辨率.
在这里插入图片描述
把初始化的外参估计方式改为0, 就是完全相信配置的外参. 由于外参标定的比较准确, 所以就算没运行loop_fusion的情况下, 100m定位误差也只有厘米级.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用zed2i相机,您可以按照以下步骤进行设置和操作: 1. 首先,确保您已经启动了ZED节点。使用以下命令之一启动ZED节点: - 对于ZED相机:`roslaunch zed_wrapper zed.launch` - 对于ZED Mini相机:`roslaunch zed_wrapper zedm.launch` - 对于ZED 2相机:`roslaunch zed_wrapper zed2.launch` - 对于ZED 2i相机:`roslaunch zed_wrapper zed2i.launch` 2. 要设置相机参数,您可以修改`param/common.yaml`(所有相机通用参数)和`param/zed2.yaml`文件。在这些文件中,您可以调整各种参数以满足您的需求。有关可用参数的详细信息,请参阅官方文档的参数调整部分。 3. 如果您想尝试教程,请进入`tutorials`文件夹,然后进入`tutorial 1 - hello ZED\csharp`文件夹。在此文件夹中,您可以找到用于C#编程的示例代码。然后,创建一个名为`build`的新文件夹,用于构建代码。 请注意,以上是zed2i相机的基本使用教程。如果您需要更详细的操作指南或进一步的说明,请参考官方文档或相关教程资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ZED2相机使用及检测目标功能](https://blog.csdn.net/SKGLZ/article/details/126279712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ZED2i相机使用环境搭建(Windows 环境下 C#API)](https://blog.csdn.net/sunsoldeir1/article/details/128379438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值