本文介绍: ZED 2i

0.设备环境说明

笔记电脑i5-8300H、GTX 1060、32GRAM
因为后面要测试Vins-Fusion和ORB-SLAM3,所以推荐安装Ubuntu 18.04(或者Ubuntu 20.04) + ROS 1(不建议用比Ubuntu18更低的版本
ROS一键安装命令

wget http://fishros.com/install -O fishros && . fishros

ZED 2i:双目相机配有9轴IMU
此前电脑已经配置好:Ubuntu 18.04,ROS 1,Vins-Fusion,OpenCV 3.2.0,ceressolver 1.14.0,CMake 3.12,Eigen 3.3.3,g2o(20年版本),Pangolin-0.6,Kalibr,imu_code等。

相机usb接口要插在电脑usb3.0协议的插口中。

1.安装ZED SDK3.8.2

官方手册Linux版本: https://www.stereolabs.com/docs/installation/linux/

选择静默安装即可,跳过CUDA检查。ZED相机依赖CUDA加速,所以电脑必须要安装CUDA!

The installer can be launched in silent mode with the – silent option (with a space between – and silent).

其中关于CUDA的解释:

CUDA 是 ZED SDK 用来显卡运行快速 AI 和计算机视觉任务的 NVIDIA® 库。在 ZED SDK 安装过程中,如果您的计算机上未检测到 CUDA,ZED SDK会自动下载并安装 CUDA。

建议跳过CUDA检查,然后根据自己显卡版本手动安装CUDA,速度会快一些。
CUDA官网https://developer.nvidia.com/cuda-toolkit-archive
所以,最后的安装SDK指令最后应该是加上: – silent skip_cuda

安装完成后重启系统。安装全程不要sudo

z@h:~/zed/tools$ tree
.
├── ZED_Calibration
├── ZED_Depth_Viewer
├── ZED_Diagnostic
├── ZED_Explorer
├── ZEDfu
├── ZED_Sensor_Viewer
└── ZED_SVO_Editor

tools里面有一些小工具可以检查相机原件是否正常。

例如打开/zed/tools开发好的小工具,ZED_Calibration可以进行相机标定,ZED_Explorer可以查看相机分辨率和帧率参数以及标定信息等。
后续需要调整帧数和分辨率,所以可以看到ZED相机的配置参数:2k、1080p、720p和VGA,由于传输速度的限制,分辨率越高最大帧数越低。

2.安装ZED-ROS

上一步相当于是安装了相机驱动,保证了相机能够运行,下面是安装ZED相机的ROS节点使用ROS来控制相机的话题和指令https://www.stereolabs.com/docs/ros/

创建一个zed专属工作空间

mkdir -p ~/zed_ws/src
cd zed_ws/src/
catkin_init_workspace

zed-ros-wrapper是一个catkin包,github下载链接https://github.com/stereolabs/zed-ros-wrapper
下载完成后,zed-ros-wrapper改成zed_ros_wrapper

找准自己安装的SDK对应的版本,在右侧的release查找手动下载压缩包解压缩后放到src文件夹下。然后安装github中的命令开始编译

cd ..
rosdep install --from-paths src --ignore-src -r -y

报错

在这里插入图片描述

错误原因比较清楚,是没有找到zed_interfaces这个依赖项。依然是找到对应的版本v1.2:https://github.com/stereolabs/zed-ros-interfaces/releases/tag/v1.2,依然是改名为zed_ros_interfaces,解压缩后直接放到src文件夹下:

z@h:~/zed_ws$ tree -L 2
.
└── src
    ├── CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
    ├── zed_ros_interfaces
    └── zed_ros_wrapper

继续重新上面的操作

rosdep install --from-paths src --ignore-src -r -y
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release

安装完成!

为了后续启动方便,可以编辑环境变量节点添加进去:

gedit ~/.bashrc
## 添加
source ~/zed_ws/devel/setup.bash

ZED 2i附加驱动功能很丰富,不需要的例如zed-ros-examle可以不安装。

3.ROS相关命令

ROS是一个负责通讯的机器人控制系统,其信号连接是通过节点之间的发布接收
正常来说,如果没有启动roscore打开ros是没有任何话题和节点的。
所以我们终端输入打开相机,观察相机正面Logo旁边会亮起蓝色指示灯:

roslaunch zed_wrapper zed2i.launch

在这里插入图片描述

a.查看节点,负责通信

rosnode list

b.查看话题

rostopic list

c.查看节点关系图(两端是节点,中间用话题传输

rosrun rqt_graph rqt_graph

请添加图片描述

d.查看话题信息
例如打开相机后查看imu这个话题下的信息,确实就是查看imu实时工作状态

rostopic echo /zed2i/zed_node/imu/data

e.查看话题频率

rostopic hz /zed2i/zed_node/imu/data

f.用rqt来看(rostopic list可视化形式)

rosrun rqt_topic rqt_topic

勾选前面的对号,可以查看传输带宽频率

g.修改话题频率

rosrun topic_tools throttle messages {topic1}  {想要修改频率}  {topic2}

举例:

rosrun topic_tools throttle messages /zed2i/zed_node/imu/data 20.0 /zed2i/zed_node/imu/data_20

再次rostopic hz这个话题/zed2i/zed_node/imu/data_20

rostopic hz /zed2i/zed_node/imu/data_20

在这里插入图片描述
这些是后续运行SLAM常用的几个查看、修改指令,因为在标定过程需要降低相机频率实现稳定等情况。

所有强烈建议使用X-超级终端窗口,不要使用Ubuntu自带的了。

sudo apt-get install terminator

Ctrl+Shift+O 和 Ctrl+Shift+E 实现一个窗口纵向和横向分栏。

可能遇到的小问题
1.可能遇到Ctrl+Shift+E在terminator中失效的情况,这是因为安装的搜狗输入法快捷键冲突了。
2.有时候快捷键打不开terminator或者直接失灵了,检查一下你的Python版本是不是更换了,因为安装的时候默认绑定到了你的当前Python上。

h.录制rosbag

## 录制所有话题
rosbag record -a
#为文件命名
rosbag record -O bag_name.bag /topics.. 
#为文件名字做前缀
rosbag record -o bag_name /topics.. 

关于rosbag的录制和播放命令很多,详细可以查看官网或者参考博客rosbag数据记录工具命令详解

4.双目相机标定

4.1 说明

像之前的介绍INDEMIND相机标定博客一样,依然使用kalibr工具箱标定

Kalibr工具箱安装参考博客【INDEMIND相机运行SLAM】

首先相机标定对稳定性要求很高,所以要对相机降频为4hz(官方推荐);其次要打开一个可视化窗口来观察是否保证整个标定板信息全部位于图像中央;最后kalibr处理的rosbag里面数据格式(分辨率)要和后续测试数据相同(这一点容易被忽视)。

文献Porting A Visual Inertial SLAM Algorithm To Android Devices中:
These two different inputs led to the calibration results printed in Table 1 & 2. …Modern flat-panel displays serve the purpose of a perfect plane reasonably well.
可以看出,与显示器屏幕的重投影误差相比,印刷棋盘的误差要打大。其原因大概是由于打印机墨水量较多,打印的纸张上出现了轻微不均匀的波浪。表面不完全平坦导致误差增加两倍以上。现代平板显示器相当好的实现了完美平面的目的。

所以在标定的时候用显示器或者Pad是可以的。

之前在进行相机标定的时候都是没有安装严格规范流程相机标定的时候是相机固定,标定板目标移动;后续联合标定的时候需要加入惯导信息所以是标定板固定,相机做6自由度激活运动

这次尝试固定相机,将其架在三脚架上,手持平板运动。kalibr官方介绍

The camera system is fixed and the calibration target is moved in front of the cameras to obtain the calibration images.
It is recommended to lower the frequency of the camera streams to around 4 Hz while capturing the calibration data. This reduces redundant information in the dataset and thus lowering the runtime of the calibration.
相机系统固定,标定目标在相机前面移动以获得标定图像
建议在捕获校准数据时将相机流的频率降低至 4 Hz 左右。这减少了数据集中的冗余信息,从而缩短了校准的运行时间

4.2 修改相机分辨率和话题频率

(1)分辨率

在zed_ws/src/zed_ros_wrapper/zed_wrapper/params中找到common.yaml通用配置文件,第26行general栏中找到resolution,默认情况下是720p&15hz。只是修改配置文件需要重新make

    resolution:                 2                              # '0': HD2K, '1': HD1080, '2': HD720, '3': VGA

    # 修改后
    resolution:                 3                              # '0': HD2K, '1': HD1080, '2': HD720, '3': VGA

重新打开相机,例如查看相机右目信息:

rostopic echo /zed2i/zed_node/right/camera_info

在这里插入图片描述

(2)帧率

设置帧率有两种方法,一种是跟上面一样,在配置文件common.yaml设置配置参数,然后重启相机;第二种方法是利用topic_tools修改。为了不打开太多的终端,这次选用第一种方法。

4.3 可视化窗口

可以直接用ROS提供的接口调用话题,类似于这样:

## 打开左右目
rosrun image_view image_view image:=/zed2i/zed_node/left/image_rect_gray
rosrun image_view image_view image:=/zed2i/zed_node/right/image_rect_gray

也可以使用rviz,rviz是ros系统下的一个可视化工具,可以添加需要的话题来显示。

rosrun rviz rviz

默认打开情况是什么话题都没有的。

在这里插入图片描述

这里说明一点,工业相机与网络usb摄像头webcam)或者手机摄像头区别的是,工业相机是做了出厂标定的,所以在相机话题下有类似raw-image和rect-image两种话题,为了更准确,这里直接选择黑白去畸变后的图像
点击左边下方Add按钮切换到By topic界面,我们之前是打开了zed-ros的节点的,所有zed相机的所有话题都在其中显示。这里选择zed2i/zed_node/left/image_rect_gray和zed2i/zed_node/right/image_rect_gray里面的Camera,点击OK。

在这里插入图片描述

说明一下,双目相机左右目是以前进方向为准,不要搞反了。

在这里插入图片描述

原文地址:https://blog.csdn.net/qq_45306739/article/details/134689638

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_10367.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注