mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-11 23:09:51 +08:00
Merge branch 'customer/sdk_2.8.2_338' into merge/sdk_2.8.2
This commit is contained in:
@@ -1756,7 +1756,336 @@
|
|||||||
<Format>Y8</Format>
|
<Format>Y8</Format>
|
||||||
</RightIR>
|
</RightIR>
|
||||||
</Gemini338>
|
</Gemini338>
|
||||||
|
<Gemini338Lg>
|
||||||
|
<!-- Default backend for Linux UVC devices. If the LinuxUVCBackend is set to "Auto,"
|
||||||
|
this item will determine the device's speciality. Optional values: V4L2, LibUVC -->
|
||||||
|
<LinuxUVCDefaultBackend>LibUVC</LinuxUVCDefaultBackend>
|
||||||
|
|
||||||
|
<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 Filter Params -->
|
||||||
|
<!--
|
||||||
|
<DepthFilterDDOConfig>./Gemini2_v1.0.json</DepthFilterDDOConfig>
|
||||||
|
-->
|
||||||
|
<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>3000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>3000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>1280</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>720</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>MJPG</Format>
|
||||||
|
</Color>
|
||||||
|
<LeftIR>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>480</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>Y8</Format>
|
||||||
|
</RightIR>
|
||||||
|
</Gemini338Lg>
|
||||||
|
<!-- Gemini338Le config -->
|
||||||
|
<Gemini338Le>
|
||||||
|
<!-- Whether to enable heartbeat by default -->
|
||||||
|
<DefaultHeartBeat>0</DefaultHeartBeat>
|
||||||
|
<!-- Whether to enable firmware upgrade foolproof by default, only internal version
|
||||||
|
supports -->
|
||||||
|
<FirmwareUpgradeFoolproof>1</FirmwareUpgradeFoolproof>
|
||||||
|
<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>false</HardwareNoiseRemoveFilter>
|
||||||
|
<SoftwareNoiseRemoveFilter>true</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 Filter Params -->
|
||||||
|
<!--
|
||||||
|
<DepthFilterDDOConfig>./Gemini2_v1.0.json</DepthFilterDDOConfig>
|
||||||
|
-->
|
||||||
|
<Depth>
|
||||||
|
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||||
|
<StreamFailedRetry>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>640</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>400</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>15</FPS>
|
||||||
|
<Format>Y16</Format>
|
||||||
|
</Depth>
|
||||||
|
<Color>
|
||||||
|
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||||
|
<StreamFailedRetry>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>640</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>400</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>15</FPS>
|
||||||
|
<Format>MJPG</Format>
|
||||||
|
</Color>
|
||||||
|
<LeftIR>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>640</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>400</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>15</FPS>
|
||||||
|
<Format>Y8</Format>
|
||||||
|
</LeftIR>
|
||||||
|
<RightIR>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>640</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>400</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>15</FPS>
|
||||||
|
<Format>Y8</Format>
|
||||||
|
</RightIR>
|
||||||
|
</Gemini338Le>
|
||||||
|
<Gemini338L>
|
||||||
|
<!-- Default backend for Linux UVC devices. If the LinuxUVCBackend is set to "Auto,"
|
||||||
|
this item will determine the device's speciality. Optional values: V4L2, LibUVC -->
|
||||||
|
<LinuxUVCDefaultBackend>LibUVC</LinuxUVCDefaultBackend>
|
||||||
|
|
||||||
|
<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 Filter Params -->
|
||||||
|
<!--
|
||||||
|
<DepthFilterDDOConfig>./Gemini2_v1.0.json</DepthFilterDDOConfig>
|
||||||
|
-->
|
||||||
|
<Depth>
|
||||||
|
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||||
|
<StreamFailedRetry>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>1280</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>720</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>MJPG</Format>
|
||||||
|
</Color>
|
||||||
|
<LeftIR>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>480</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>Y8</Format>
|
||||||
|
</RightIR>
|
||||||
|
</Gemini338L>
|
||||||
|
<Gemini331L>
|
||||||
|
<!-- Default backend for Linux UVC devices. If the LinuxUVCBackend is set to "Auto,"
|
||||||
|
this item will determine the device's speciality. Optional values: V4L2, LibUVC -->
|
||||||
|
<LinuxUVCDefaultBackend>LibUVC</LinuxUVCDefaultBackend>
|
||||||
|
|
||||||
|
<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 Filter Params -->
|
||||||
|
<!--
|
||||||
|
<DepthFilterDDOConfig>./Gemini2_v1.0.json</DepthFilterDDOConfig>
|
||||||
|
-->
|
||||||
|
<Depth>
|
||||||
|
<!-- Number of retries for open stream failures, 0 means no retries -->
|
||||||
|
<StreamFailedRetry>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>0</StreamFailedRetry>
|
||||||
|
<!-- Open flow waits for the timeout period of the first frame of data, after which
|
||||||
|
the open flow will fail -->
|
||||||
|
<MaxStartStreamDelayMs>2000</MaxStartStreamDelayMs>
|
||||||
|
<!-- The maximum frame interval time, if this value is exceeded, it will be judged
|
||||||
|
that the stream is interrupted -->
|
||||||
|
<MaxFrameIntervalMs>2000</MaxFrameIntervalMs>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>1280</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>720</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>MJPG</Format>
|
||||||
|
</Color>
|
||||||
|
<LeftIR>
|
||||||
|
<!-- The resolution width is enabled by default, int type -->
|
||||||
|
<Width>848</Width>
|
||||||
|
<!-- High resolution is enabled by default, int type -->
|
||||||
|
<Height>480</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>480</Height>
|
||||||
|
<!-- The frame rate of the resolution enabled by default, int type -->
|
||||||
|
<FPS>30</FPS>
|
||||||
|
<Format>Y8</Format>
|
||||||
|
</RightIR>
|
||||||
|
</Gemini331L>
|
||||||
<!--DaBaiA config-->
|
<!--DaBaiA config-->
|
||||||
<DaBaiA>
|
<DaBaiA>
|
||||||
<!-- The default Linux UVC backend. If the LinuxUVCBackend is set to "Auto," this item
|
<!-- The default Linux UVC backend. If the LinuxUVCBackend is set to "Auto," this item
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#define OB_ROS_MAJOR_VERSION 2
|
#define OB_ROS_MAJOR_VERSION 2
|
||||||
#define OB_ROS_MINOR_VERSION 8
|
#define OB_ROS_MINOR_VERSION 8
|
||||||
#define OB_ROS_PATCH_VERSION 1
|
#define OB_ROS_PATCH_VERSION 2.1
|
||||||
|
|
||||||
#ifndef STRINGIFY
|
#ifndef STRINGIFY
|
||||||
#define STRINGIFY(arg) #arg
|
#define STRINGIFY(arg) #arg
|
||||||
@@ -135,10 +135,14 @@ const int32_t CUSTOM_ADVANTECH_GEMINI_336_PID = 0x0816; // Custom Advantech Ge
|
|||||||
const int32_t CUSTOM_ADVANTECH_GEMINI_336L_PID = 0x0817; // Custom Advantech Gemini 336L
|
const int32_t CUSTOM_ADVANTECH_GEMINI_336L_PID = 0x0817; // Custom Advantech Gemini 336L
|
||||||
const int32_t DABAI_MAX_PID = 0x069a; // dabai max
|
const int32_t DABAI_MAX_PID = 0x069a; // dabai max
|
||||||
const int32_t GEMINI_338_PID = 0x0818; // Gemini 338
|
const int32_t GEMINI_338_PID = 0x0818; // Gemini 338
|
||||||
const uint16_t GEMINI_435Le_PID = 0x815; // Gemini 435Le
|
const int32_t GEMINI_435Le_PID = 0x815; // Gemini 435Le
|
||||||
const uint16_t GEMINI_305_PID = 0x0840; // Gemini 305
|
const int32_t GEMINI_305_PID = 0x0840; // Gemini 305
|
||||||
const uint16_t GEMINI_305_PID2 = 0x0841; // Gemini 305
|
const int32_t GEMINI_305_PID2 = 0x0841; // Gemini 305
|
||||||
const uint16_t GEMINI_305G_PID = 0x0842; // Gemini 305g
|
const int32_t GEMINI_305G_PID = 0x0842; // Gemini 305g
|
||||||
|
const int32_t GEMINI_338LG_PID = 0x081A; // Gemini 338Lg
|
||||||
|
const int32_t GEMINI_338LE_PID = 0x081B; // Gemini 338Le
|
||||||
|
const int32_t GEMINI_338L_PID = 0x081C; // Gemini 338L
|
||||||
|
const int32_t GEMINI_331L_PID = 0x081D; // Gemini 331L
|
||||||
|
|
||||||
inline bool isGemini305SeriesPID(uint32_t pid) {
|
inline bool isGemini305SeriesPID(uint32_t pid) {
|
||||||
return pid == GEMINI_305_PID || pid == GEMINI_305_PID2 || pid == GEMINI_305G_PID;
|
return pid == GEMINI_305_PID || pid == GEMINI_305_PID2 || pid == GEMINI_305G_PID;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
<package format="3">
|
<package format="3">
|
||||||
<name>orbbec_camera</name>
|
<name>orbbec_camera</name>
|
||||||
<version>2.8.1</version>
|
<version>2.8.2</version>
|
||||||
<description>Orbbec Camera package</description>
|
<description>Orbbec Camera package</description>
|
||||||
<maintainer email="[email protected]">Joe Dong</maintainer>
|
<maintainer email="[email protected]">Joe Dong</maintainer>
|
||||||
<license>Apache-2.0</license>
|
<license>Apache-2.0</license>
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0840", MODE:="066
|
|||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0841", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_305"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0841", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_305"
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0842", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_305g"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0842", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_305g"
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0843", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_301g"
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0843", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_301g"
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="081a", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini_338Lg"
|
||||||
|
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"
|
||||||
|
|
||||||
# OpenNI Modules
|
# OpenNI Modules
|
||||||
SUBSYSTEM=="usb", ATTR{idProduct}=="0400", ATTR{idVendor}=="2bc5", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="astra_bootloader"
|
SUBSYSTEM=="usb", ATTR{idProduct}=="0400", ATTR{idVendor}=="2bc5", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="astra_bootloader"
|
||||||
|
|||||||
@@ -3437,8 +3437,7 @@ void OBCameraNode::setDepthAutoExposureROI() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "color") {
|
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "color") {
|
||||||
RCLCPP_WARN_STREAM(logger_,
|
RCLCPP_WARN_STREAM(logger_, "Skip setting depth AE ROI because AE Reference Stream is color");
|
||||||
"Skip setting depth AE ROI because AE Reference Stream is color");
|
|
||||||
depth_roi_has_run = true;
|
depth_roi_has_run = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3483,8 +3482,7 @@ void OBCameraNode::setColorAutoExposureROI() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "depth") {
|
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "depth") {
|
||||||
RCLCPP_WARN_STREAM(logger_,
|
RCLCPP_WARN_STREAM(logger_, "Skip setting color AE ROI because AE Reference Stream is depth");
|
||||||
"Skip setting color AE ROI because AE Reference Stream is depth");
|
|
||||||
color_roi_has_run = true;
|
color_roi_has_run = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -4717,7 +4715,8 @@ bool OBCameraNode::isGemini335PID(uint32_t pid) {
|
|||||||
pid == GEMINI_335L_PID || pid == GEMINI_330L_PID || pid == GEMINI_336L_PID ||
|
pid == GEMINI_335L_PID || pid == GEMINI_330L_PID || pid == GEMINI_336L_PID ||
|
||||||
pid == GEMINI_335LG_PID || pid == GEMINI_336LG_PID || pid == GEMINI_335LE_PID ||
|
pid == GEMINI_335LG_PID || pid == GEMINI_336LG_PID || pid == GEMINI_335LE_PID ||
|
||||||
pid == GEMINI_336LE_PID || pid == CUSTOM_ADVANTECH_GEMINI_336_PID ||
|
pid == GEMINI_336LE_PID || pid == CUSTOM_ADVANTECH_GEMINI_336_PID ||
|
||||||
pid == CUSTOM_ADVANTECH_GEMINI_336L_PID || pid == GEMINI_338_PID;
|
pid == CUSTOM_ADVANTECH_GEMINI_336L_PID || pid == GEMINI_338_PID ||
|
||||||
|
pid == GEMINI_338L_PID || pid == GEMINI_338LE_PID || pid == GEMINI_338LG_PID;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OBCameraNode::isGemini435LePID(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
bool OBCameraNode::isGemini435LePID(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
||||||
|
|||||||
@@ -217,7 +217,8 @@ void OBCameraNodeDriver::init() {
|
|||||||
ob::Context::setLoggerFileName(log_file_name);
|
ob::Context::setLoggerFileName(log_file_name);
|
||||||
RCLCPP_INFO_STREAM(logger_, "SDK log file name set to: " << log_file_name);
|
RCLCPP_INFO_STREAM(logger_, "SDK log file name set to: " << log_file_name);
|
||||||
} catch (const ob::Error &e) {
|
} catch (const ob::Error &e) {
|
||||||
RCLCPP_WARN_STREAM(logger_, "Failed to set SDK log file name: " << orbbec_camera::formatObErrorWithStatus(e));
|
RCLCPP_WARN_STREAM(logger_, "Failed to set SDK log file name: "
|
||||||
|
<< orbbec_camera::formatObErrorWithStatus(e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Force IP
|
// Force IP
|
||||||
@@ -528,7 +529,8 @@ void OBCameraNodeDriver::resetDevice() {
|
|||||||
device_.reset();
|
device_.reset();
|
||||||
RCLCPP_INFO_STREAM(logger_, "device_ reset completed");
|
RCLCPP_INFO_STREAM(logger_, "device_ reset completed");
|
||||||
} catch (const ob::Error &e) {
|
} catch (const ob::Error &e) {
|
||||||
RCLCPP_WARN_STREAM(logger_, "OB Exception during device reset: " << orbbec_camera::formatObErrorWithStatus(e));
|
RCLCPP_WARN_STREAM(logger_, "OB Exception during device reset: "
|
||||||
|
<< orbbec_camera::formatObErrorWithStatus(e));
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
RCLCPP_WARN_STREAM(logger_, "Standard exception during device reset: " << e.what());
|
RCLCPP_WARN_STREAM(logger_, "Standard exception during device reset: " << e.what());
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -838,8 +840,9 @@ std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceBySerialNumber(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(
|
||||||
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
logger_, *get_clock(), 5000,
|
||||||
|
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"Failed to get device info " << e.what());
|
"Failed to get device info " << e.what());
|
||||||
@@ -871,8 +874,9 @@ std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByUSBPort(
|
|||||||
}
|
}
|
||||||
return device;
|
return device;
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(
|
||||||
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
logger_, *get_clock(), 5000,
|
||||||
|
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"Failed to get device info " << e.what());
|
"Failed to get device info " << e.what());
|
||||||
@@ -907,8 +911,9 @@ std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByNetIP(
|
|||||||
return list->getDevice(i, device_access_mode_);
|
return list->getDevice(i, device_access_mode_);
|
||||||
}
|
}
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(
|
||||||
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
logger_, *get_clock(), 5000,
|
||||||
|
"Failed to get device info " << orbbec_camera::formatObErrorWithStatus(e));
|
||||||
continue;
|
continue;
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_ERROR_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
@@ -1196,7 +1201,8 @@ bool OBCameraNodeDriver::applyForceIpConfig() {
|
|||||||
RCLCPP_ERROR(logger_, "[ForceIP] Failed to apply config (SDK returned false)");
|
RCLCPP_ERROR(logger_, "[ForceIP] Failed to apply config (SDK returned false)");
|
||||||
}
|
}
|
||||||
} catch (const ob::Error &e) {
|
} catch (const ob::Error &e) {
|
||||||
RCLCPP_ERROR(logger_, "[ForceIP] ob::Error: %s", orbbec_camera::formatObErrorWithStatus(e).c_str());
|
RCLCPP_ERROR(logger_, "[ForceIP] ob::Error: %s",
|
||||||
|
orbbec_camera::formatObErrorWithStatus(e).c_str());
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
RCLCPP_ERROR(logger_, "[ForceIP] std::exception: %s", e.what());
|
RCLCPP_ERROR(logger_, "[ForceIP] std::exception: %s", e.what());
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -1328,7 +1334,7 @@ void OBCameraNodeDriver::startDevice(const std::shared_ptr<ob::DeviceList> &list
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto pid = device->getDeviceInfo()->getPid();
|
auto pid = device->getDeviceInfo()->getPid();
|
||||||
if (GEMINI_335LG_PID == pid) {
|
if (GEMINI_335LG_PID == pid || GEMINI_338LG_PID == pid) {
|
||||||
ob_camera_node_->startGmslTrigger();
|
ob_camera_node_->startGmslTrigger();
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(pid)) {
|
if (isGemini305SeriesPID(pid)) {
|
||||||
@@ -1336,7 +1342,8 @@ void OBCameraNodeDriver::startDevice(const std::shared_ptr<ob::DeviceList> &list
|
|||||||
ob_camera_node_->startStreams();
|
ob_camera_node_->startStreams();
|
||||||
}
|
}
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
RCLCPP_ERROR_STREAM(logger_, "Failed to initialize device " << orbbec_camera::formatObErrorWithStatus(e));
|
RCLCPP_ERROR_STREAM(
|
||||||
|
logger_, "Failed to initialize device " << orbbec_camera::formatObErrorWithStatus(e));
|
||||||
start_device_failed = true;
|
start_device_failed = true;
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
RCLCPP_ERROR_STREAM(logger_, "Failed to initialize device " << e.what());
|
RCLCPP_ERROR_STREAM(logger_, "Failed to initialize device " << e.what());
|
||||||
@@ -1409,7 +1416,8 @@ void OBCameraNodeDriver::updatePresetFirmware(std::string path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
RCLCPP_ERROR_STREAM(logger_, "Failed to update Preset Firmware " << orbbec_camera::formatObErrorWithStatus(e));
|
RCLCPP_ERROR_STREAM(logger_, "Failed to update Preset Firmware "
|
||||||
|
<< orbbec_camera::formatObErrorWithStatus(e));
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
RCLCPP_ERROR_STREAM(logger_, "Failed to update Preset Firmware " << e.what());
|
RCLCPP_ERROR_STREAM(logger_, "Failed to update Preset Firmware " << e.what());
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
|||||||
@@ -27,11 +27,13 @@ namespace {
|
|||||||
bool isGemini330SeriesForDisparity(uint32_t pid) {
|
bool isGemini330SeriesForDisparity(uint32_t pid) {
|
||||||
return pid == GEMINI_335_PID || pid == GEMINI_336_PID || pid == GEMINI_330_PID ||
|
return pid == GEMINI_335_PID || pid == GEMINI_336_PID || pid == GEMINI_330_PID ||
|
||||||
pid == GEMINI_335L_PID || pid == GEMINI_336L_PID || pid == GEMINI_330L_PID ||
|
pid == GEMINI_335L_PID || pid == GEMINI_336L_PID || pid == GEMINI_330L_PID ||
|
||||||
pid == GEMINI_335LG_PID || pid == GEMINI_335LE_PID;
|
pid == GEMINI_335LG_PID || pid == GEMINI_335LE_PID || pid == GEMINI_338_PID ||
|
||||||
|
pid == GEMINI_338LG_PID || pid == GEMINI_338LE_PID || pid == GEMINI_338L_PID ||
|
||||||
|
pid == GEMINI_331L_PID;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isSupportedDisparityResolutionForPid(uint32_t pid, int width, int height) {
|
bool isSupportedDisparityResolutionForPid(uint32_t pid, int width, int height) {
|
||||||
if (pid == GEMINI_335LE_PID) {
|
if (pid == GEMINI_335LE_PID || pid == GEMINI_338LE_PID) {
|
||||||
return (width == 1280 && height == 800) || (width == 640 && height == 400) ||
|
return (width == 1280 && height == 800) || (width == 640 && height == 400) ||
|
||||||
(width == 424 && height == 266) || (width == 320 && height == 200);
|
(width == 424 && height == 266) || (width == 320 && height == 200);
|
||||||
}
|
}
|
||||||
@@ -41,11 +43,11 @@ bool isSupportedDisparityResolutionForPid(uint32_t pid, int width, int height) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string getDisparityResolutionHintByPid(uint32_t pid) {
|
std::string getDisparityResolutionHintByPid(uint32_t pid) {
|
||||||
if (pid == GEMINI_335LE_PID) {
|
if (pid == GEMINI_335LE_PID || pid == GEMINI_338LE_PID) {
|
||||||
return "Supported resolutions for Gemini 335Le: 1280x800/640x400/424x266/320x200";
|
return "Supported resolutions for the current device: 1280x800/640x400/424x266/320x200";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "Supported resolutions for Gemini 335/336/330/335L/336L/335Lg/330L: "
|
return "Supported resolutions for the current device: "
|
||||||
"1280x800/1280x720/640x400/424x266";
|
"1280x800/1280x720/640x400/424x266";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ class MultiCameraSubscriber : public rclcpp::Node {
|
|||||||
pid == GEMINI_335L_PID || pid == GEMINI_330L_PID || pid == GEMINI_336L_PID ||
|
pid == GEMINI_335L_PID || pid == GEMINI_330L_PID || pid == GEMINI_336L_PID ||
|
||||||
pid == GEMINI_335LG_PID || pid == GEMINI_336LG_PID || pid == GEMINI_335LE_PID ||
|
pid == GEMINI_335LG_PID || pid == GEMINI_336LG_PID || pid == GEMINI_335LE_PID ||
|
||||||
pid == GEMINI_336LE_PID || pid == CUSTOM_ADVANTECH_GEMINI_336_PID ||
|
pid == GEMINI_336LE_PID || pid == CUSTOM_ADVANTECH_GEMINI_336_PID ||
|
||||||
pid == CUSTOM_ADVANTECH_GEMINI_336L_PID || pid == GEMINI_338_PID;
|
pid == CUSTOM_ADVANTECH_GEMINI_336L_PID || pid == GEMINI_338_PID ||
|
||||||
|
pid == GEMINI_338LG_PID || pid == GEMINI_338LE_PID || pid == GEMINI_338L_PID ||
|
||||||
|
pid == GEMINI_331L_PID;
|
||||||
}
|
}
|
||||||
void params_init() {
|
void params_init() {
|
||||||
std::ifstream file(
|
std::ifstream file(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
<package format="3">
|
<package format="3">
|
||||||
<name>orbbec_camera_msgs</name>
|
<name>orbbec_camera_msgs</name>
|
||||||
<version>2.8.1</version>
|
<version>2.8.2</version>
|
||||||
<description>A package containing orbbec camera messages definitions.</description>
|
<description>A package containing orbbec camera messages definitions.</description>
|
||||||
<maintainer email="[email protected]">Joe Dong</maintainer>
|
<maintainer email="[email protected]">Joe Dong</maintainer>
|
||||||
<license>Apache-2.0</license>
|
<license>Apache-2.0</license>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
<package format="3">
|
<package format="3">
|
||||||
<name>orbbec_description</name>
|
<name>orbbec_description</name>
|
||||||
<version>2.8.1</version>
|
<version>2.8.2</version>
|
||||||
<description>TODO: Package description</description>
|
<description>TODO: Package description</description>
|
||||||
<maintainer email="[email protected]">toosimple</maintainer>
|
<maintainer email="[email protected]">toosimple</maintainer>
|
||||||
<license>Apache-2.0</license>
|
<license>Apache-2.0</license>
|
||||||
|
|||||||
Reference in New Issue
Block a user