feat: add support for left and right color streams in camera control services

This commit is contained in:
slz
2026-01-13 17:23:08 +08:00
committed by ob-yalian
parent a631162745
commit ea701b9e4f
+34 -4
View File
@@ -263,12 +263,12 @@ void OBCameraNode::setupCameraCtrlServices() {
});
set_point_cloud_decimation_srv_ = node_->create_service<SetInt32>(
"set_point_cloud_decimation", [this](const std::shared_ptr<SetInt32::Request> request,
std::shared_ptr<SetInt32::Response> response) {
std::shared_ptr<SetInt32::Response> response) {
setPointCloudDecimationCallback(request, response);
});
get_point_cloud_decimation_srv_ = node_->create_service<GetInt32>(
"get_point_cloud_decimation", [this](const std::shared_ptr<GetInt32::Request> request,
std::shared_ptr<GetInt32::Response> response) {
std::shared_ptr<GetInt32::Response> response) {
getPointCloudDecimationCallback(request, response);
});
}
@@ -308,10 +308,10 @@ void OBCameraNode::setPointCloudDecimationCallback(
try {
point_cloud_decimation_filter_factor_ = request->data;
RCLCPP_INFO_STREAM(logger_, "Set point_cloud_decimation_filter_factor to "
<< point_cloud_decimation_filter_factor_);
<< point_cloud_decimation_filter_factor_);
response->success = true;
response->message = "Point cloud decimation factor updated successfully";
} catch (const std::exception &e) {
} catch (const std::exception& e) {
response->success = false;
response->message = std::string("Failed to set decimation factor: ") + e.what();
RCLCPP_ERROR_STREAM(logger_, response->message);
@@ -371,6 +371,8 @@ void OBCameraNode::setExposureCallback(const std::shared_ptr<SetInt32::Request>&
device_->setIntProperty(OB_PROP_DEPTH_EXPOSURE_INT, request->data);
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
device_->setIntProperty(OB_PROP_COLOR_EXPOSURE_INT, request->data);
break;
default:
@@ -407,6 +409,8 @@ void OBCameraNode::getGainCallback(const std::shared_ptr<GetInt32::Request>& req
response->data = device_->getIntProperty(OB_PROP_DEPTH_GAIN_INT);
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
response->data = device_->getIntProperty(OB_PROP_COLOR_GAIN_INT);
break;
default:
@@ -442,6 +446,8 @@ void OBCameraNode::setGainCallback(const std::shared_ptr<SetInt32 ::Request>& re
prop_id = OB_PROP_DEPTH_GAIN_INT;
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
prop_id = OB_PROP_COLOR_GAIN_INT;
break;
default:
@@ -517,6 +523,8 @@ void OBCameraNode::setAeRoiCallback(const std::shared_ptr<SetArrays ::Request>&
<< ", Top: " << config.y0_top << ", Bottom: " << config.y1_bottom << " ]");
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
config.x0_left = (static_cast<short int>(request->data_param[0]) < 0)
? 0
: static_cast<short int>(request->data_param[0]);
@@ -667,6 +675,8 @@ void OBCameraNode::setAutoExposureCallback(
prop_id = OB_PROP_DEPTH_AUTO_EXPOSURE_BOOL;
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
prop_id = OB_PROP_COLOR_AUTO_EXPOSURE_BOOL;
break;
default:
@@ -813,6 +823,8 @@ void OBCameraNode::getExposureCallback(const std::shared_ptr<GetInt32::Request>&
response->data = device_->getIntProperty(OB_PROP_DEPTH_EXPOSURE_INT);
break;
case OB_STREAM_COLOR:
case OB_STREAM_COLOR_LEFT:
case OB_STREAM_COLOR_RIGHT:
response->data = device_->getIntProperty(OB_PROP_COLOR_EXPOSURE_INT);
break;
default:
@@ -900,6 +912,12 @@ void OBCameraNode::setMirrorCallback(const std::shared_ptr<SetBool::Request>& re
case OB_STREAM_COLOR:
device_->setBoolProperty(OB_PROP_COLOR_MIRROR_BOOL, request->data);
break;
case OB_STREAM_COLOR_LEFT:
device_->setBoolProperty(OB_PROP_COLOR_LEFT_MIRROR_BOOL, request->data);
break;
case OB_STREAM_COLOR_RIGHT:
device_->setBoolProperty(OB_PROP_COLOR_RIGHT_MIRROR_BOOL, request->data);
break;
default:
RCLCPP_ERROR(logger_, " %s NOT a video stream", __FUNCTION__);
break;
@@ -939,6 +957,12 @@ void OBCameraNode::setFlipCallback(const std::shared_ptr<SetBool::Request>& requ
case OB_STREAM_COLOR:
device_->setBoolProperty(OB_PROP_COLOR_FLIP_BOOL, request->data);
break;
case OB_STREAM_COLOR_LEFT:
device_->setBoolProperty(OB_PROP_COLOR_LEFT_FLIP_BOOL, request->data);
break;
case OB_STREAM_COLOR_RIGHT:
device_->setBoolProperty(OB_PROP_COLOR_RIGHT_FLIP_BOOL, request->data);
break;
default:
RCLCPP_ERROR(logger_, " %s NOT a video stream", __FUNCTION__);
break;
@@ -978,6 +1002,12 @@ void OBCameraNode::setRotationCallback(const std::shared_ptr<SetInt32::Request>&
case OB_STREAM_COLOR:
device_->setIntProperty(OB_PROP_COLOR_ROTATE_INT, request->data);
break;
case OB_STREAM_COLOR_LEFT:
device_->setIntProperty(OB_PROP_COLOR_LEFT_ROTATE_INT, request->data);
break;
case OB_STREAM_COLOR_RIGHT:
device_->setIntProperty(OB_PROP_COLOR_RIGHT_ROTATE_INT, request->data);
break;
default:
RCLCPP_ERROR(logger_, " %s NOT a video stream", __FUNCTION__);
break;