ZED-mini开箱使用过程

ZED_mini文档:Stereolabs Docs: API Reference, Tutorials, and Integration

目录

ubuntu 20.04 zed sdk安装

ubuntu 20.04 zed ROS接口安装

修改ROS节点相机发布参数

标定zed-mini(双目、imu、双目-imu)

使用kalibr对双目相机进行标定

使用imu_utils进行内置imu内参标定

使用kalibr进行相机与imu的联合标定


ubuntu 20.04 zed sdk安装

官网参考链接:https://www.stereolabs.com/docs/installation/linux

安装好显卡驱动和cuda后,开始安装zed sdk

下载sdk:ZED_SDK_Ubuntu20_cuda11.8_v4.1.2.zstd.run

ZED SDK 4.1 - Download | Stereolabs

转到已下载安装程序的文件夹安装 zstd。

sudo apt install zstd

chmod +x ZED_SDK_Ubuntu20_cuda11.8_v4.1.2.zstd.run

./ZED_SDK_Ubuntu20_cuda11.8_v4.1.2.zstd.run #先按q,后面都按y(可根据需要选择下载内容,都按y资源较多比较费时)

安装完成后重启,之后输入如下命令检验:

cd /usr/local/zed/tools

./ZED_Explorer #可查看双目图像,分辨率,内参等信息

 cd /usr/local/zed/tools

./ZED_Depth_Viewer #可查看深度图像,对于cuda配置有要求,可能运行失败

软件功能:

ZED Calibration——用于ZED校准;

ZED Sensor Viewer——ZED传感器,ZED2支持;

ZED Explorer——用于zed相机的实时预览和录制;

ZED Depth Viewer——捕获和显示深度图像和点云;

ZEDfu——ZED相机的实时3D映射和制图;

使用ZED Sensor Viewer工具可看到mini内置imu的输出信息,包括加速度、角速度及姿态。

卸载sdk:

cd /usr/local

sudo rm -rf zed

ubuntu 20.04 zed ROS接口安装

官网参考链接:Getting Started with ROS and ZED - Stereolabs

mini支持输出:

    左右校正/未校正图像

    深度图

    彩色 3D 点云

    视觉里程计:相机的位置和方向

    姿态跟踪:相机的位置和方向固定并与IMU数据融合

    空间映射:融合 3D 点云

    传感器数据:加速度计、陀螺仪

下载ZED ROS安装包(分为zed-ros-wrapper、zed-ros-interfaces、zed-ros-examples)

zed-ros-wrapper:GitHub - stereolabs/zed-ros-wrapper: ROS wrapper for the ZED SDK

zed-ros-interfaces:GitHub - stereolabs/zed-ros-interfaces: ROS interfaces for the ZED ROS Wrapper

zed-ros-examples:GitHub - stereolabs/zed-ros-examples: Examples for the ZED SDK ROS wrapper

其中zed-ros-wrapper为主要ros节点、zed-ros-interfaces为zed和ros之间的接口话题,如果下载zed-ros-wrapper中接口文件无内容需要手动将zed-ros-interfaces下载并添加进去。zed-ros-examples为一些示例和教程(可在电脑主机上部署,较占空间)。

修改ROS节点相机发布参数

启动节点前可对相机参数进行修改,文件位置:zed-ros-wrapper-master/zed_wrapper/params

这里只探索了修改分辨率发布频率

zed-mini共支持四种分辨率('HD2K', 'HD1080', 'HD720', 'VGA'(1344x376))。可在zedm.yaml文件中修改对应的分辨率及抓取帧率(从sdk的发布频率下,以抓取频率转换为ros消息)

general:

    camera_model:               'zedm'

    grab_resolution:            'HD720'     # 'HD2K', 'HD1080', 'HD720', 'VGA', 'AUTO'

    grab_frame_rate:            30          # Frequency of frame grabbing for internal SDK operations

推测sdk在各分辨率下的发布频率固定为:2K/15fps、1080/30fps、720P/60fps、VGA/100fps。发布频率不更改sdk应该不会改变,tool工具的帧率修改也不会影响,抓取帧率grab_resolution应小于SDK发布频率

修改完zedm.yaml文件后还需要修改common.yaml文件以修改ROS发布分辨率发布帧率

pub_resolution:             'NATIVE'                        # The resolution used for output. 'NATIVE' to use the same `general.grab_resolution` - `CUSTOM` to apply the `general.pub_downscale_factor` downscale factory to reduce bandwidth in transmission

pub_downscale_factor:       2.0                             # rescale factor used to rescale image before publishing when 'pub_resolution' is 'CUSTOM'

pub_frame_rate:             60                            # frequency of publishing of video and depth data (see SDK API "InitParameters::grab_compute_capping_fps")

其中当发布分辨率设置为CUSTOM时,输出的ROS图片消息分辨率将根据

pub_downscale_factor的值进行分辨率降低输出,例如选择的抓取分辨率为1280x720,downscale之后输出分辨率为640x360。当发布分辨率设置为NATIVE时则与抓取分辨率一致。

此外,注意ROS发布分辨率不高于抓取分辨率不高于SDK发布分辨率,超过了不会报错单仍以SDK分辨率发布。

对于启动zed-mini的zed-ros节点

source devel/setup.bash

roslaunch zed_wrapper zedm.launch

带位姿的imu话题:/zedm/zed_node/imu/data

不带位姿的imu话题:/zedm/zed_node/imu/data_raw

彩色校正图像(默认为左侧传感器):rgb/image_rect_color

彩色相机校准数据:rgb/camera_info

彩色未校正图像(默认为左侧传感器):rgb_raw/image_raw_color

未校正的彩色相机校准数据rgb_raw/camera_info

右相机校正图像:right/image_rect_color

右传感器校准数据:right/camera_info

右相机未校正图像:right_raw/image_raw_color

未校正的右侧传感器校准数据 :right_raw/camera_info

置信度图作为图像:confidence/confidence_image

深度图:depth/depth_registered

视差图:disparity/disparity_image

点云:zed/zed_node/point_cloud/cloud_registered

运行zed-ros-examples示例之一(无需上述启动ros节点步骤)

source devel/setup.bash && roslaunch zed_display_rviz display_zedm.launch

标定zed-mini(双目、imu、双目-imu)

使用kalibr对双目相机进行标定

参考链接:ZED双目相机标定跑通vins fusion_zed相机双目标定-CSDN博客

以及:使用Kalibr标定zed mini双目相机_kalibr标定太慢-CSDN博客

kalibr:https://github.com/ethz-asl/kalibr

使用6*6标定板

拉起相机驱动后录制话题:rosbag record /zedm/zed_node/imu/data_raw /zedm/zed_node/left_raw/image_raw_color /zedm/zed_node/right_raw/image_raw_color

录制过程移动相机可参考:https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY

(1)俯仰角摆动3次

(2)偏航角摆动3次

(3)翻滚角摆动3次

(4)上下移动3次

(5)左右移动3次

(6)前后移动3次

(7)自由移动,摆动幅度大一些,但要移动缓慢些,使得标定目标尽可能出现在相机的所有视野范围内

整体标定时间在90s以上

录制好后,在kalibr工作空间下执行标定

source devel/setup.bash

rosrun kalibr kalibr_calibrate_cameras --bag src/data/stereo_imu.bag --topics /zedm/zed_node/left_raw/image_raw_color /zedm/zed_node/right_raw/image_raw_color --models pinhole-radtan  pinhole-radtan --target src/data/april_6x6.yaml --show-extraction

其中--show-extraction显示角点提取过程。

标定结束后生成三个结果文件并存在标定数据所在文件夹

其中,txt文件中可查看reprojection error(重投影误差)是多少,理想范围是0.1-0.2;生成的yaml文件就是两个相机的内参及两个相机之间的变换矩阵,实际结果与sdk给出的内参差距不大,sdk给出的内参位于:/usr/local/zed/settings

使用imu_utils进行内置imu内参标定

参考链接:Ubuntu20.04编译并运行imu_utils,并且标定IMU_imu utils-CSDN博客

imu_utils:https://github.com/gaowenliang/imu_utils

录制imu数据,大约两小时

打开imu_utils的launch文件夹,仿照提供的launch文件编写launch文件。

执行标定指令

source devel/setup.bash

roslaunch imu_utils zed_imu.launch  //该文件为自己编写

// launch后界面显示wait for imu data

rosbag play -r 200 imu.bag // 200 倍速播放rosbag

注:程序进入bag读取,并计算allan方。当bag包加速回放完毕后,执行launch的窗口可能仍然会显示wait for imu data.,等待一段时间计算,计算完毕后会显示计算结果,如果迟迟没有结果,可能是存放数据的路径不行,改回原来的路径可以,亲测有效。

标定结束后在launch文件中设定的输出文件夹下将出现一系列标定结果文件。简单的陀螺仪和角速度计偏置可查看.yaml文件

使用kalibr进行相机与imu的联合标定

数据准备:

使用kalibr标定好的双目相机内参yaml文件、使用imu_utils标定好的imu内参yaml文件、之前双目标定用的april_6x6_A4.yaml以及最早录制的包含相机及imu的bag文件。

其中,相机内参的yaml文件不用更改,imu的yaml文件格式如下(yaml文件不能用制表符):

#Accelerometers

accelerometer_noise_density: 3.2859677559142028e-02    #Noise density (continuous-time)/acc_n

accelerometer_random_walk:   8.9869190005998929e-04    #Bias random walk/acc_w


#Gyroscopes

gyroscope_noise_density:     2.2327846882699617e-03    #Noise density (continuous-time)/gyr_n

gyroscope_random_walk:       1.3643470013705229e-05    #Bias random walk/gyr_w


rostopic:                    /zedm/zed_node/imu/data_raw    #IMU的ROS话题名

update_rate:                 200.0       #IMU的ROS输出频率

准备就绪后在kalibr工作空间下运行

source devel/setup.bash


# imu+双目

rosrun kalibr kalibr_calibrate_imu_camera --bag src/data/stereo_imu.bag --target src/data/april_6x6.yaml --cam src/data/stereo.yaml --imu src/data/imu.yaml

可能会出现AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘的错误信息,尝试更改numpy的版本。

标定生成的四个文件将在数据包目录中找到。

至此ZED_mini的传感器标定工作结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问题学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值