mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-11 23:09:51 +08:00
Merge branch 'fix/gemini301-mixed-fps' into v2/develop
This commit is contained in:
@@ -143,6 +143,7 @@ const int32_t GEMINI_435Le_PID = 0x815; // Gemini 435Le
|
|||||||
const int32_t GEMINI_305_PID = 0x0840; // Gemini 305
|
const int32_t GEMINI_305_PID = 0x0840; // Gemini 305
|
||||||
const int32_t GEMINI_305_PID2 = 0x0841; // Gemini 305
|
const int32_t GEMINI_305_PID2 = 0x0841; // Gemini 305
|
||||||
const int32_t GEMINI_305G_PID = 0x0842; // Gemini 305g
|
const int32_t GEMINI_305G_PID = 0x0842; // Gemini 305g
|
||||||
|
const int32_t GEMINI_301G_PID = 0x0843; // Gemini 301g
|
||||||
const int32_t GEMINI_309G_PID = 0x0845; // Gemini 309g
|
const int32_t GEMINI_309G_PID = 0x0845; // Gemini 309g
|
||||||
const int32_t GEMINI_338LG_PID = 0x081A; // Gemini 338Lg
|
const int32_t GEMINI_338LG_PID = 0x081A; // Gemini 338Lg
|
||||||
const int32_t GEMINI_338LE_PID = 0x081B; // Gemini 338Le
|
const int32_t GEMINI_338LE_PID = 0x081B; // Gemini 338Le
|
||||||
@@ -159,9 +160,9 @@ inline bool isGemini330SeriesPID(uint32_t pid) {
|
|||||||
pid == GEMINI_331L_PID;
|
pid == GEMINI_331L_PID;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool isGemini305SeriesPID(uint32_t pid) {
|
inline bool isGemini301SeriesPID(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 ||
|
||||||
pid == GEMINI_309G_PID;
|
pid == GEMINI_301G_PID || pid == GEMINI_309G_PID;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool isGmslCameraPID(uint32_t pid) {
|
inline bool isGmslCameraPID(uint32_t pid) {
|
||||||
|
|||||||
@@ -309,6 +309,9 @@ class OBCameraNode {
|
|||||||
|
|
||||||
void setupProfiles();
|
void setupProfiles();
|
||||||
|
|
||||||
|
bool validate301SeriesStreamFrameRates(const std::map<stream_index_pair, int>& fps,
|
||||||
|
std::string& message) const;
|
||||||
|
|
||||||
std::shared_ptr<ob::VideoStreamProfile> selectVideoStreamProfile(
|
std::shared_ptr<ob::VideoStreamProfile> selectVideoStreamProfile(
|
||||||
const stream_index_pair& stream_index, int width, int height, int fps, OBFormat format);
|
const stream_index_pair& stream_index, int width, int height, int fps, OBFormat format);
|
||||||
|
|
||||||
|
|||||||
@@ -21,21 +21,23 @@ Parameters::Parameters(rclcpp::Node *node)
|
|||||||
: node_(node), logger_(node_->get_logger()), params_backend_(node) {
|
: node_(node), logger_(node_->get_logger()), params_backend_(node) {
|
||||||
params_backend_.addOnSetParametersCallback(
|
params_backend_.addOnSetParametersCallback(
|
||||||
[this](const std::vector<rclcpp::Parameter> ¶meters) {
|
[this](const std::vector<rclcpp::Parameter> ¶meters) {
|
||||||
|
rcl_interfaces::msg::SetParametersResult result;
|
||||||
|
result.successful = true;
|
||||||
for (const auto ¶meter : parameters) {
|
for (const auto ¶meter : parameters) {
|
||||||
if (param_functions_.find(parameter.get_name()) != param_functions_.end()) {
|
const auto function_it = param_functions_.find(parameter.get_name());
|
||||||
auto functions = param_functions_[parameter.get_name()];
|
if (function_it == param_functions_.end()) {
|
||||||
if (functions.empty()) {
|
continue;
|
||||||
RCLCPP_WARN_STREAM(logger_, "Parameter " << parameter.get_name()
|
}
|
||||||
<< " can not be changed in runtime.");
|
if (function_it->second.empty()) {
|
||||||
} else {
|
result.successful = false;
|
||||||
for (const auto &func : param_functions_[parameter.get_name()]) {
|
result.reason = "Parameter " + parameter.get_name() + " can not be changed in runtime.";
|
||||||
func(parameter);
|
RCLCPP_WARN_STREAM(logger_, result.reason);
|
||||||
}
|
} else {
|
||||||
|
for (const auto &func : function_it->second) {
|
||||||
|
func(parameter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rcl_interfaces::msg::SetParametersResult result;
|
|
||||||
result.successful = true;
|
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3249,7 +3249,7 @@ void OBCameraNode::setupLeftIrPostProcessFilter() {
|
|||||||
}
|
}
|
||||||
auto device_info = device_->getDeviceInfo();
|
auto device_info = device_->getDeviceInfo();
|
||||||
CHECK_NOTNULL(device_info);
|
CHECK_NOTNULL(device_info);
|
||||||
if (isGemini330SeriesPID(pid_) || isGemini305SeriesPID(pid_)) {
|
if (isGemini330SeriesPID(pid_) || isGemini301SeriesPID(pid_)) {
|
||||||
auto left_ir_sensor = device_->getSensor(OB_SENSOR_IR_LEFT);
|
auto left_ir_sensor = device_->getSensor(OB_SENSOR_IR_LEFT);
|
||||||
left_ir_filter_list_ = left_ir_sensor->createRecommendedFilters();
|
left_ir_filter_list_ = left_ir_sensor->createRecommendedFilters();
|
||||||
if (left_ir_filter_list_.empty()) {
|
if (left_ir_filter_list_.empty()) {
|
||||||
@@ -3290,7 +3290,7 @@ void OBCameraNode::setupRightIrPostProcessFilter() {
|
|||||||
}
|
}
|
||||||
auto device_info = device_->getDeviceInfo();
|
auto device_info = device_->getDeviceInfo();
|
||||||
CHECK_NOTNULL(device_info);
|
CHECK_NOTNULL(device_info);
|
||||||
if (isGemini330SeriesPID(pid_) || isGemini305SeriesPID(pid_)) {
|
if (isGemini330SeriesPID(pid_) || isGemini301SeriesPID(pid_)) {
|
||||||
auto right_ir_sensor = device_->getSensor(OB_SENSOR_IR_RIGHT);
|
auto right_ir_sensor = device_->getSensor(OB_SENSOR_IR_RIGHT);
|
||||||
right_ir_filter_list_ = right_ir_sensor->createRecommendedFilters();
|
right_ir_filter_list_ = right_ir_sensor->createRecommendedFilters();
|
||||||
if (right_ir_filter_list_.empty()) {
|
if (right_ir_filter_list_.empty()) {
|
||||||
@@ -3620,19 +3620,19 @@ void OBCameraNode::setupProfiles() {
|
|||||||
format_[elem] == OB_FORMAT_UNKNOWN) {
|
format_[elem] == OB_FORMAT_UNKNOWN) {
|
||||||
selected_profile = profiles->getProfile(0)->as<ob::VideoStreamProfile>();
|
selected_profile = profiles->getProfile(0)->as<ob::VideoStreamProfile>();
|
||||||
} else {
|
} else {
|
||||||
if (isGemini305SeriesPID(pid_) && elem == DEPTH) {
|
if (isGemini301SeriesPID(pid_) && elem == DEPTH) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width_[elem];
|
conf.originWidth = width_[elem];
|
||||||
conf.originHeight = height_[elem];
|
conf.originHeight = height_[elem];
|
||||||
conf.factor = depth_decimation_factor_;
|
conf.factor = depth_decimation_factor_;
|
||||||
selected_profile = profiles->getVideoStreamProfile(conf, format_[elem], fps_[elem]);
|
selected_profile = profiles->getVideoStreamProfile(conf, format_[elem], fps_[elem]);
|
||||||
} else if (isGemini305SeriesPID(pid_) && elem == INFRA1) {
|
} else if (isGemini301SeriesPID(pid_) && elem == INFRA1) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width_[elem];
|
conf.originWidth = width_[elem];
|
||||||
conf.originHeight = height_[elem];
|
conf.originHeight = height_[elem];
|
||||||
conf.factor = left_ir_decimation_factor_;
|
conf.factor = left_ir_decimation_factor_;
|
||||||
selected_profile = profiles->getVideoStreamProfile(conf, format_[elem], fps_[elem]);
|
selected_profile = profiles->getVideoStreamProfile(conf, format_[elem], fps_[elem]);
|
||||||
} else if (isGemini305SeriesPID(pid_) && elem == INFRA2) {
|
} else if (isGemini301SeriesPID(pid_) && elem == INFRA2) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width_[elem];
|
conf.originWidth = width_[elem];
|
||||||
conf.originHeight = height_[elem];
|
conf.originHeight = height_[elem];
|
||||||
@@ -3708,6 +3708,13 @@ void OBCameraNode::setupProfiles() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string stream_fps_message;
|
||||||
|
if (!validate301SeriesStreamFrameRates(fps_, stream_fps_message)) {
|
||||||
|
RCLCPP_ERROR_STREAM(logger_, stream_fps_message);
|
||||||
|
throw std::runtime_error(stream_fps_message);
|
||||||
|
}
|
||||||
|
|
||||||
// IMU
|
// IMU
|
||||||
for (const auto &stream_index : HID_STREAMS) {
|
for (const auto &stream_index : HID_STREAMS) {
|
||||||
if (!enable_stream_[stream_index]) {
|
if (!enable_stream_[stream_index]) {
|
||||||
@@ -3752,6 +3759,55 @@ void OBCameraNode::setupProfiles() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool OBCameraNode::validate301SeriesStreamFrameRates(const std::map<stream_index_pair, int> &fps,
|
||||||
|
std::string &message) const {
|
||||||
|
if (!isGemini301SeriesPID(pid_)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int active_fps = 0;
|
||||||
|
bool fps_mismatch = false;
|
||||||
|
std::string active_streams;
|
||||||
|
for (const auto &stream_index : IMAGE_STREAMS) {
|
||||||
|
if (stream_index.first == OB_STREAM_LIDAR) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const auto enable_it = enable_stream_.find(stream_index);
|
||||||
|
const auto fps_it = fps.find(stream_index);
|
||||||
|
if (enable_it == enable_stream_.end() || !enable_it->second || fps_it == fps.end() ||
|
||||||
|
fps_it->second <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!active_streams.empty()) {
|
||||||
|
active_streams += ", ";
|
||||||
|
}
|
||||||
|
const auto name_it = stream_name_.find(stream_index);
|
||||||
|
if (name_it != stream_name_.end()) {
|
||||||
|
active_streams += name_it->second;
|
||||||
|
} else {
|
||||||
|
active_streams += std::string(magic_enum::enum_name(stream_index.first));
|
||||||
|
}
|
||||||
|
active_streams += "=" + std::to_string(fps_it->second);
|
||||||
|
|
||||||
|
if (active_fps == 0) {
|
||||||
|
active_fps = fps_it->second;
|
||||||
|
} else if (active_fps != fps_it->second) {
|
||||||
|
fps_mismatch = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fps_mismatch) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
message =
|
||||||
|
"Gemini 301 series requires the same FPS for all enabled image streams. "
|
||||||
|
"Active stream FPS: " +
|
||||||
|
active_streams + ". Set all enabled image streams to the same FPS or disable unused streams.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<ob::VideoStreamProfile> OBCameraNode::selectVideoStreamProfile(
|
std::shared_ptr<ob::VideoStreamProfile> OBCameraNode::selectVideoStreamProfile(
|
||||||
const stream_index_pair &stream_index, int width, int height, int fps, OBFormat format) {
|
const stream_index_pair &stream_index, int width, int height, int fps, OBFormat format) {
|
||||||
auto sensor_it = sensors_.find(stream_index);
|
auto sensor_it = sensors_.find(stream_index);
|
||||||
@@ -3767,19 +3823,19 @@ std::shared_ptr<ob::VideoStreamProfile> OBCameraNode::selectVideoStreamProfile(
|
|||||||
std::shared_ptr<ob::VideoStreamProfile> selected_profile;
|
std::shared_ptr<ob::VideoStreamProfile> selected_profile;
|
||||||
if (width == 0 && height == 0 && fps == 0) {
|
if (width == 0 && height == 0 && fps == 0) {
|
||||||
selected_profile = profiles->getProfile(0)->as<ob::VideoStreamProfile>();
|
selected_profile = profiles->getProfile(0)->as<ob::VideoStreamProfile>();
|
||||||
} else if (!is_playback_device_ && isGemini305SeriesPID(pid_) && stream_index == DEPTH) {
|
} else if (!is_playback_device_ && isGemini301SeriesPID(pid_) && stream_index == DEPTH) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width;
|
conf.originWidth = width;
|
||||||
conf.originHeight = height;
|
conf.originHeight = height;
|
||||||
conf.factor = depth_decimation_factor_;
|
conf.factor = depth_decimation_factor_;
|
||||||
selected_profile = profiles->getVideoStreamProfile(conf, format, fps);
|
selected_profile = profiles->getVideoStreamProfile(conf, format, fps);
|
||||||
} else if (!is_playback_device_ && isGemini305SeriesPID(pid_) && stream_index == INFRA1) {
|
} else if (!is_playback_device_ && isGemini301SeriesPID(pid_) && stream_index == INFRA1) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width;
|
conf.originWidth = width;
|
||||||
conf.originHeight = height;
|
conf.originHeight = height;
|
||||||
conf.factor = left_ir_decimation_factor_;
|
conf.factor = left_ir_decimation_factor_;
|
||||||
selected_profile = profiles->getVideoStreamProfile(conf, format, fps);
|
selected_profile = profiles->getVideoStreamProfile(conf, format, fps);
|
||||||
} else if (!is_playback_device_ && isGemini305SeriesPID(pid_) && stream_index == INFRA2) {
|
} else if (!is_playback_device_ && isGemini301SeriesPID(pid_) && stream_index == INFRA2) {
|
||||||
OBHardwareDecimationConfig conf;
|
OBHardwareDecimationConfig conf;
|
||||||
conf.originWidth = width;
|
conf.originWidth = width;
|
||||||
conf.originHeight = height;
|
conf.originHeight = height;
|
||||||
@@ -3906,6 +3962,16 @@ bool OBCameraNode::validateStreamProfileRequest(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto requested_fps = fps_;
|
||||||
|
for (const auto &pending_profile : pending_profiles) {
|
||||||
|
requested_fps[pending_profile.stream_index] =
|
||||||
|
static_cast<int>(pending_profile.profile->getFps());
|
||||||
|
}
|
||||||
|
if (!validate301SeriesStreamFrameRates(requested_fps, message)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!has_changes) {
|
if (!has_changes) {
|
||||||
message = "requested stream profiles are already active";
|
message = "requested stream profiles are already active";
|
||||||
return false;
|
return false;
|
||||||
@@ -5959,7 +6025,7 @@ cv::Mat OBCameraNode::colorizeDepthImage(const cv::Mat &depth_image,
|
|||||||
cv::Mat depth_16u;
|
cv::Mat depth_16u;
|
||||||
depth_image.convertTo(depth_16u, CV_16UC1);
|
depth_image.convertTo(depth_16u, CV_16UC1);
|
||||||
|
|
||||||
const uint16_t min_depth = isGemini305SeriesPID(pid_) ? kViewerColorizerG305MinDistanceMm
|
const uint16_t min_depth = isGemini301SeriesPID(pid_) ? kViewerColorizerG305MinDistanceMm
|
||||||
: kViewerColorizerDefaultMinDistanceMm;
|
: kViewerColorizerDefaultMinDistanceMm;
|
||||||
const uint16_t max_depth = kViewerColorizerMaxDistanceMm;
|
const uint16_t max_depth = kViewerColorizerMaxDistanceMm;
|
||||||
const uint32_t value_range = static_cast<uint32_t>(max_depth) - min_depth + 1;
|
const uint32_t value_range = static_cast<uint32_t>(max_depth) - min_depth + 1;
|
||||||
@@ -6422,7 +6488,7 @@ void OBCameraNode::setDepthAutoExposureROI() {
|
|||||||
if (depth_roi_has_run) {
|
if (depth_roi_has_run) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "color") {
|
if (isGemini301SeriesPID(pid_) && ae_reference_stream_ == "color") {
|
||||||
RCLCPP_WARN_STREAM(logger_, "Skip setting depth AE ROI because AE Reference Stream is color");
|
RCLCPP_WARN_STREAM(logger_, "Skip setting depth AE ROI because AE Reference Stream is color");
|
||||||
depth_roi_has_run = true;
|
depth_roi_has_run = true;
|
||||||
return;
|
return;
|
||||||
@@ -6467,7 +6533,7 @@ void OBCameraNode::setColorAutoExposureROI() {
|
|||||||
if (color_roi_has_run) {
|
if (color_roi_has_run) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(pid_) && ae_reference_stream_ == "depth") {
|
if (isGemini301SeriesPID(pid_) && ae_reference_stream_ == "depth") {
|
||||||
RCLCPP_WARN_STREAM(logger_, "Skip setting color AE ROI because AE Reference Stream is depth");
|
RCLCPP_WARN_STREAM(logger_, "Skip setting color AE ROI because AE Reference Stream is depth");
|
||||||
color_roi_has_run = true;
|
color_roi_has_run = true;
|
||||||
return;
|
return;
|
||||||
@@ -8025,7 +8091,7 @@ bool OBCameraNode::setupFormatConvertType(OBFormat format, ob::FormatConvertFilt
|
|||||||
|
|
||||||
bool OBCameraNode::isGemini435LePID(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
bool OBCameraNode::isGemini435LePID(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
||||||
bool OBCameraNode::isPublishMetaData(uint32_t pid) {
|
bool OBCameraNode::isPublishMetaData(uint32_t pid) {
|
||||||
return isGemini330SeriesPID(pid) || isGemini435LePID(pid) || isGemini305SeriesPID(pid);
|
return isGemini330SeriesPID(pid) || isGemini435LePID(pid) || isGemini301SeriesPID(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OBCameraNode::isDabaiASeriesForHwD2C(uint32_t pid) {
|
bool OBCameraNode::isDabaiASeriesForHwD2C(uint32_t pid) {
|
||||||
@@ -8035,7 +8101,7 @@ bool OBCameraNode::isDabaiASeriesForHwD2C(uint32_t pid) {
|
|||||||
|
|
||||||
bool OBCameraNode::isDepthWorkModeDevices(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
bool OBCameraNode::isDepthWorkModeDevices(uint32_t pid) { return pid == GEMINI_435Le_PID; }
|
||||||
|
|
||||||
bool OBCameraNode::isnotLaserDevices(uint32_t pid) { return isGemini305SeriesPID(pid); }
|
bool OBCameraNode::isnotLaserDevices(uint32_t pid) { return isGemini301SeriesPID(pid); }
|
||||||
|
|
||||||
orbbec_camera_msgs::msg::IMUInfo OBCameraNode::createIMUInfo(
|
orbbec_camera_msgs::msg::IMUInfo OBCameraNode::createIMUInfo(
|
||||||
const stream_index_pair &stream_index) {
|
const stream_index_pair &stream_index) {
|
||||||
|
|||||||
@@ -1372,7 +1372,7 @@ void OBCameraNodeDriver::initializeDevice(const std::shared_ptr<ob::Device> &dev
|
|||||||
}
|
}
|
||||||
|
|
||||||
const bool should_delay_stream_start = delay_stream_start_after_reconnect_.exchange(false) &&
|
const bool should_delay_stream_start = delay_stream_start_after_reconnect_.exchange(false) &&
|
||||||
isGemini305SeriesPID(device_info_->getPid());
|
isGemini301SeriesPID(device_info_->getPid());
|
||||||
if (should_delay_stream_start) {
|
if (should_delay_stream_start) {
|
||||||
std::this_thread::sleep_for(kStreamStartDelayAfterReconnect);
|
std::this_thread::sleep_for(kStreamStartDelayAfterReconnect);
|
||||||
}
|
}
|
||||||
@@ -1604,8 +1604,8 @@ void OBCameraNodeDriver::startDevice(const std::shared_ptr<ob::DeviceList> &list
|
|||||||
if (isGmslCameraPID(pid)) {
|
if (isGmslCameraPID(pid)) {
|
||||||
ob_camera_node_->startGmslTrigger();
|
ob_camera_node_->startGmslTrigger();
|
||||||
}
|
}
|
||||||
// if (isGemini305SeriesPID(pid)) {
|
// if (isGemini301SeriesPID(pid)) {
|
||||||
// // Fixing 305 series hot-swap not outputting power
|
// // Fixing 301 series hot-swap not outputting power
|
||||||
// ob_camera_node_->startStreams();
|
// ob_camera_node_->startStreams();
|
||||||
// }
|
// }
|
||||||
} catch (ob::Error &e) {
|
} catch (ob::Error &e) {
|
||||||
|
|||||||
@@ -1128,13 +1128,13 @@ void OBCameraNode::setAeRoiCallback(const std::shared_ptr<SetArrays ::Request>&
|
|||||||
std::shared_ptr<SetArrays::Response>& response,
|
std::shared_ptr<SetArrays::Response>& response,
|
||||||
const stream_index_pair& stream_index) {
|
const stream_index_pair& stream_index) {
|
||||||
auto stream = stream_index.first;
|
auto stream = stream_index.first;
|
||||||
if (isGemini305SeriesPID(device_->getDeviceInfo()->getPid()) &&
|
if (isGemini301SeriesPID(device_->getDeviceInfo()->getPid()) &&
|
||||||
(stream != OB_STREAM_COLOR && ae_reference_stream_ == "color")) {
|
(stream != OB_STREAM_COLOR && ae_reference_stream_ == "color")) {
|
||||||
response->success = false;
|
response->success = false;
|
||||||
response->message = "AE Reference Stream is color, other sensors setting is not supported";
|
response->message = "AE Reference Stream is color, other sensors setting is not supported";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isGemini305SeriesPID(device_->getDeviceInfo()->getPid()) &&
|
if (isGemini301SeriesPID(device_->getDeviceInfo()->getPid()) &&
|
||||||
(stream != OB_STREAM_DEPTH && ae_reference_stream_ == "depth")) {
|
(stream != OB_STREAM_DEPTH && ae_reference_stream_ == "depth")) {
|
||||||
response->success = false;
|
response->success = false;
|
||||||
response->message =
|
response->message =
|
||||||
|
|||||||
@@ -145,8 +145,8 @@ void listSensorProfiles(const std::shared_ptr<ob::Device>& device) {
|
|||||||
auto origin_profile = profile_list->getProfile(j);
|
auto origin_profile = profile_list->getProfile(j);
|
||||||
if ((sensor->getType() == OB_SENSOR_DEPTH || sensor->getType() == OB_SENSOR_IR_LEFT ||
|
if ((sensor->getType() == OB_SENSOR_DEPTH || sensor->getType() == OB_SENSOR_IR_LEFT ||
|
||||||
sensor->getType() == OB_SENSOR_IR_RIGHT) &&
|
sensor->getType() == OB_SENSOR_IR_RIGHT) &&
|
||||||
isGemini305SeriesPID(pid)) {
|
isGemini301SeriesPID(pid)) {
|
||||||
// Gemini 305 series
|
// Gemini 301 series
|
||||||
auto profile = origin_profile->as<ob::VideoStreamProfile>();
|
auto profile = origin_profile->as<ob::VideoStreamProfile>();
|
||||||
std::cout << magic_enum::enum_name(sensor->getType()) << " profile: " << profile->getWidth()
|
std::cout << magic_enum::enum_name(sensor->getType()) << " profile: " << profile->getWidth()
|
||||||
<< "x" << profile->getHeight() << " " << profile->getFps() << "fps "
|
<< "x" << profile->getHeight() << " " << profile->getFps() << "fps "
|
||||||
|
|||||||
Reference in New Issue
Block a user