diff --git a/docs/en/source/7_developer_guide/developer_guide.rst b/docs/en/source/7_developer_guide/developer_guide.rst index 32d94ac4..0b870daf 100644 --- a/docs/en/source/7_developer_guide/developer_guide.rst +++ b/docs/en/source/7_developer_guide/developer_guide.rst @@ -6,5 +6,6 @@ This chapter provides documents for developers and maintainers of the SDK. .. toctree:: :maxdepth: 2 + migration_guide.md building_a_Debian_Package.md diff --git a/docs/en/source/7_developer_guide/migration_guide.md b/docs/en/source/7_developer_guide/migration_guide.md new file mode 100644 index 00000000..11bb8e4e --- /dev/null +++ b/docs/en/source/7_developer_guide/migration_guide.md @@ -0,0 +1,196 @@ +# Migrating from main to Open-Source v2-main + +## **Introduction** + +Initially, Orbbec provided a **closed-source SDK — Orbbec SDK v1**, which formed the foundation of the [OrbbecSDK ROS2 Wrapper main branch](https://github.com/orbbec/OrbbecSDK_ROS2/tree/main). Although the ROS wrapper layer itself was open-source, it relied on a closed-source underlying SDK. This architecture imposed limitations on flexibility and hindered community-driven improvements. + +As developers increasingly demanded transparency, maintainability, and broader device support, Orbbec released a brand-new open-source v2-main **— Orbbec SDK_v2** ([GitHub link](https://github.com/orbbec/OrbbecSDK/tree/v2-main)). Based on this SDK, the [open-source v2-main branch of OrbbecSDK ROS2](https://github.com/orbbec/OrbbecSDK_ROS2) is now fully open source, offering greater extensibility and alignment with Orbbec’s future product roadmap. + +This document introduces the motivations and benefits of migrating ROS packages from the main branch (based on SDK v1) to the v2-main branch (based on Orbbec SDK_v2). It highlights the key differences in **launch files, parameters, topics, and services**, and provides a migration guide to help developers smoothly transition. + +**Note:** In the following content, **main** refers to the closed-source branch, while **v2-main** refers to the open-source v2-main branch. + +## **Advantages of Migrating from main to v2-main** + +In October 2024, Orbbec released a major update: **OrbbecSDK ROS2 Wrapper v2**, which is entirely based on the open-source Orbbec SDK_v2. Compared to the legacy main branch (SDK v1.x), the v2-main branch (Orbbec SDK_v2.x) provides greater flexibility and scalability, while offering comprehensive support for all Orbbec USB products that comply with the UVC standard.The migration from main --> v2-main brings the following key advantages: + +### **Comprehensive Device Support** + +The v2-main branch supports all UVC-compliant Orbbec USB cameras and will be the primary platform for supporting all newly released devices. + +### **Transparency and Extensibility** + +Orbbec SDK_v2 is fully open-source, allowing developers to directly access the underlying implementation for easier debugging, optimization, and secondary development. By contrast, SDK v1 was closed-source, introducing a “black-box” constraint. + +### Advantages in Maintenance and Updates + +The v2-main branch offers full-featured support, including new feature development, performance optimization, and bug fixes. The main branch has entered a maintenance-only mode, where only critical bugs may receive limited updates, and no new features are being developed. + +### **Community and Ecosystem Support** + +With an open-source SDK, developers can directly submit issues and pull requests on GitHub or Gitee, contributing to feature evolution. This not only accelerates problem resolution but also fosters a more open and active Orbbec ecosystem. + +## Comparison Between main and v2-main Branches + +### **Launch File Differences** + +1. In v2-main, new low-power launch file has been added for the Gemini 330 series: + - `gemini_330_series_low_cpu.launch.py` +2. v2-main introduces support for **Gemini 435Le**, **Gemini 345**, and **Gemini 345Lg** cameras. +3. Since **OrbbecSDK_v2 only supports UVC devices**, the range of camera models supported in v2-main is slightly narrower than in main. Detailed information is provided in the table below. + +| **camera** | **main** | **v2-main** | +| ---------------------------------- | ------------------------------------ | -------------------------------------------------- | +| Gemini 435Le | Not supported | gemini435_le.launch.py | +| Gemini 345 | Not supported | gemini345.launch.py | +| Gemini 345Lg | Not supported | gemini345_lg.launch.py | +| Gemini 330 series | gemini_330_series.launch.py | gemini_330_series.launch.py | +| Gemini 330 low 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 (Synchronized) | multi_camera_synced.launch.py | multi_camera_synced.launch.py | +| Multi-Camera (Generic / Universal) | multi_camera.launch.py | multi_camera.launch.pyorbbec_multicamera.launch.py | +| Single-Camera Generic Launch | ob_camera.launch.py | orbbec_camera.launch.py | +| OpenNI devices (Dabai、Deeya) | Corresponding model independent file | Not supported | + +### **Parameter Differences** + +**New Parameters in v2-main (not available in main)** + +| **Parameter Name** | **main** | **v2-main** | **Description** | +| -------------------------------------- | -------- | ----------- | ------------------------------------------------- | +| upgrade_firmware | - | Added | Firmware upgrade path | +| preset_firmware_path | - | Added | Preset firmware file path | +| load_config_json_file_path | - | Added | Load JSON configuration | +| export_config_json_file_path | - | Added | Export JSON configuration | +| uvc_backend | - | Added | libuvc / v4l2 backend selection | +| enable_color_auto_exposure_priority | - | Added | AE priority control | +| color_flip | - | Added | Color image vertical flip | +| color_mirror | - | Added | Color image horizontal mirror | +| depth_flip | - | Added | Depth image vertical flip | +| depth_mirror | - | Added | Depth image horizontal mirror | +| left_ir_flip | - | Added | Left IR vertical flip | +| left_ir_mirror | - | Added | Left IR horizontal mirror | +| right_ir_flip | - | Added | Right IR vertical flip | +| right_ir_mirror | - | Added | Right IR horizontal mirror | +| enable_left_ir_sequence_id_filter | - | Added | Left IR sequence ID filter | +| enable_right_ir_sequence_id_filter | - | Added | Right IR sequence ID filter | +| enable_accel_data_correction | - | Added | Accelerometer data correction | +| enable_gyro_data_correction | - | Added | Gyroscope data correction | +| enumerate_net_device | - | Added | Automatic enumeration of network devices | +| net_device_ip | - | Added | Network device IP address | +| net_device_port | - | Added | Network device port | +| exposure_range_mode | - | Added | Exposure range mode: default / ultimate / regular | +| disparity_to_depth_mode | - | Added | Hardware disparity-to-depth conversion | +| ldp_power_level | - | Added | LDP power level | +| time_sync_period | - | Added | Time synchronization period | +| gmsl_trigger_fps | - | Added | GMSL trigger frame rate | +| enable_gmsl_trigger | - | Added | GMSL trigger enable | +| disparity_range_mode | - | Added | Disparity range mode | +| disparity_search_offset | - | Added | Disparity search offset | +| disparity_offset_config | - | Added | Disparity offset configuration | +| offset_index0 | - | Added | Disparity offset index 0 | +| offset_index1 | - | Added | Disparity offset index 1 | +| interleave_ae_mode | - | Added | AE interleave mode | +| interleave_frame_enable | - | Added | Interleaved frame enable | +| interleave_skip_enable | - | Added | Skip IR frame enable | +| interleave_skip_index | - | Added | Skip IR frame index | +| hdr_index1_laser_control | - | Added | HDR laser control parameters | +| hdr_index1_depth_exposure | - | Added | HDR depth exposure | +| hdr_index1_depth_gain | - | Added | HDR depth gain | +| hdr_index1_ir_brightness | - | Added | HDR IR brightness | +| hdr_index1_ir_ae_max_exposure | - | Added | HDR IR max AE | +| hdr_index0_laser_control | - | Added | HDR laser control parameters | +| hdr_index0_depth_exposure | - | Added | HDR depth exposure | +| hdr_index0_depth_gain | - | Added | HDR depth gain | +| hdr_index0_ir_brightness | - | Added | HDR IR brightness | +| hdr_index0_ir_ae_max_exposure | - | Added | HDR IR max AE | +| laser_index1_laser_control | - | Added | Laser interleave control | +| laser_index1_depth_exposure | - | Added | Laser depth exposure | +| laser_index1_depth_gain | - | Added | Laser depth gain | +| laser_index1_ir_brightness | - | Added | Laser IR brightness | +| laser_index1_ir_ae_max_exposure | - | Added | Laser IR max AE | +| laser_index0_laser_control | - | Added | Laser interleave control | +| laser_index0_depth_exposure | - | Added | Laser depth exposure | +| laser_index0_depth_gain | - | Added | Laser depth gain | +| laser_index0_ir_brightness | - | Added | Laser IR brightness | +| laser_index0_ir_ae_max_exposure | - | Added | Laser IR max AE | +| software_trigger_enabled | - | Added | Software trigger enable | +| enable_ptp_config | - | Added | PTP configuration (Gemini 335Le) | +| align_target_stream | - | Added | Target stream for alignment | +| spatial_fast_filter_radius | - | Added | Fast spatial filter radius | +| spatial_moderate_filter_diff_threshold | - | Added | Moderate spatial filter difference threshold | +| spatial_moderate_filter_magnitude | - | Added | Moderate spatial filter magnitude | +| spatial_moderate_filter_radius | - | Added | Moderate spatial filter radius | +| color.image_raw.enable_pub_plugins | - | Added | Color image transport plugins | +| depth.image_raw.enable_pub_plugins | - | Added | Depth image transport plugins | +| left_ir.image_raw.enable_pub_plugins | - | Added | Left IR transport plugins | +| right_ir.image_raw.enable_pub_plugins | - | Added | Right IR transport plugins | +| force_ip_enable | - | Added | Force IP feature | +| force_ip_mac | - | Added | Force IP MAC address | +| force_ip_dhcp | - | Added | DHCP auto assignment | +| force_ip_address | - | Added | Force IP static address | +| force_ip_subnet_mask | - | Added | Force IP subnet mask | +| force_ip_gateway | - | Added | Force IP gateway | + +**Removed Parameters (main only, removed in v2-main)** + +| **Parameter** | **Description** | +| ------------------------------------ | ------------------------------------------------------------ | +| enable_3d_reconstruction_mode | 3D reconstruction mode deprecated | +| enable_hardware_reset | Hardware reset interface deprecated | +| enable_hardware_noise_removal_filter | Hardware noise removal filter deprecated | +| laser_on_off_mode | Old laser on/off interface, replaced by interleave / laser_index | +| enable_3d_reconstruction_mode | 3D reconstruction mode repeated; no longer used in v2-main | +| device_preset | Some logic migrated to new firmware / interleave parameters | +| enable_trigger_out | Old software trigger interface replaced by software_trigger_enabled | +| retry_on_usb3_detection_failure | Optional; logic adjusted or removed in v2-main | +| enable_color_undistortion | Old interface logic integrated elsewhere; still exists in v2-main but usage may be adjusted | + +### **Topic Differences** + +**v2-main** adds the following topics based on main: + +| **Topic** | **main** | **v2-main** | **Description** | +| --------------------- | -------- | ----------- | ------------------------------------------------------------ | +| /camera/device_status | - | Added | Publishes device status (frame rate delay, device connection status, etc.) | + +### **Service Differences** + +**v2-main** adds the following services based on main: + +| **Service** | **main** | **v2-main** | **Description** | +| ------------------------- | -------- | ----------- | ------------------------------------ | +| get_ptp_config | - | Added | Get PTP configuration | +| set_ptp_config | - | Added | Set PTP configuration | +| get_streams_enable | - | Added | Get the enable status of each stream | +| set_streams_enable | - | Added | Set the enable status of each stream | +| get_user_calib_params | - | Added | Get user calibration parameters | +| set_user_calib_params | - | Added | Set user calibration parameters | +| read_customer_data | - | Added | Read user-stored custom data | +| write_customer_data | - | Added | Write user-stored custom data | +| send_software_trigger | - | Added | Send software trigger | +| set_color_ae_roi | - | Added | Set AE ROI for color image | +| set_depth_ae_roi | - | Added | Set AE ROI for depth image | +| set_color_flip | - | Added | Set color image vertical flip | +| set_depth_flip | - | Added | Set depth image vertical flip | +| set_color_rotation | - | Added | Set color image rotation | +| set_depth_rotation | - | Added | Set depth image rotation | +| set_left_ir_ae_roi | - | Added | Set AE ROI for left IR | +| set_right_ir_ae_roi | - | Added | Set AE ROI for right IR | +| set_left_ir_flip | - | Added | Left IR vertical flip | +| set_right_ir_flip | - | Added | Right IR vertical flip | +| set_left_ir_rotation | - | Added | Left IR rotation | +| set_right_ir_rotation | - | Added | Right IR rotation | +| set_reset_timestamp | - | Added | Reset timestamp | +| set_sync_hosttime | - | Added | Synchronize host time | +| set_sync_interleaverlaser | - | Added | Interleaver laser synchronization | +| set_filter | - | Added | Set depth/point cloud filters | diff --git a/docs/zh/source/7_developer_guide/developer_guide.rst b/docs/zh/source/7_developer_guide/developer_guide.rst index 9dad8b9c..1c242a06 100644 --- a/docs/zh/source/7_developer_guide/developer_guide.rst +++ b/docs/zh/source/7_developer_guide/developer_guide.rst @@ -6,4 +6,5 @@ .. toctree:: :maxdepth: 2 + migration_guide.md building_a_Debian_Package.md diff --git a/docs/zh/source/7_developer_guide/migration_guide.md b/docs/zh/source/7_developer_guide/migration_guide.md new file mode 100644 index 00000000..c5c6217e --- /dev/null +++ b/docs/zh/source/7_developer_guide/migration_guide.md @@ -0,0 +1,196 @@ +# 从 main 分支迁移到开源 v2-main 分支 + +## **引言** + +最初,奥比中光提供了一个**闭源 SDK — Orbbec SDK v1**,它构成了 [OrbbecSDK ROS2 Wrapper main 分支](https://github.com/orbbec/OrbbecSDK_ROS2/tree/main)的基础。虽然 ROS 封装层本身是开源的,但它依赖于闭源的底层 SDK。这种架构限制了灵活性,阻碍了社区驱动的改进。 + +随着开发者越来越需要透明性、可维护性和更广泛的设备支持,奥比中光发布了全新的开源 v2-main **— Orbbec SDK_v2** ([GitHub 链接](https://github.com/orbbec/OrbbecSDK/tree/v2-main))。基于此 SDK,[OrbbecSDK ROS2 的开源 v2-main 分支](https://github.com/orbbec/OrbbecSDK_ROS2)现在完全开源,提供了更好的可扩展性,并与奥比中光未来的产品路线图保持一致。 + +本文档介绍了将 ROS 包从 main 分支(基于 SDK v1)迁移到 v2-main 分支(基于 Orbbec SDK_v2)的动机和好处。它重点介绍了**启动文件、参数、话题和服务**的主要差异,并提供迁移指南帮助开发者顺利过渡。 + +**注意:** 在以下内容中,**main** 指闭源分支,而 **v2-main** 指开源 v2-main 分支。 + +## **从 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 的迁移带来以下关键优势: + +### **全面的设备支持** + +v2-main 分支支持所有符合 UVC 标准的奥比中光 USB 相机,并将成为支持所有新发布设备的主要平台。 + +### **透明性和可扩展性** + +Orbbec SDK_v2 完全开源,允许开发者直接访问底层实现,便于调试、优化和二次开发。相比之下,SDK v1 是闭源的,引入了"黑盒"约束。 + +### 维护和更新优势 + +v2-main 分支提供全功能支持,包括新功能开发、性能优化和错误修复。main 分支已进入仅维护模式,只有关键错误可能获得有限更新,不再开发新功能。 + +### **社区和生态系统支持** + +有了开源 SDK,开发者可以直接在 GitHub 或 Gitee 上提交问题和拉取请求,为功能演进做出贡献。这不仅加速了问题解决,还促进了更开放和活跃的奥比中光生态系统。 + +## main 和 v2-main 分支的比较 + +### **启动文件差异** + +1. 在 v2-main 中,为 Gemini 330 系列添加了新的低功耗启动文件: + - `gemini_330_series_low_cpu.launch.py` +2. v2-main 引入了对 **Gemini 435Le**、**Gemini 345** 和 **Gemini 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 设备(大白、得雅) | 对应型号独立文件 | 不支持 | + +### **参数差异** + +**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 中仍存在但使用可能已调整 | + +### **话题差异** + +**v2-main** 在 main 基础上添加了以下话题: + +| **话题** | **main** | **v2-main** | **描述** | +| --------------------- | -------- | ----------- | ------------------------------------------------------------ | +| /camera/device_status | - | 已添加 | 发布设备状态(帧率延迟、设备连接状态等) | + +### **服务差异** + +**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 | - | 已添加 | 设置深度/点云滤波器 |