奥比中光 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-DepthViewer
、Sample-ColorViewer
和 Sample-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")
: 设置编译模式。常用的编译模式有Debug
和Release
。Debug
模式用于调试,包含调试信息,不进行优化;Release
模式用于发布,进行优化,不包含调试信息。set_property(TARGET main PROPERTY CXX_STANDARD 11)
: 指定 C++ 标准。常用的 C++ 标准有11
、14
、17
和20
。选择合适的 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 将会报错。