mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-09-12 03:00:20 +08:00
update OrbbecSDK version to 2.8.7
This commit is contained in:
@@ -226,9 +226,10 @@ OB_EXPORT bool ob_device_preset_list_has_preset(const ob_device_preset_list *pre
|
||||
* @return bool Returns true if the device supports the frame interleave feature.
|
||||
*/
|
||||
OB_EXPORT bool ob_device_is_frame_interleave_supported(const ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief load the frame interleave mode according to frame interleavee name.
|
||||
* @brief load the frame interleave mode according to frame interleave name.
|
||||
*
|
||||
* @param[in] device The device object.
|
||||
* @param[in] frame_interleave_name The name should be one of the frame interleave names returned by @ref ob_device_get_available_frame_interleave_list.
|
||||
@@ -236,6 +237,19 @@ OB_EXPORT bool ob_device_is_frame_interleave_supported(const ob_device *device,
|
||||
*/
|
||||
OB_EXPORT void ob_device_load_frame_interleave(ob_device *device, const char *frame_interleave_name, ob_error **error);
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Get current frame interleave name.
|
||||
*
|
||||
* @param[in] device The device object.
|
||||
* @param[out] error Pointer to an error object that will be set if an error occurs.
|
||||
*
|
||||
* @return const char* return the current frame interleave name.
|
||||
* Returns an empty string ("") if no interleave is loaded.
|
||||
* Returns nullptr if an error occurs.
|
||||
*/
|
||||
OB_EXPORT const char *ob_device_get_current_frame_interleave_name(const ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* @brief Get the available frame interleave list.
|
||||
*
|
||||
|
||||
@@ -281,6 +281,30 @@ OB_EXPORT void ob_log_external_message(ob_log_severity severity, const char *mod
|
||||
*/
|
||||
OB_EXPORT void ob_set_extensions_directory(const char *directory, ob_error **error);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set the host-side timestamp clock type for the current context.
|
||||
*
|
||||
* @attention All ob::Context instances share the same underlying SDK runtime and clock type.
|
||||
* @attention Switching affects frame system and global timestamps; avoid switching during streaming.
|
||||
* @attention It is recommended to synchronize device timestamps after switching.
|
||||
*
|
||||
* @param[in] context Pointer to the context object
|
||||
* @param[in] clock_type The clock type to use for host-side timestamps
|
||||
* @param[out] error Pointer to an error object that will be populated if an error occurs
|
||||
*/
|
||||
OB_EXPORT void ob_context_set_timestamp_clock_type(ob_context *context, ob_clock_type clock_type, ob_error **error);
|
||||
|
||||
/**
|
||||
* @brief Get the current host-side timestamp clock type for the context.
|
||||
*
|
||||
* @param[in] context Pointer to the context object
|
||||
* @param[out] error Pointer to an error object that will be populated if an error occurs
|
||||
*
|
||||
* @return ob_clock_type The current clock type
|
||||
*/
|
||||
OB_EXPORT ob_clock_type ob_context_get_timestamp_clock_type(const ob_context *context, ob_error **error);
|
||||
|
||||
// The following interfaces are deprecated and are retained here for compatibility purposes.
|
||||
#define ob_enable_multi_device_sync ob_enable_device_clock_sync
|
||||
#define ob_set_logger_callback ob_set_logger_to_callback
|
||||
|
||||
@@ -2030,6 +2030,15 @@ typedef enum {
|
||||
} ob_ip_source_type,
|
||||
OBIpSourceType;
|
||||
|
||||
/**
|
||||
* @brief Host-side timestamp clock type for device.
|
||||
*/
|
||||
typedef enum {
|
||||
OB_CLOCK_TYPE_REALTIME = 0, /**< Wall clock (system_clock), epoch-based. Default. */
|
||||
OB_CLOCK_TYPE_MONOTONIC = 1, /**< System monotonic clock, non-epoch. */
|
||||
} OBClockType,
|
||||
ob_clock_type;
|
||||
|
||||
/**
|
||||
* @brief Callback for file transfer
|
||||
*
|
||||
|
||||
@@ -85,6 +85,33 @@ public:
|
||||
Error::handle(&error, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the host-side timestamp clock type for the current context.
|
||||
*
|
||||
* @attention All ob::Context instances share the same underlying SDK runtime and clock type.
|
||||
* @attention Switching affects frame system and global timestamps; avoid switching during streaming.
|
||||
* @attention It is recommended to synchronize device timestamps after switching.
|
||||
*
|
||||
* @param[in] type The clock type to use for host-side timestamps.
|
||||
*/
|
||||
void setTimestampClockType(OBClockType type) const {
|
||||
ob_error *error = nullptr;
|
||||
ob_context_set_timestamp_clock_type(impl_, type, &error);
|
||||
Error::handle(&error);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the current host-side timestamp clock type for the context.
|
||||
*
|
||||
* @return OBClockType The current clock type.
|
||||
*/
|
||||
OBClockType getTimestampClockType() const {
|
||||
ob_error *error = nullptr;
|
||||
auto type = ob_context_get_timestamp_clock_type(impl_, &error);
|
||||
Error::handle(&error);
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Queries the enumerated device list.
|
||||
*
|
||||
|
||||
@@ -839,6 +839,24 @@ public:
|
||||
Error::handle(&error);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Get current frame interleave name.
|
||||
*
|
||||
* @param[in] device The device object.
|
||||
* @param[out] error Pointer to an error object that will be set if an error occurs.
|
||||
*
|
||||
* @return const char* return the current frame interleave name.
|
||||
* Returns an empty string ("") if no interleave is loaded.
|
||||
* Returns nullptr if an error occurs.
|
||||
*/
|
||||
OB_EXPORT const char *getCurrentFrameInterleaveName() const {
|
||||
ob_error *error = nullptr;
|
||||
auto name = ob_device_get_current_frame_interleave_name(impl_, &error);
|
||||
Error::handle(&error);
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get available frame interleave list
|
||||
*
|
||||
|
||||
@@ -481,6 +481,97 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief UnDistortionFilter removes lens distortion from a chosen stream (Color, IR, or Depth).
|
||||
*
|
||||
* Usage (pure color undistortion, sync_align scenario):
|
||||
* @code
|
||||
* auto filter = std::make_shared<ob::UnDistortionFilter>();
|
||||
* // default stream type is COLOR, default mode is pure undistortion
|
||||
* filter->pushFrame(frameSet);
|
||||
* @endcode
|
||||
*
|
||||
* Usage (virtual-camera mode, hw_d2c_align scenario):
|
||||
* @code
|
||||
* auto filter = std::make_shared<ob::UnDistortionFilter>();
|
||||
* // Pass the raw depth intrinsic — filter computes the scale to color resolution internally.
|
||||
* filter->setNewCameraMatrix(depthIntrinsic);
|
||||
* filter->pushFrame(frameSet);
|
||||
* @endcode
|
||||
*
|
||||
* Usage (depth undistortion — must use nearest-neighbor interpolation):
|
||||
* @code
|
||||
* auto filter = std::make_shared<ob::UnDistortionFilter>(OB_STREAM_DEPTH);
|
||||
* filter->setInterpolationMode(0); // nearest neighbor avoids ghost-depth artefacts
|
||||
* @endcode
|
||||
*/
|
||||
class UnDistortionFilter : public Filter {
|
||||
public:
|
||||
explicit UnDistortionFilter(OBStreamType streamType = OB_STREAM_COLOR) {
|
||||
ob_error *error = nullptr;
|
||||
auto impl = ob_create_filter("UnDistortionFilter", &error);
|
||||
Error::handle(&error);
|
||||
init(impl);
|
||||
setConfigValue("StreamType", static_cast<double>(streamType));
|
||||
}
|
||||
|
||||
virtual ~UnDistortionFilter() noexcept override = default;
|
||||
|
||||
/**
|
||||
* @brief Set which stream to undistort (default: OB_STREAM_COLOR).
|
||||
* For depth streams, also call setInterpolationMode(0).
|
||||
*/
|
||||
void setStreamType(OBStreamType streamType) {
|
||||
setConfigValue("StreamType", static_cast<double>(streamType));
|
||||
}
|
||||
|
||||
OBStreamType getStreamType() const {
|
||||
return static_cast<OBStreamType>(static_cast<int>(getConfigValue("StreamType")));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the new camera matrix used to project the undistorted image
|
||||
* (equivalent to OpenCV's `newCameraMatrix` argument in
|
||||
* `cv::undistort(src, dst, cameraMatrix, distCoeffs, newCameraMatrix)`).
|
||||
*
|
||||
* Pass the raw depth camera intrinsic. The filter scales fx/fy/cx/cy from
|
||||
* the depth resolution to the actual color frame resolution at process time,
|
||||
* so the caller does NOT need to compute the scale factor.
|
||||
*
|
||||
* The new-camera-matrix mode is enabled as long as depthIntrinsic.width > 0.
|
||||
* Call clearNewCameraMatrix() to return to pure undistortion.
|
||||
*
|
||||
* @param depthIntrinsic The depth camera intrinsic at its native resolution.
|
||||
*/
|
||||
void setNewCameraMatrix(OBCameraIntrinsic depthIntrinsic) {
|
||||
setConfigValue("NewCameraFx", static_cast<double>(depthIntrinsic.fx));
|
||||
setConfigValue("NewCameraFy", static_cast<double>(depthIntrinsic.fy));
|
||||
setConfigValue("NewCameraCx", static_cast<double>(depthIntrinsic.cx));
|
||||
setConfigValue("NewCameraCy", static_cast<double>(depthIntrinsic.cy));
|
||||
setConfigValue("NewCameraWidth", static_cast<double>(depthIntrinsic.width));
|
||||
setConfigValue("NewCameraHeight", static_cast<double>(depthIntrinsic.height));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clear the new camera matrix and return to pure undistortion.
|
||||
*/
|
||||
void clearNewCameraMatrix() {
|
||||
setConfigValue("NewCameraWidth", 0.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the pixel interpolation mode.
|
||||
* @param mode 0 = nearest-neighbor (required for depth), 1 = bilinear (default).
|
||||
*/
|
||||
void setInterpolationMode(int mode) {
|
||||
setConfigValue("InterpolationMode", static_cast<double>(mode));
|
||||
}
|
||||
|
||||
int getInterpolationMode() const {
|
||||
return static_cast<int>(getConfigValue("InterpolationMode"));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The FormatConvertFilter class is a subclass of Filter that performs format conversion.
|
||||
*/
|
||||
@@ -1380,6 +1471,23 @@ public:
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fpebfMinBleedLength range.
|
||||
*
|
||||
* @return OBUint16PropertyRange the fpebfMinBleedLength value of property range.
|
||||
*/
|
||||
OBUint16PropertyRange getfpebfMinBleedLengthRange() {
|
||||
OBUint16PropertyRange range{};
|
||||
const auto &schemaVec = getConfigSchemaVec();
|
||||
for(const auto &item: schemaVec) {
|
||||
if(strcmp(item.name, "fpebfMinBleedLength") == 0) {
|
||||
range = getPropertyRange<OBUint16PropertyRange>(item, getConfigValue("fpebfMinBleedLength"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fpTextureSparsityFilterEnable range.
|
||||
*
|
||||
@@ -1617,6 +1725,74 @@ public:
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fppafMaxWidthRatio range.
|
||||
*
|
||||
* @return OBFloatPropertyRange the fppafMaxWidthRatio value of property range.
|
||||
*/
|
||||
OBFloatPropertyRange getfppafMaxWidthRatioRange() {
|
||||
OBFloatPropertyRange range{};
|
||||
const auto &schemaVec = getConfigSchemaVec();
|
||||
for(const auto &item: schemaVec) {
|
||||
if(strcmp(item.name, "fppafMaxWidthRatio") == 0) {
|
||||
range = getPropertyRange<OBFloatPropertyRange>(item, getConfigValue("fppafMaxWidthRatio"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fppafMaxHeightRatio range.
|
||||
*
|
||||
* @return OBFloatPropertyRange the fppafMaxHeightRatio value of property range.
|
||||
*/
|
||||
OBFloatPropertyRange getfppafMaxHeightRatioRange() {
|
||||
OBFloatPropertyRange range{};
|
||||
const auto &schemaVec = getConfigSchemaVec();
|
||||
for(const auto &item: schemaVec) {
|
||||
if(strcmp(item.name, "fppafMaxHeightRatio") == 0) {
|
||||
range = getPropertyRange<OBFloatPropertyRange>(item, getConfigValue("fppafMaxHeightRatio"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fppafTolerance range.
|
||||
*
|
||||
* @return OBFloatPropertyRange the fppafTolerance value of property range.
|
||||
*/
|
||||
OBFloatPropertyRange getfppafToleranceRange() {
|
||||
OBFloatPropertyRange range{};
|
||||
const auto &schemaVec = getConfigSchemaVec();
|
||||
for(const auto &item: schemaVec) {
|
||||
if(strcmp(item.name, "fppafTolerance") == 0) {
|
||||
range = getPropertyRange<OBFloatPropertyRange>(item, getConfigValue("fppafTolerance"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the FalsePositive filter fppafScore range.
|
||||
*
|
||||
* @return OBUint16PropertyRange the fppafScore value of property range.
|
||||
*/
|
||||
OBUint16PropertyRange getfppafScoreRange() {
|
||||
OBUint16PropertyRange range{};
|
||||
const auto &schemaVec = getConfigSchemaVec();
|
||||
for(const auto &item: schemaVec) {
|
||||
if(strcmp(item.name, "fppafScore") == 0) {
|
||||
range = getPropertyRange<OBUint16PropertyRange>(item, getConfigValue("fppafScore"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return range;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2001,6 +2177,7 @@ inline const std::unordered_map<std::string, std::type_index> &getFilterTypeMap(
|
||||
{ "FalsePositiveFilter", typeid(FalsePositiveFilter) },
|
||||
{ "MgcNoiseRemovalFilter", typeid(MgcNoiseRemovalFilter) },
|
||||
{ "LutNoiseRemovalFilter", typeid(LutNoiseRemovalFilter) },
|
||||
{ "UnDistortionFilter", typeid(UnDistortionFilter) },
|
||||
};
|
||||
return filterTypeMap;
|
||||
}
|
||||
|
||||
@@ -8,12 +8,12 @@ set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
# Import target "ob::OrbbecSDK" for configuration "Release"
|
||||
set_property(TARGET ob::OrbbecSDK APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(ob::OrbbecSDK PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.6"
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.7"
|
||||
IMPORTED_SONAME_RELEASE "libOrbbecSDK.so.2"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets ob::OrbbecSDK )
|
||||
list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.6" )
|
||||
list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.7" )
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
|
||||
@@ -9,19 +9,19 @@
|
||||
# The variable CVF_VERSION must be set before calling configure_file().
|
||||
|
||||
|
||||
set(PACKAGE_VERSION "2.8.6")
|
||||
set(PACKAGE_VERSION "2.8.7")
|
||||
|
||||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
|
||||
if("2.8.6" MATCHES "^([0-9]+)\\.")
|
||||
if("2.8.7" MATCHES "^([0-9]+)\\.")
|
||||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
|
||||
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
|
||||
endif()
|
||||
else()
|
||||
set(CVF_VERSION_MAJOR "2.8.6")
|
||||
set(CVF_VERSION_MAJOR "2.8.7")
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION_RANGE)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
libOrbbecSDK.so.2.8.6
|
||||
libOrbbecSDK.so.2.8.7
|
||||
BIN
Binary file not shown.
@@ -8,12 +8,12 @@ set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
# Import target "ob::OrbbecSDK" for configuration "Release"
|
||||
set_property(TARGET ob::OrbbecSDK APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(ob::OrbbecSDK PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.6"
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.7"
|
||||
IMPORTED_SONAME_RELEASE "libOrbbecSDK.so.2"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets ob::OrbbecSDK )
|
||||
list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.6" )
|
||||
list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.8.7" )
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
|
||||
@@ -9,19 +9,19 @@
|
||||
# The variable CVF_VERSION must be set before calling configure_file().
|
||||
|
||||
|
||||
set(PACKAGE_VERSION "2.8.6")
|
||||
set(PACKAGE_VERSION "2.8.7")
|
||||
|
||||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
|
||||
if("2.8.6" MATCHES "^([0-9]+)\\.")
|
||||
if("2.8.7" MATCHES "^([0-9]+)\\.")
|
||||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
|
||||
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
|
||||
endif()
|
||||
else()
|
||||
set(CVF_VERSION_MAJOR "2.8.6")
|
||||
set(CVF_VERSION_MAJOR "2.8.7")
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION_RANGE)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
libOrbbecSDK.so.2.8.6
|
||||
libOrbbecSDK.so.2.8.7
|
||||
BIN
Binary file not shown.
@@ -82,7 +82,13 @@
|
||||
|
||||
<!-- GVCP port scheme: Standard = default port, SchemeB = custom port -->
|
||||
<GVCPPortScheme>Standard</GVCPPortScheme>
|
||||
|
||||
|
||||
<!-- Host-side clock type for device timestamps.
|
||||
Options: Realtime, Monotonic.
|
||||
Realtime: Wall clock (system_clock), epoch-based.
|
||||
Monotonic: Monotonic clock, not tied to epoch. -->
|
||||
<ClockSource>Realtime</ClockSource>
|
||||
|
||||
<!-- Gemini305 config -->
|
||||
<Gemini305>
|
||||
<!-- Default backend for Linux UVC devices. If the LinuxUVCBackend is set to "Auto,"
|
||||
@@ -292,6 +298,125 @@
|
||||
</RightIR>
|
||||
</Gemini305g>
|
||||
|
||||
<!-- Gemini309g config -->
|
||||
<Gemini309g>
|
||||
<!-- The default Linux UVC backend. If the LinuxUVCBackend is set to "Auto," this item
|
||||
will determine the device's speciality. Optional values: V4L2, LibUVC -->
|
||||
<LinuxUVCDefaultBackend>LibUVC</LinuxUVCDefaultBackend>
|
||||
|
||||
<!-- Enable auto device reboot when a fatal XU channel IO error (LIBUSB_ERROR_IO) is
|
||||
detected on the LibUVC backend. Set to true to enable; default is false. -->
|
||||
<LinuxUVCAutoRebootOnFault>true</LinuxUVCAutoRebootOnFault>
|
||||
|
||||
<Misc>
|
||||
<GlobalTimestampFitterEnable>true</GlobalTimestampFitterEnable>
|
||||
<!-- Global timestamp fitter refresh interval, unit: milliseconds, default value:
|
||||
1000,
|
||||
minimum value: 100, it is recommended not to be greater than 1000 -->
|
||||
<GlobalTimestampFitterInterval>1000</GlobalTimestampFitterInterval>
|
||||
<!-- Global timestamp fitter queue size, default value: 100, minimum value: 20 -->
|
||||
<GlobalTimestampFitterQueueSize>100</GlobalTimestampFitterQueueSize>
|
||||
</Misc>
|
||||
|
||||
<DepthPostProcessing>
|
||||
<HardwareNoiseRemoveFilter>true</HardwareNoiseRemoveFilter>
|
||||
<SoftwareNoiseRemoveFilter>false</SoftwareNoiseRemoveFilter>
|
||||
</DepthPostProcessing>
|
||||
|
||||
<!-- Whether to enable heartbeat by default -->
|
||||
<DefaultHeartBeat>0</DefaultHeartBeat>
|
||||
<!-- Whether to enable firmware upgrade foolproof by default, only internal version
|
||||
supports -->
|
||||
<FirmwareUpgradeFoolproof>1</FirmwareUpgradeFoolproof>
|
||||
<Depth>
|
||||
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||
<StreamFailedRetry>1</StreamFailedRetry>
|
||||
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||
the open flow will fail -->
|
||||
<MaxStartStreamDelayMs>3000</MaxStartStreamDelayMs>
|
||||
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||
that the stream is interrupted -->
|
||||
<MaxFrameIntervalMs>6000</MaxFrameIntervalMs>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>848</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>530</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>Y16</Format>
|
||||
</Depth>
|
||||
<Color>
|
||||
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||
<StreamFailedRetry>1</StreamFailedRetry>
|
||||
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||
the open flow will fail -->
|
||||
<MaxStartStreamDelayMs>3000</MaxStartStreamDelayMs>
|
||||
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||
that the stream is interrupted -->
|
||||
<MaxFrameIntervalMs>6000</MaxFrameIntervalMs>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>848</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>530</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>YUYV</Format>
|
||||
</Color>
|
||||
<LeftColor>
|
||||
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||
<StreamFailedRetry>1</StreamFailedRetry>
|
||||
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||
the open flow will fail -->
|
||||
<MaxStartStreamDelayMs>3000</MaxStartStreamDelayMs>
|
||||
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||
that the stream is interrupted -->
|
||||
<MaxFrameIntervalMs>6000</MaxFrameIntervalMs>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>1280</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>800</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>YUYV</Format>
|
||||
</LeftColor>
|
||||
<RightColor>
|
||||
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||
<StreamFailedRetry>1</StreamFailedRetry>
|
||||
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||
the open flow will fail -->
|
||||
<MaxStartStreamDelayMs>3000</MaxStartStreamDelayMs>
|
||||
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||
that the stream is interrupted -->
|
||||
<MaxFrameIntervalMs>6000</MaxFrameIntervalMs>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>1280</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>800</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>YUYV</Format>
|
||||
</RightColor>
|
||||
<LeftIR>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>848</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>530</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>Y8</Format>
|
||||
</LeftIR>
|
||||
<RightIR>
|
||||
<!-- The resolution width is enabled by default, int type -->
|
||||
<Width>848</Width>
|
||||
<!-- High resolution is enabled by default, int type -->
|
||||
<Height>530</Height>
|
||||
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||
<FPS>30</FPS>
|
||||
<Format>Y8</Format>
|
||||
</RightIR>
|
||||
</Gemini309g>
|
||||
|
||||
|
||||
<FemtoMega>
|
||||
<!-- For Femto-Mega devices, it must be set to V4L2, LibUVC is not supported -->
|
||||
<LinuxUVCDefaultBackend>V4L2</LinuxUVCDefaultBackend>
|
||||
|
||||
@@ -48,6 +48,7 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="081a", MODE:="066
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="081b", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_338Le"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="081c", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_338L"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="081d", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_331L"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0845", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_309g"
|
||||
|
||||
# OpenNI Modules
|
||||
SUBSYSTEM=="usb", ATTR{idProduct}=="0400", ATTR{idVendor}=="2bc5", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="astra_bootloader"
|
||||
|
||||
Reference in New Issue
Block a user