A – Overview
The Orbbec Viewer tool and Orbbec SDK, as well as wrappers (for instance ROS 1 Wrapper, ROS 2 Wrapper, etc.), supports diverse predefined depth presets which should be selected appropriately according to the dedicated use cases and can provide users with more favorable depth performance in comparison to using a universal depth configuration.
The predefined presets are listed in a table below. The table includes major features for each predefined depth preset, along with recommend use cases.
Users of Gemini 330 series cameras can also modify relevant depth settings and save a customized depth preset. All the settings can be selected via the tool’s menu of Orbbec Viewer. We use machine learning algorithms and capture of ground truth datasets to optimize presets for certain conditions, and we may add more presets in the future.
The key to obtain a good depth performance is to start from our recommended depth defaults:
- Gemini 335: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
- Gemini 330: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
- Gemini 336: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
- Gemini 335L: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
- Gemini 330L: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
- Gemini 336L: 1280 x 800 @30fps, with auto-exposure enabled, post-processing with default settings.
If you have poor depth performance, please try manual exposure first and adjust exposure value of depth sensor. Keep depth sensor gain value as low as possible (preferably 16) and adjust laser power as necessary.
B – Supported Devices
Gemini 330 series, including Gemini 335, Gemini 330, Gemini 336, Gemini 335L, Gemini 330L, Gemini 336L and new cameras of this series coming up later.
C – Table of Predefined Presets
Preset | Features | Recommended use cases |
Default | ● Best visual perception
● Overall good performance in accuracy, fill rate, tiny objects, etc. |
● Generic
● Robotics |
Hand | ● Clear hand and finger edges | ● Gesture recognition |
High
Accuracy |
● Depth of high confidence
● Barely noise depth values ● Lower fill rate |
● Collision avoidance
● Object scanning |
High
Density |
● Higher fill rate
● More tiny objects ● May suffer from noise depth values |
● Object recognition
● Pick & place ● Foreground & background manipulation |
Medium
Density |
● Balanced performance in fill rate and accuracy
● In comparison to Default: lower fill rate, better edge quality |
● Generic and alternative to Default |
Custom | ● User defined Preset
● Dervied from Presets above, with customized modifications, e.g. a new configuration for the post-processing pipeline, modified mean intensity set point of depth AE function, etc. |
● Better depth performance achieved using customized configurations in comparison to using predefined presets
● For well-established custom configurations |
AMR with IR-Pass | ● For Gemini 336 & Gemini 336L only
● Reduce the impact of strong light and improve the depth issues caused by high visible light reflection ● Overall good performance in accuracy, fill rate, tiny objects, etc. |
● Autonomous Mobile Robot |
D – Example Captures under Diverse Presets
Please refer to the example captures below using the diverse presets. The depth presets are evaluated and compared based on a 3D scene including a variety of object types, materials, textures, reflectivities and distances.
All images were acquired with following settings/conditions:
Ambient fluorescent lighting: 150 – 200 Lux, approximately |
||
Depth | RGB | |
Resolution | 1280 x 800 | 1280 x 720 |
Frame Rate | 30fps | 30fps |
Auto Exposure | enabled | enabled |
D1 – Gemini 335 & 330 & 336
Gemini 335 & 330 & 336 3D Camera |
|
Scene RGB Image | |
Scene Depth Image
@ Preset: – Default
|
|
|
|
Scene Depth Image
@ Preset: – Hand |
|
|
|
Scene Depth Image
@ Preset: – High Accuracy |
|
|
|
Scene Depth Image
@ Preset: – High Density |
|
|
|
Scene Depth Image
@ Preset: – Medium Density |
|
|
|
Scene Depth Image
@ Preset: – AMR with IR-Pass
|
|
|
D2 – Gemini 335L & 330L & 336L
Gemini 335L & 330L & 336L 3D Camera | |
Scene RGB Image | |
Scene Depth Image
@ Preset: – Default
|
|
|
|
Scene Depth Image
@ Preset: – Hand |
|
|
|
Scene Depth Image
@ Preset: – High Accuracy |
|
|
|
Scene Depth Image
@ Preset: – High Density |
|
|
|
Scene Depth Image
@ Preset: – Medium Density |
|
|
|
Scene Depth Image
@ Preset: – AMR with IR-Pass
|
|
|
E – Use Presets
E1 – Orbbec Viewer
Preset | Default | Default => High Accuracy | High Accuracy |
Orbbec
Viewer |
In the table above, we illustrate how to switch the Depth Preset option from Default to High Accuracy. The drop box for the Depth Preset option is located at tof left of Orbbec Viewer under Device Control settings group. All depth presets available for selection are listed in the drop box and an arbitrary selection is valid if streams are all disabled. A switch between different depth presets while depth or ir streaming will lead to unexpected depth performance. This must be avoided under any conditions.
E2 – Orbbec SDK
E2A – C/C++ APIs
C++ APIs:
// header file: libobsensor\hpp\Device.hpp
/**
* @brief Get current preset name
* @brief The preset mean a set of parameters or configurations that can be applied to the device to achieve a specific effect or function.
* @return const char* return the current preset name, it should be one of the preset names returned by @ref getAvailablePresetList.
*/
const char *getCurrentPresetName();/**
* @brief load the preset according to the preset name.
* @attention After loading the preset, the settings in the preset will set to the device immediately. Therefore, it is recommended to re-read the device
* settings to update the user program temporarily.
* @param presetName The preset name to set. The name should be one of the preset names returned by @ref getAvailablePresetList.
*/
void loadPreset(const char *presetName);
C APIs:
// header file: libobsensor\Ddevice.h
/**
* @breif Get the current preset name.
* @brief The preset mean a set of parameters or configurations that can be applied to the device to achieve a specific effect or function.
*
* @param device The device object.
* @param error Log error messages.
* @return The current preset name, it should be one of the preset names returned by @ref ob_device_get_available_preset_list.
*/
const char *ob_device_get_current_preset_name(ob_device *device, ob_error **error);/**
* @brief Get the available preset list.
* @attention After loading the preset, the settings in the preset will set to the device immediately. Therefore, it is recommended to re-read the device
* settings to update the user program temporarily.
*
* @param device The device object.
* @param preset_name Log error messages. The name should be one of the preset names returned by @ref ob_device_get_available_preset_list.
* @param error Log error messages.
*/
void ob_device_load_preset(ob_device *device, const char *preset_name, ob_error **error);
E2B – C++ Code Sample:
// Create a Context.
ob::Context ctx;// Query the list of connected devices
auto devList = ctx.queryDeviceList();// Create a device, 0 means the index of the first device
auto dev = devList->getDevice(0);// Get the current preset name
auto devicePreset = dev->getCurrentPresetName();// Switch the preset to “High Accuracy”
auto newPreset = “High Accuracy”;
dev->loadPreset(newPreset);
E3 – ROS Wrapper
E3A – ROS 1
To configure the depth preset for RealSense cameras in ROS 1, update your launch file as demonstrated below. For detailed information about the available depth presets, refer to the Preset Table provided above. It is crucial to avoid switching depth presets online while streaming.
<launch>
<!– Additional pre-existing configurations –><!– Setting the depth preset for the camera –>
<arg name=”device_preset” default=”Default”/><!– Additional subsequent configurations –>
</launch>
E3B – ROS 2
For ROS 2 users, the procedure to set the depth preset involves using the DeclareLaunchArgument function within the launch file. Ensure to select the preset prior to streaming as online switches between depth presets are not recommended.
# Other pre-existing configurations…
# Setting the depth preset for the camera
DeclareLaunchArgument(‘device_preset’, default_value=’Default’),# Additional subsequent configurations…