奥比中光Gemini 2L快速入门:SDK配置与CMAKE构建指南

85

奥比中光 Gemini 2L 快速上手指南:配置、测试与 CMAKE 设置详解

目录

一、下载配置环境

1.1 官网下载SDK

要开始使用奥比中光 Gemini 2L,首先需要从官方网站下载相应的 SDK。访问 奥比中光开发者平台,找到与 Gemini 2L 型号匹配的 SDK 版本。下载时请注意选择与你的操作系统和开发环境相对应的版本,通常会有针对不同 Linux 发行版的预编译包。

1.2 配置环境

在 Ubuntu 系统中,解压下载的 SDK 压缩包。接下来,按照官方教程进行环境配置。通常包括安装必要的依赖项、设置环境变量以及配置 udev 规则。特别注意,如果在设备连接后,lbusb 没有检测到 Gemini 2L 设备,尝试重启系统。这通常可以解决设备识别问题。如果按照教程操作后仍然存在问题,检查 USB 连接是否稳定,或者尝试更换 USB 端口。

二、测试

2.1 在 bin 中运行示例

SDK 的 bin 目录下包含了编译好的示例程序,可以直接运行以验证环境配置是否正确。这些示例程序涵盖了图像、深度、红外和点云数据的获取。例如,在 OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta 目录下,你可以找到以下内容:

  • 99-obsensor-libusb.rules: udev 设备匹配规则文件,用于系统识别奥比中光设备。
  • Examples: 示例程序目录。
    • bin: 编译后的二进制文件存放目录。
    • c: C 语言例程。
      • Sample-ColorViewer: 演示如何使用 SDK 获取彩色数据并显示,以及如何获取和设置分辨率。
      • Sample-DepthViewer: 演示如何使用 SDK 获取深度数据并显示,以及如何获取和设置分辨率。
      • Sample-HelloOrbbec: 演示如何连接设备并获取 SDK 版本和设备信息。
      • Sample-HotPlugin: 演示设备热插拔监控,自动连接和断开设备。
      • Sample-InfraredViewer: 演示如何使用 SDK 获取红外数据并显示,以及如何获取和设置分辨率。
      • Sample-PointCloud: 演示如何生成深度点云或 RGBD 点云,并保存为 PLY 格式文件。
      • Sample-SensorControl: 演示如何对设备和传感器进行控制操作。
    • cpp: C++ 语言例程。
      • 包含了与 C 语言例程类似的示例,以及一些额外的示例,如 IMU 数据读取、多设备操作、视频文件回放、录制视频流、保存图像到磁盘以及同步对齐等。
  • install.sh: udev 设备匹配规则的安装脚本。
  • README.md: 说明文档。
  • SDK: 存放 SDK 头文件与库文件,开发自己的程序时需要使用此目录中的文件。
    • include: SDK 头文件目录。
      • libobsensor
        • h: C 语言头文件
        • hpp: C++ 语言头文件
    • lib: SDK 库文件。

通过运行这些示例程序,你可以快速了解 SDK 的基本功能和使用方法。例如,运行 Sample-DepthViewer 可以显示深度图像,Sample-ColorViewer 可以显示彩色图像,Sample-PointCloud 可以生成点云数据。

2.2 配置 cmake

如果你想基于 SDK 开发自己的应用程序,需要配置 CMake 构建系统。以下是一个简单的 CMakeLists.txt 示例:


cmake_minimum_required(VERSION 3.1.15)
project(Sample-HelloOrbbec)

SET(CMAKE_BUILD_TYPE Release)

add_executable(HelloOrbbec HelloOrbbec.cpp)

set_property(TARGET HelloOrbbec PROPERTY CXX_STANDARD 11)
target_link_libraries(HelloOrbbec /home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/lib/libOrbbecSDK.so)

include_directories(/home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/include)
link_directories(/home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/lib)

这个 CMakeLists.txt 文件的作用如下:

  • cmake_minimum_required(VERSION 3.1.15): 指定 CMake 的最低版本要求。
  • project(Sample-HelloOrbbec): 设置项目名称。
  • add_executable(HelloOrbbec HelloOrbbec.cpp): 指定可执行文件的名称和源文件。
  • set(CMAKE_BUILD_TYPE Release): 设置编译类型为 Release。
  • set_property(TARGET HelloOrbbec PROPERTY CXX_STANDARD 11): 指定 C++ 标准为 C++11。
  • target_link_libraries(HelloOrbbec ...): 链接 SDK 库文件。需要将 /home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/lib/libOrbbecSDK.so 替换为实际的库文件路径。
  • include_directories(...): 指定头文件目录。需要将 /home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/include 替换为实际的头文件目录。
  • link_directories(...): 指定库文件目录。需要将 /home/dxfcv/workspace/sunsirui/3D/OrbbecSDK_C_C++_v1.5.7_Gemini2L-P02_20230704_b951449_linux_x64_beta/SDK/lib 替换为实际的库文件目录。

更详细的解释如下:

cmake_minimum_required (VERSION 3.1.15) # cmake最低版本


add_executable(main ${PROJECT_SOURCE_DIR}/src/main.cpp) # 生成文件名和源文件名

set(CMAKE_BUILD_TYPE "Debug") # 设置编译模式

set_property(TARGET main PROPERTY CXX_STANDARD 11) # 设置c++版本

target_link_libraries(main ${PROJECT_SOURCE_DIR}/lib/first.so) # 设置链接库

include_directories(${PROJECT_SOURCE_DIR}/include) # 设置头文件目录

link_directories(${PROJECT_SOURCE_DIR}/lib) # 设置链接库文件目录

完成 CMakeLists.txt 文件的配置后,可以按照以下步骤构建项目:

mkdir build
cd build
cmake ..
make
./HelloOrbbec

如果一切顺利,你将看到示例程序的结果。

下图展示了运行 Sample-DepthViewerSample-ColorViewerSample-PointCloud 示例程序的结果。

请添加图片描述 请添加图片描述 请添加图片描述

请添加图片描述

三、CMAKE

3.1 CmakeLists.txt 中各设置的意义

CMakeLists.txt 文件是 CMake 构建系统的核心配置文件,用于指导 CMake 如何构建项目。以下是 CMakeLists.txt 文件中常用设置的含义:

cmake_minimum_required (VERSION 3.1.15) # cmake最低版本


add_executable(main ${PROJECT_SOURCE_DIR}/src/main.cpp) # 生成文件名和源文件名

set(CMAKE_BUILD_TYPE "Debug") # 设置编译模式

set_property(TARGET main PROPERTY CXX_STANDARD 11) # 设置c++版本

target_link_libraries(main ${PROJECT_SOURCE_DIR}/lib/first.so) # 设置链接库

include_directories(${PROJECT_SOURCE_DIR}/include) # 设置头文件目录

link_directories(${PROJECT_SOURCE_DIR}/lib) # 设置链接库文件目录

  • cmake_minimum_required(VERSION 3.1.15): 指定 CMake 的最低版本要求。确保使用的 CMake 版本不低于此版本,否则可能会出现兼容性问题。
  • project(test): 设置项目名称。这个名称会影响生成的可执行文件的名称和构建目录的名称。
  • add_executable(main ${PROJECT_SOURCE_DIR}/src/main.cpp): 指定可执行文件的名称和源文件。${PROJECT_SOURCE_DIR} 表示项目源代码的根目录。main 是可执行文件的名称,${PROJECT_SOURCE_DIR}/src/main.cpp 是源文件的路径。
  • set(CMAKE_BUILD_TYPE "Debug"): 设置编译模式。常用的编译模式有 DebugReleaseDebug 模式用于调试,包含调试信息,不进行优化;Release 模式用于发布,进行优化,不包含调试信息。
  • set_property(TARGET main PROPERTY CXX_STANDARD 11): 指定 C++ 标准。常用的 C++ 标准有 11141720。选择合适的 C++ 标准可以确保代码在不同的编译器上具有一致的行为。
  • target_link_libraries(main ${PROJECT_SOURCE_DIR}/lib/first.so): 链接库文件。${PROJECT_SOURCE_DIR}/lib/first.so 是库文件的路径。需要链接的库文件可以是静态库(.a 文件)或动态库(.so 文件)。
  • include_directories(${PROJECT_SOURCE_DIR}/include): 指定头文件目录。编译器会在这些目录中查找头文件。${PROJECT_SOURCE_DIR}/include 是头文件目录的路径。
  • link_directories(${PROJECT_SOURCE_DIR}/lib): 指定库文件目录。链接器会在这些目录中查找库文件。${PROJECT_SOURCE_DIR}/lib 是库文件目录的路径。
  • LINK_LIBRARIES: 必须使用绝对路径。这个命令用于指定需要链接的库文件,必须使用绝对路径。
  • find_package(OpenCV REQUIRED): 查找库的配置文件。这个命令用于查找指定库的配置文件,例如 OpenCV。REQUIRED 关键字表示如果找不到库,则 CMake 将会报错。