ZED stereo camera开发入门教程(1)

本教程介绍了如何配置和使用ZED stereo camera,包括构建程序(Windows和Linux)、相机配置参数、SDK配置、深度设置以及如何获取相机的焦距、视场角等信息。

教程1:你好ZED

原教程及代码链接:https://github.com/wangjhit/zedStereoCamera_tutorials/tree/master/tutorial%201%20-%20hello%20ZED

本教程仅显示如何配置和打开ZED,然后打印其序列号,然后关闭相机。这是使用ZED SDK最基本的步骤和良好的开端。

先决条件

Windows 7 64位或更高版本,Ubuntu 16.04
ZED SDK及其依赖项(CUDA)

构建程序

构建Windows

在源文件夹中创建一个“build”文件夹
打开cmake-gui并选择源和构建文件夹
生成Visual Studio Win64解决方案
打开生成的解决方案并将配置更改为 Release
构建解决方案

构建Linux

在示例目录中打开一个终端,并执行以下命令:
mkdir build
cd build
cmake ..
make

代码概述

ZED API提供对摄像机控制和配置的低级访问。要在应用程序中使用ZED,您需要创建并打开一个Camera对象。API可以与两种不同的视频输入一起使用:ZED实时视频(实时模式)或以SVO格式以ZED API(播放模式)录制的视频文件。

相机配置

要配置相机,请创建一个Camera对象并指定InitParameters。初始参数可让您调整摄像机分辨率,FPS,深度感测参数等。这些参数只能在打开相机之前设置,并且在相机使用时无法更改。
//创建一个ZED相机对象 
相机zed; //设置配置参数 
InitParameters init_params; 
init_params.camera_resolution = RESOLUTION_HD1080; 
init_params.camera_fps = 30 ;
InitParameters默认情况下包含配置。要获取可用参数列表,请参阅API文档。
初次配置完成后,打开相机。
//打开相机 
err = zed.open(init_params); if(err!= SUCCESS)
     exit( - 1);
您可以设置以下初始参数:
  • 相机配置参数,使用camera_*条目(分辨率,图像翻转...)。
  • SDK配置参数,使用sdk_*条目(详细,使用GPU设备...)。
  • 深度配置参数,使用depth_*条目(深度模式,最小距离...)。
  • 使用coordinate_*条目(坐标系,坐标单位...)来协调框架配置参数。
  • SVO参数使用Stereolabs视频文件与ZED SDK(文件名,实时模式...)

获取相机信息

相机参数如焦距,视场或立体声校准可以检索每个眼睛和分辨率:
  • 焦距:fx,fy。
  • 要点:cx,cy。
  • 镜头失真:k1,k2。
  • 水平和垂直的视野。
  • 立体声校准:左眼和右眼之间的旋转和平移。
这些值可用CalibrationParameters。他们可以使用getCameraInformation()。
在本教程中,我们简单地检索摄像机的序列号:
// Get camera information (serial number)
int zed_serial = zed.getCameraInformation().serial_number;
printf("Hello! This is my serial number: %d\n", zed_serial);
在控制台窗口中,您现在应该看到相机的序列号(也可以在ZED USB电缆的标签上找到)。
注意:CameraInformation还包含ZED的固件版本以及校准参数。
要正确关闭相机,请使用zed.close()并退出程序。
// Close the camera
zed.close();
return 0;

<think>我们正在处理用户关于在虚拟机中配置和使用ZED相机的问题。根据用户提供的信息和引用,ZED相机通常需要与特定的硬件和驱动程序配合使用。虚拟机环境可能会因为硬件访问限制(如USB控制器传递、GPU加速等)而遇到挑战。 关键点: 1. ZED相机需要访问物理GPU(通常是NVIDIA GPU)以获得最佳性能,因为其SDK依赖于CUDA进行深度计算。 2. 虚拟机通常无法直接访问物理GPU,除非使用特定的虚拟化技术(如NVIDIA GRID vGPU, VMware DirectPath I/O, 或VirtualBox的PCI passthrough)。 3. 用户引用中提到了Ubuntu系统下的配置,但虚拟机环境可能不同。 步骤: 1. **检查虚拟机环境**:确认虚拟机软件(如VMware, VirtualBox, Hyper-V)是否支持GPU passthrough,并且主机系统有兼容的NVIDIA GPU。 2. **安装主机驱动**:在主机上安装最新的NVIDIA驱动程序。 3. **配置虚拟机**: - 启用IOMMU(在BIOS中设置)。 - 配置虚拟机以将GPU设备直通给虚拟机(具体步骤取决于虚拟化软件)。 4. **在虚拟机中安装驱动**:虚拟机中需要安装与主机相同版本的NVIDIA驱动,以及ZED SDK。 5. **测试ZED相机**:安装完成后,运行ZED示例程序测试。 注意:由于虚拟机环境复杂,性能可能不如原生系统,且配置过程中可能遇到问题。 根据引用内容,用户之前提到过在Ubuntu18.04上配置ZED 2i相机,并运行了ORBSLAM2和yolov5-ros。这些在虚拟机中可能难以实现,因为涉及GPU加速。 因此,我们建议: - 如果可能,尽量使用原生Linux系统。 - 如果必须使用虚拟机,确保满足GPU直通的要求,并按照以下步骤操作。 具体步骤(以VMware为例): 1. **主机准备**: - 确保主机有支持直通的CPU和主板(Intel VT-d或AMD-Vi)。 - 在主机BIOS中开启VT-d/AMD-Vi和虚拟化支持。 - 在主机上安装NVIDIA驱动(版本需与虚拟机中一致)。 2. **VMware设置**: - 关闭虚拟机。 - 编辑虚拟机设置,添加PCI设备(选择NVIDIA GPU)。 - 开启虚拟机,并安装与主机相同版本的NVIDIA驱动。 3. **安装ZED SDK**: - 在虚拟机中下载并安装ZED SDK(从Stereolabs官网下载对应版本)。 - 按照官方文档安装:https://www.stereolabs.com/docs/installation/ 4. **测试**: - 运行`ZED Explorer`或`ZED Depth Viewer`来测试相机。 对于ROS支持,还需要安装ZED-ROS Wrapper: ```bash # 在虚拟机中(假设已安装ROS) $ cd ~/catkin_ws/src $ git clone https://github.com/stereolabs/zed-ros-wrapper.git $ cd ../ $ rosdep install --from-paths src --ignore-src -r -y $ catkin_make -DCMAKE_BUILD_TYPE=Release $ source ./devel/setup.bash ``` 注意:由于虚拟机中的GPU性能可能受限,实时应用(如SLAM或目标检测)可能无法达到预期效果。 相关问题: 1. 虚拟机中配置ZED相机有哪些常见的性能瓶颈? 2. 如何优化虚拟机中的ZED相机性能? 3. 除了GPU直通,还有其他方法在虚拟机中使用ZED相机吗?</think>### 虚拟机中配置和使用ZED相机的方法 #### 一、前提条件 1. **硬件要求** - 主机需有NVIDIA GPU(推荐GTX 1060以上)并支持CUDA - 虚拟机需开启GPU直通(PCI Passthrough)功能 - ZED相机通过USB 3.0直连主机(虚拟机需配置USB设备直通) 2. **软件环境** - 虚拟机:VMware Workstation Pro 16+ 或 VirtualBox 6.1+(需启用3D加速) - 客户机系统:Ubuntu 18.04/20.04 LTS - 主机安装最新NVIDIA驱动(版本≥450) #### 二、配置步骤 1. **启用GPU直通** ```bash # 在主机BIOS中开启VT-d/AMD-Vi和SR-IOV支持 # VMware:虚拟机设置 → 硬件 → 添加PCI设备 → 选择GPU # VirtualBox:设置 → 系统 → 加速 → 启用EFI和嵌套虚拟化 ``` 2. **安装ZED SDK** ```bash wget https://download.stereolabs.com/zedsdk/3.8/cu113/ubuntu20 chmod +x ZED_SDK_Tegra_L4T35.1_v3.8.run ./ZED_SDK_*.run # 按提示安装CUDA和依赖库 ``` 3. **配置USB设备直通** - 在虚拟机设置中添加USB控制器(USB 3.0) - 启动虚拟机后连接ZED相机,执行: ```bash lsusb | grep "Stereolabs" # 确认设备识别 ``` 4. **验证安装** ```bash /usr/local/zed/tools/ZED_Explorer # 运行相机查看器 # 成功时显示深度图和彩色图像流 ``` #### 三、ROS集成(可选) ```bash # 安装zed-ros-wrapper cd ~/catkin_ws/src git clone https://github.com/stereolabs/zed-ros-wrapper rosdep install --from-paths . --ignore-src -r -y catkin_make -DCMAKE_BUILD_TYPE=Release source devel/setup.bash ``` #### 四、性能优化 1. **分辨率/帧率调整** 在`/usr/local/zed/settings/`修改配置文件: ```yaml resolution: 720 # 可选2K/1080p/720p/VGA fps: 30 # 高分辨率需降低帧率[^1] ``` 2. **虚拟机资源分配** - 至少分配4核CPU + 8GB RAM - 显存分配≥4GB(需在虚拟机设置中显式指定) > ⚠️ **注意** > 1. VMware需安装`open-vm-tools`和`VMware Tools` > 2. 若出现`CUDA_ERROR_DEVICE_UNAVAILABLE`,检查GPU直通配置 > 3. 实时应用(如SLAM)建议帧率≤30fps[^2] #### 五、应用示例 运行ORB-SLAM2: ```bash roslaunch zed_wrapper zed2.launch # 启动相机[^3] rosrun ORB_SLAM2 Stereo path/to/Vocabulary.txt path/to/ZED2.yaml true ``` --- ### 相关问题 1. 如何解决虚拟机中ZED相机的CUDA兼容性问题? 2. 在虚拟机环境下,ZED相机最高支持哪些分辨率和帧率组合? 3. 如何验证GPU直通是否成功支持ZED相机的深度计算? [^1]: 分辨率越高,支持的最大帧数越低,需根据传输速度调整配置 [^2]: 虚拟机中GPU直通配置对实时性有显著影响 [^3]: ROS环境下需确保相机驱动与ROS版本兼容
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值