mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-09-12 19:20:20 +08:00
feat: add services for setting and getting point cloud decimation factor
This commit is contained in:
@@ -365,6 +365,10 @@ class OBCameraNode {
|
||||
std::shared_ptr<SetInt32 ::Response>& response);
|
||||
void setFilterCallback(const std::shared_ptr<SetFilter ::Request>& request,
|
||||
std::shared_ptr<SetFilter ::Response>& response);
|
||||
void setPointCloudDecimationCallback(const std::shared_ptr<SetInt32::Request>& request,
|
||||
std::shared_ptr<SetInt32::Response>& response);
|
||||
void getPointCloudDecimationCallback(const std::shared_ptr<GetInt32::Request>& request,
|
||||
std::shared_ptr<GetInt32::Response>& response);
|
||||
void setSYNCHostimeCallback(const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||
std::shared_ptr<std_srvs::srv::SetBool::Response>& response);
|
||||
void sendSoftwareTriggerCallback(const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||
@@ -572,6 +576,8 @@ class OBCameraNode {
|
||||
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_sync_host_time_srv_;
|
||||
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr send_software_trigger_srv_;
|
||||
rclcpp::Service<SetFilter>::SharedPtr set_filter_srv_;
|
||||
rclcpp::Service<SetInt32>::SharedPtr set_point_cloud_decimation_srv_;
|
||||
rclcpp::Service<GetInt32>::SharedPtr get_point_cloud_decimation_srv_;
|
||||
rclcpp::Service<orbbec_camera_msgs::srv::GetBool>::SharedPtr get_streams_enable_srv_;
|
||||
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_streams_enable_srv_;
|
||||
rclcpp::Service<GetUserCalibParams>::SharedPtr get_user_calib_params_srv_;
|
||||
|
||||
@@ -261,7 +261,63 @@ void OBCameraNode::setupCameraCtrlServices() {
|
||||
std::shared_ptr<GetBool::Response> response) {
|
||||
getStreamsEnableCallback(request, response);
|
||||
});
|
||||
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) {
|
||||
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) {
|
||||
getPointCloudDecimationCallback(request, response);
|
||||
});
|
||||
}
|
||||
|
||||
void OBCameraNode::getPointCloudDecimationCallback(
|
||||
const std::shared_ptr<GetInt32::Request>& request,
|
||||
std::shared_ptr<GetInt32::Response>& response) {
|
||||
(void)request;
|
||||
try {
|
||||
response->data = point_cloud_decimation_filter_factor_;
|
||||
response->success = true;
|
||||
} catch (const std::exception& e) {
|
||||
response->success = false;
|
||||
response->message = e.what();
|
||||
} catch (...) {
|
||||
response->success = false;
|
||||
response->message = "unknown error";
|
||||
}
|
||||
}
|
||||
|
||||
void OBCameraNode::setPointCloudDecimationCallback(
|
||||
const std::shared_ptr<SetInt32::Request>& request,
|
||||
std::shared_ptr<SetInt32::Response>& response) {
|
||||
if (!request) {
|
||||
response->success = false;
|
||||
response->message = "Invalid request";
|
||||
return;
|
||||
}
|
||||
|
||||
if (request->data <= 0 || request->data > 8) {
|
||||
response->success = false;
|
||||
response->message = "Decimation factor must be between 1 and 8";
|
||||
RCLCPP_WARN_STREAM(logger_, "Invalid decimation factor: " << request->data);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
point_cloud_decimation_filter_factor_ = request->data;
|
||||
RCLCPP_INFO_STREAM(logger_, "Set point_cloud_decimation_filter_factor to "
|
||||
<< point_cloud_decimation_filter_factor_);
|
||||
response->success = true;
|
||||
response->message = "Point cloud decimation factor updated successfully";
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
void OBCameraNode::setStreamsEnableCallback(
|
||||
const std::shared_ptr<std_srvs::srv::SetBool::Request> request,
|
||||
std::shared_ptr<std_srvs::srv::SetBool::Response> response) {
|
||||
|
||||
Reference in New Issue
Block a user