7.1. 从 main 分支迁移到开源 v2-main 分支

7.1.1. 引言

最初,奥比中光提供了一个闭源 SDK — Orbbec SDK v1,它构成了 OrbbecSDK ROS2 Wrapper main 分支的基础。虽然 ROS 封装层本身是开源的,但它依赖于闭源的底层 SDK。这种架构限制了灵活性,阻碍了社区驱动的改进。

随着开发者越来越需要透明性、可维护性和更广泛的设备支持,奥比中光发布了全新的开源 v2-main — Orbbec SDK_v2 (GitHub 链接)。基于此 SDK,OrbbecSDK ROS2 的开源 v2-main 分支现在完全开源,提供了更好的可扩展性,并与奥比中光未来的产品路线图保持一致。

本文档介绍了将 ROS 包从 main 分支(基于 SDK v1)迁移到 v2-main 分支(基于 Orbbec SDK_v2)的动机和好处。它重点介绍了启动文件、参数、话题和服务的主要差异,并提供迁移指南帮助开发者顺利过渡。

注意: 在以下内容中,main 指闭源分支,而 v2-main 指开源 v2-main 分支。

7.1.2. 从 main 迁移到 v2-main 的优势

2024年10月,奥比中光发布了重大更新:OrbbecSDK ROS2 Wrapper v2,它完全基于开源的 Orbbec SDK_v2。与传统的 main 分支(SDK v1.x)相比,v2-main 分支(Orbbec SDK_v2.x)提供了更大的灵活性和可扩展性,同时为所有符合 UVC 标准的奥比中光 USB 产品提供全面支持。从 main --> v2-main 的迁移带来以下关键优势:

7.1.2.1. 全面的设备支持

v2-main 分支支持所有符合 UVC 标准的奥比中光 USB 相机,并将成为支持所有新发布设备的主要平台。

7.1.2.2. 透明性和可扩展性

Orbbec SDK_v2 完全开源,允许开发者直接访问底层实现,便于调试、优化和二次开发。相比之下,SDK v1 是闭源的,引入了"黑盒"约束。

7.1.2.3. 维护和更新优势

v2-main 分支提供全功能支持,包括新功能开发、性能优化和错误修复。main 分支已进入仅维护模式,只有关键错误可能获得有限更新,不再开发新功能。

7.1.2.4. 社区和生态系统支持

有了开源 SDK,开发者可以直接在 GitHub 或 Gitee 上提交问题和拉取请求,为功能演进做出贡献。这不仅加速了问题解决,还促进了更开放和活跃的奥比中光生态系统。

7.1.3. main 和 v2-main 分支的比较

7.1.3.1. 启动文件差异

  1. 在 v2-main 中,为 Gemini 330 系列添加了新的低功耗启动文件:

    • gemini_330_series_low_cpu.launch.py

  2. v2-main 引入了对 Gemini 435LeGemini 345Gemini 345Lg 相机的支持。

  3. 由于 OrbbecSDK_v2 仅支持 UVC 设备,v2-main 中支持的相机型号范围比 main 略窄。详细信息见下表。

相机 main v2-main
Gemini 435Le 不支持 gemini435_le.launch.py
Gemini 345 不支持 gemini345.launch.py
Gemini 345Lg 不支持 gemini345_lg.launch.py
Gemini 330 系列 gemini_330_series.launch.py gemini_330_series.launch.py
Gemini 330 低CPU - gemini_330_series_low_cpu.launch.py
Gemini 210 gemini210.launch.py gemini210.launch.py
Gemini 2 gemini2.launch.py gemini2.launch.py
Gemini 2L gemini2L.launch.py gemini2.launch.py
Gemini 2XL gemini2XL.launch.py -
Femto Bolt femto_bolt.launch.py femto_bolt.launch.py
Femto Mega femto_mega.launch.py femto_mega.launch.py
Femto femto.launch.py femto.launch.py
Astra 2 astra2.launch.py astra2.launch.py
Astra astra.launch.py astra.launch.py
Astra Mini Pro / S Pro astra_mini_pro.launch.py ... astra.launch.py
多相机(同步) multi_camera_synced.launch.py multi_camera_synced.launch.py
多相机(通用/通用) multi_camera.launch.py multi_camera.launch.py 或 orbbec_multicamera.launch.py
单相机通用启动 ob_camera.launch.py orbbec_camera.launch.py
OpenNI 设备(大白、得雅) 对应型号独立文件 不支持

7.1.3.2. 参数差异

v2-main 中的新参数(main 中不可用)

参数名称 main v2-main 描述
upgrade_firmware - 已添加 固件升级路径
preset_firmware_path - 已添加 预设固件文件路径
load_config_json_file_path - 已添加 加载 JSON 配置
export_config_json_file_path - 已添加 导出 JSON 配置
uvc_backend - 已添加 libuvc / v4l2 后端选择
enable_color_auto_exposure_priority - 已添加 AE 优先级控制
color_flip - 已添加 彩色图像垂直翻转
color_mirror - 已添加 彩色图像水平镜像
depth_flip - 已添加 深度图像垂直翻转
depth_mirror - 已添加 深度图像水平镜像
left_ir_flip - 已添加 左红外垂直翻转
left_ir_mirror - 已添加 左红外水平镜像
right_ir_flip - 已添加 右红外垂直翻转
right_ir_mirror - 已添加 右红外水平镜像
enable_left_ir_sequence_id_filter - 已添加 左红外序列 ID 滤波器
enable_right_ir_sequence_id_filter - 已添加 右红外序列 ID 滤波器
enable_accel_data_correction - 已添加 加速度计数据校正
enable_gyro_data_correction - 已添加 陀螺仪数据校正
enumerate_net_device - 已添加 自动枚举网络设备
net_device_ip - 已添加 网络设备 IP 地址
net_device_port - 已添加 网络设备端口
exposure_range_mode - 已添加 曝光范围模式:default / ultimate / regular
disparity_to_depth_mode - 已添加 硬件视差到深度转换
ldp_power_level - 已添加 LDP 功率级别
time_sync_period - 已添加 时间同步周期
gmsl_trigger_fps - 已添加 GMSL 触发帧率
enable_gmsl_trigger - 已添加 GMSL 触发启用
disparity_range_mode - 已添加 视差范围模式
disparity_search_offset - 已添加 视差搜索偏移
disparity_offset_config - 已添加 视差偏移配置
offset_index0 - 已添加 视差偏移索引 0
offset_index1 - 已添加 视差偏移索引 1
interleave_ae_mode - 已添加 AE 交错模式
interleave_frame_enable - 已添加 交错帧启用
interleave_skip_enable - 已添加 跳过红外帧启用
interleave_skip_index - 已添加 跳过红外帧索引
hdr_index1_laser_control - 已添加 HDR 激光控制参数
hdr_index1_depth_exposure - 已添加 HDR 深度曝光
hdr_index1_depth_gain - 已添加 HDR 深度增益
hdr_index1_ir_brightness - 已添加 HDR 红外亮度
hdr_index1_ir_ae_max_exposure - 已添加 HDR 红外最大 AE
hdr_index0_laser_control - 已添加 HDR 激光控制参数
hdr_index0_depth_exposure - 已添加 HDR 深度曝光
hdr_index0_depth_gain - 已添加 HDR 深度增益
hdr_index0_ir_brightness - 已添加 HDR 红外亮度
hdr_index0_ir_ae_max_exposure - 已添加 HDR 红外最大 AE
laser_index1_laser_control - 已添加 激光交错控制
laser_index1_depth_exposure - 已添加 激光深度曝光
laser_index1_depth_gain - 已添加 激光深度增益
laser_index1_ir_brightness - 已添加 激光红外亮度
laser_index1_ir_ae_max_exposure - 已添加 激光红外最大 AE
laser_index0_laser_control - 已添加 激光交错控制
laser_index0_depth_exposure - 已添加 激光深度曝光
laser_index0_depth_gain - 已添加 激光深度增益
laser_index0_ir_brightness - 已添加 激光红外亮度
laser_index0_ir_ae_max_exposure - 已添加 激光红外最大 AE
software_trigger_enabled - 已添加 软件触发启用
enable_ptp_config - 已添加 PTP 配置(Gemini 335Le)
align_target_stream - 已添加 对齐目标流
spatial_fast_filter_radius - 已添加 快速空间滤波器半径
spatial_moderate_filter_diff_threshold - 已添加 中等空间滤波器差异阈值
spatial_moderate_filter_magnitude - 已添加 中等空间滤波器幅度
spatial_moderate_filter_radius - 已添加 中等空间滤波器半径
color.image_raw.enable_pub_plugins - 已添加 彩色图像传输插件
depth.image_raw.enable_pub_plugins - 已添加 深度图像传输插件
left_ir.image_raw.enable_pub_plugins - 已添加 左红外传输插件
right_ir.image_raw.enable_pub_plugins - 已添加 右红外传输插件
force_ip_enable - 已添加 强制 IP 功能
force_ip_mac - 已添加 强制 IP MAC 地址
force_ip_dhcp - 已添加 DHCP 自动分配
force_ip_address - 已添加 强制 IP 静态地址
force_ip_subnet_mask - 已添加 强制 IP 子网掩码
force_ip_gateway - 已添加 强制 IP 网关

已移除参数(仅 main 有,v2-main 中已移除)

参数 描述
enable_3d_reconstruction_mode 3D 重建模式已弃用
enable_hardware_reset 硬件重置接口已弃用
enable_hardware_noise_removal_filter 硬件噪声去除滤波器已弃用
laser_on_off_mode 旧激光开关接口,由 interleave / laser_index 替换
enable_3d_reconstruction_mode 3D 重建模式重复;v2-main 中不再使用
device_preset 部分逻辑迁移到新固件 / 交错参数
enable_trigger_out 旧软件触发接口由 software_trigger_enabled 替换
retry_on_usb3_detection_failure 可选;v2-main 中逻辑已调整或移除
enable_color_undistortion 旧接口逻辑集成到其他地方;v2-main 中仍存在但使用可能已调整

7.1.3.3. 话题差异

v2-main 在 main 基础上添加了以下话题:

话题 main v2-main 描述
/camera/device_status - 已添加 发布设备状态(帧率延迟、设备连接状态等)

7.1.3.4. 服务差异

v2-main 在 main 基础上添加了以下服务:

服务 main v2-main 描述
get_ptp_config - 已添加 获取 PTP 配置
set_ptp_config - 已添加 设置 PTP 配置
get_streams_enable - 已添加 获取每个流的启用状态
set_streams_enable - 已添加 设置每个流的启用状态
get_user_calib_params - 已添加 获取用户校准参数
set_user_calib_params - 已添加 设置用户校准参数
read_customer_data - 已添加 读取用户存储的自定义数据
write_customer_data - 已添加 写入用户存储的自定义数据
send_software_trigger - 已添加 发送软件触发
set_color_ae_roi - 已添加 设置彩色图像的 AE ROI
set_depth_ae_roi - 已添加 设置深度图像的 AE ROI
set_color_flip - 已添加 设置彩色图像垂直翻转
set_depth_flip - 已添加 设置深度图像垂直翻转
set_color_rotation - 已添加 设置彩色图像旋转
set_depth_rotation - 已添加 设置深度图像旋转
set_left_ir_ae_roi - 已添加 设置左红外的 AE ROI
set_right_ir_ae_roi - 已添加 设置右红外的 AE ROI
set_left_ir_flip - 已添加 左红外垂直翻转
set_right_ir_flip - 已添加 右红外垂直翻转
set_left_ir_rotation - 已添加 左红外旋转
set_right_ir_rotation - 已添加 右红外旋转
set_reset_timestamp - 已添加 重置时间戳
set_sync_hosttime - 已添加 同步主机时间
set_sync_interleaverlaser - 已添加 交错激光同步
set_filter - 已添加 设置深度/点云滤波器