7.1. Migrating from main to Open-Source v2-main
7.1.1. Introduction
Initially, Orbbec provided a closed-source SDK — Orbbec SDK v1, which formed the foundation of the OrbbecSDK ROS2 Wrapper main branch. 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). Based on this SDK, the open-source v2-main branch of 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.
7.1.2. 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:
7.1.2.1. 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.
7.1.2.2. 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.
7.1.2.3. 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.
7.1.2.4. 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.
7.1.3. Comparison Between main and v2-main Branches
7.1.3.1. Launch File Differences
In v2-main, new low-power launch file has been added for the Gemini 330 series:
gemini_330_series_low_cpu.launch.py
v2-main introduces support for Gemini 435Le, Gemini 345, and Gemini 345Lg cameras.
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 |
7.1.3.2. 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 |
7.1.3.3. 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.) |
7.1.3.4. 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 |