# 从 main 迁移到开源 v2-main 分支
## 简介
最初,奥比中光提供了一个**闭源 SDK —— Orbbec SDK v1**,它是 [OrbbecSDK ROS1 Wrapper main 分支](https://github.com/orbbec/OrbbecSDK_ROS1/tree/main) 的基础。虽然 ROS 封装层本身是开源的,但底层 SDK 是闭源的,这种架构限制了灵活性,也阻碍了社区驱动的改进。
随着开发者对透明性、可维护性和更广泛设备支持的需求不断增长,奥比中光发布了全新的开源 v2-main —— **Orbbec SDK_v2** ([GitHub链接](https://github.com/orbbec/OrbbecSDK/tree/v2-main))。基于该 SDK,[OrbbecSDK ROS1 的 v2-main 分支](https://github.com/orbbec/OrbbecSDK_ROS1)现已完全开源,具备更强的可扩展性,并与奥比中光未来产品路线图保持一致。
本文档介绍了将 ROS 包从 main 分支(基于 SDK v1)迁移到**开源 v2-main 分支**(基于 Orbbec SDK_v2)的动机和优势,重点对比了**启动文件、参数、话题和服务**的主要差异,并提供迁移指南,帮助开发者顺利过渡。
**注意:**下文中,**main** 指闭源分支,**v2-main** 指开源分支。
## 迁移到 v2-main 的优势
2024年10月,奥比中光发布了重大更新:**OrbbecSDK ROS1 Wrapper v2**,完全基于开源 Orbbec SDK_v2。与旧版 main 分支(SDK v1.x)相比,v2-main 分支(Orbbec SDK_v2.x)具备更高的灵活性和可扩展性,并全面支持所有符合 UVC 标准的奥比中光 USB 产品。main --> v2-main 的迁移带来以下关键优势:
### **全面设备支持**
v2-main 分支支持所有符合 UVC 标准的奥比中光 USB 相机,并将成为未来新设备的主要支持平台。
### **透明与可扩展性**
Orbbec SDK_v2 完全开源,开发者可直接访问底层实现,便于调试、优化和二次开发。而 SDK v1 为闭源,存在“黑盒”限制。
### **维护与更新优势**
v2-main 分支提供完整功能支持,包括新特性开发、性能优化和 bug 修复。main 分支已进入仅维护模式,仅修复关键 bug,不再开发新功能。
### **社区与生态支持**
开源 SDK 允许开发者直接在 GitHub 或 Gitee 提交 issue 和 pull request,推动功能演进,加速问题解决,促进更开放活跃的奥比中光生态。
## main 与 v2-main 分支对比
### **启动文件差异**
1. v2-main 新增 Gemini 330 系列低功耗启动文件:
- `gemini_330_series_low_cpu.launch`
- `gemini_330_series_nodelet_low_cpu.launch`
2. v2-main 支持 **Gemini 210** 和 **Gemini 435Le** 相机。
3. 由于 **OrbbecSDK_v2 仅支持 UVC 设备**,v2-main 支持的相机型号略少于 main,详见下表。
| **相机系列** | **main** | **v2-main** |
| -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Gemini (330系列) | gemini_330_series.launch | gemini_330_series.launch
gemini_330_series_low_cpu.launch
gemini_330_series_nodelet_low_cpu.launch
gemini_330_series_nodelet.launch |
| Gemini2系列 | gemini2.launch
gemini2L.launch
gemini2XL.launch
gemini2_nodelet.launch | gemini2.launch
gemini2L.launch |
| Gemini (E/EW/UW) | gemini_e.launch
gemini_e_lite.launch
gemini_ew.launch
gemini_ew_lite.launch
gemini_uw.launch | 不支持 |
| Gemini 其它 | 不支持 | gemini210.launch
gemini435_le.launch |
| Femto | femto_bolt.launch
femto_mega.launch
femto.launch | femto_bolt.launch
femto_mega.launch
femto.launch |
| Astra | astra_adv.launch
astra_embedded_s.launch
astra_pro2.launch
astra_stereo_u3.launch
astra.launch
astra2.launch | astra.launch
astra2.launch |
| Dabai | dabai_d1.launch
dabai_dcl.launch
dabai_dcw.launch
dabai_dcw2.launch
dabai_dw.launch
dabai_dw2.launch
dabai_max_pro.launch
dabai_max.launch
dabai_pro.launch
dabai.launch | dabai_a.launch
dabai_al.launch |
| Deeya | deeya.launch | 不支持 |
| 多相机 | multi_camera.launch | multi_camera.launch
multi_camera_nodelet.launch
multi_camera_synced.launch |
| 调试/通用 | ob_camera.launch
ob_camera_gdb.launch | ob_camera.launch
ob_camera_gdb.launch |
### **参数差异**
1. **参数变更(main --> v2-main):**
- enable_hardware_d2d --> disparity_to_depth_mode
- laser_on_off_mode ---> enable_laser
- color_backlight_compensation --> enable_color_backlight_compensation
2. **v2-main 新增参数(main 不具备)**
| **参数名** | **main** | **v2-main** | **说明** |
| ------------------------------- | -------- | ----------- | ----------------------------------------------------- |
| uvc_backend | - | 新增 | 选择 UVC 后端实现(如 V4L2/LibUVC,依平台而定) |
| depth_precision | - | 新增 | 设置深度数据精度模式(如毫米、亚毫米) |
| depth_delay_us | - | 新增 | 深度图像采集延迟(微秒) |
| color_delay_us | - | 新增 | 彩色图像采集延迟(微秒) |
| trigger2image_delay_us | - | 新增 | 外部触发信号到图像采集的延迟 |
| trigger_out_delay_us | - | 新增 | 采集到输出触发信号的延迟 |
| trigger_out_enabled | - | 新增 | 启用外部触发输出 |
| frames_per_trigger | - | 新增 | 每次触发采集的帧数 |
| software_trigger_period | - | 新增 | 软件触发模式下的触发周期 |
| enable_ptp_config | - | 新增 | 启用 PTP(精确时间协议)同步 |
| upgrade_firmware | - | 新增 | 固件升级开关 |
| preset_firmware_path | - | 新增 | 固件升级预设文件路径 |
| config_file_path | - | 新增 | 配置文件路径 |
| load_config_json_file_path | - | 新增 | 从 JSON 文件加载相机配置 |
| export_config_json_file_path | - | 新增 | 导出相机配置到 JSON 文件 |
| enumerate_net_device | - | 新增 | 枚举可用网络设备(以太网相机) |
| ip_address | - | 新增 | 设备 IP 地址 |
| port | - | 新增 | 网络端口号 |
| exposure_range_mode | - | 新增 | 曝光范围模式(自动/手动) |
| ir_info_uri | - | 新增 | 红外相机参数文件路径(yaml/ini) |
| color_info_uri | - | 新增 | 彩色相机参数文件路径 |
| color_mirror | - | 新增 | 彩色图像水平镜像 |
| color_flip | - | 新增 | 彩色图像垂直翻转 |
| enable_color_auto_exposure_priority | - | 新增 | 启用彩色图像自动曝光优先级 |
| enable_color_backlight_compensation | - | 新增 | 启用彩色图像背光补偿 |
| color_powerline_freq | - | 新增 | 电源频率(50Hz/60Hz)防止闪烁 |
| enable_color_decimation_filter | - | 新增 | 启用彩色图像降采样滤波器 |
| color_decimation_filter_scale | - | 新增 | 彩色降采样滤波器缩放因子 |
| depth_flip | - | 新增 | 深度图像垂直翻转 |
| depth_mirror | - | 新增 | 深度图像水平镜像 |
| enable_depth_auto_exposure_priority | - | 新增 | 启用深度图像自动曝光优先级 |
| mean_intensity_set_point | - | 新增 | 自动曝光目标亮度 |
| left_ir_flip | - | 新增 | 左红外图像垂直翻转 |
| left_ir_mirror | - | 新增 | 左红外图像水平镜像 |
| enable_left_ir_sequence_id_filter | - | 新增 | 启用左红外帧序列号过滤 |
| left_ir_sequence_id_filter_id | - | 新增 | 左红外指定序列号过滤 |
| right_ir_flip | - | 新增 | 右红外图像垂直翻转 |
| right_ir_mirror | - | 新增 | 右红外图像水平镜像 |
| enable_right_ir_sequence_id_filter | - | 新增 | 启用右红外帧序列号过滤 |
| right_ir_sequence_id_filter_id | - | 新增 | 右红外指定序列号过滤 |
| ir_brightness | - | 新增 | 红外图像亮度调节 |
| align_target_stream | - | 新增 | 点云对齐目标流(如彩色/深度) |
| enable_hardware_noise_removal_filter | - | 新增 | 启用硬件去噪滤波器 |
| enable_spatial_fast_filter | - | 新增 | 启用快速空间滤波器 |
| enable_spatial_moderate_filter | - | 新增 | 启用中等空间滤波器 |
| hardware_noise_removal_filter_threshold | - | 新增 | 硬件去噪滤波器阈值 |
| spatial_fast_filter_radius | - | 新增 | 快速空间滤波器半径 |
| spatial_moderate_filter_diff_threshold | - | 新增 | 中等空间滤波器差分阈值 |
| spatial_moderate_filter_magnitude | - | 新增 | 中等空间滤波器强度 |
| spatial_moderate_filter_radius | - | 新增 | 中等空间滤波器半径 |
| decimation_filter_scale_range | - | 新增 | 降采样缩放范围 |
| interleave_ae_mode | - | 新增 | 交替模式下自动曝光模式 |
| interleave_frame_enable | - | 新增 | 启用交替帧模式 |
| interleave_skip_enable | - | 新增 | 交替模式下启用跳帧 |
| interleave_skip_index | - | 新增 | 跳帧索引 |
| hdr_index1_* | - | 新增 | HDR模式配置(通道1参数) |
| hdr_index0_* | - | 新增 | HDR模式配置(通道0参数) |
| laser_index1_* | - | 新增 | 激光配置(通道1参数) |
| laser_index0_* | - | 新增 | 激光配置(通道0参数) |
| enable_accel_data_correction | - | 新增 | 启用加速度计数据校正 |
| enable_gyro_data_correction | - | 新增 | 启用陀螺仪数据校正 |
| linear_accel_cov | - | 新增 | 线性加速度协方差配置 |
| disparity_range_mode | - | 新增 | 视差范围模式 |
| disparity_search_offset | - | 新增 | 视差搜索偏移 |
| disparity_offset_config | - | 新增 | 视差偏移配置 |
| offset_index0 | - | 新增 | 视差偏移索引0 |
| offset_index1 | - | 新增 | 视差偏移索引1 |
| force_ip_enable | - | 新增 | 启用强制IP配置 |
| force_ip_mac | - | 新增 | 强制IP的MAC地址 |
| force_ip_dhcp | - | 新增 | 强制IP启用DHCP |
| force_ip_address | - | 新增 | 强制分配IP地址 |
| force_ip_subnet_mask | - | 新增 | 强制分配子网掩码 |
| force_ip_gateway | - | 新增 | 强制分配网关 |
### **话题差异**
**v2-main** 新增如下话题:
| **话题** | **main** | **v2-main** | **说明** |
| --------------------- | -------- | ----------- | ----------------------------------------------------- |
| /camera/device_status | - | 新增 | 发布设备状态(帧率延迟、设备连接状态等) |
### **服务差异**
**v2-main** 新增如下服务:
| **服务** | **main** | **v2-main** | **说明** |
| --------------------- | -------- | ----------- | ---------------------------- |
| get_ptp_config | - | 新增 | 获取PTP配置 |
| set_ptp_config | - | 新增 | 设置PTP配置 |
| set_color_ae_roi | - | 新增 | 设置彩色流自动曝光ROI |
| set_color_flip | - | 新增 | 设置彩色流翻转 |
| set_color_rotation | - | 新增 | 设置彩色流旋转 |
| set_depth_ae_roi | - | 新增 | 设置深度流自动曝光ROI |
| set_depth_flip | - | 新增 | 设置深度流翻转 |
| set_depth_rotation | - | 新增 | 设置深度流旋转 |
| set_right_ir_flip | - | 新增 | 设置右红外流翻转 |
| set_right_ir_ae_roi | - | 新增 | 设置右红外流自动曝光ROI |
| set_right_ir_rotation | - | 新增 | 设置右红外流旋转 |
| set_left_ir_flip | - | 新增 | 设置左红外流翻转 |
| set_left_ir_ae_roi | - | 新增 | 设置左红外流自动曝光ROI |
| set_left_ir_rotation | - | 新增 | 设置左红外流旋转 |
| read_customer_data | - | 新增 | 读取用户自定义数据 |
| write_customer_data | - | 新增 | 写入用户自定义数据 |
| set_filter | - | 新增 | 配置深度/点云滤波器 |