mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-12 23:39:50 +08:00
[service] add set_decimation_filter_enable
This commit is contained in:
@@ -295,6 +295,11 @@ class OBCameraNode {
|
|||||||
std::shared_ptr<SetInt32 ::Response>& response);
|
std::shared_ptr<SetInt32 ::Response>& response);
|
||||||
void setSYNCHostimeCallback(const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
void setSYNCHostimeCallback(const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||||
std::shared_ptr<std_srvs::srv::SetBool::Response>& response);
|
std::shared_ptr<std_srvs::srv::SetBool::Response>& response);
|
||||||
|
|
||||||
|
void setDecimationFilterEnableCallback(
|
||||||
|
const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||||
|
std::shared_ptr<std_srvs::srv::SetBool::Response>& response);
|
||||||
|
|
||||||
bool toggleSensor(const stream_index_pair& stream_index, bool enabled, std::string& msg);
|
bool toggleSensor(const stream_index_pair& stream_index, bool enabled, std::string& msg);
|
||||||
|
|
||||||
void saveImageCallback(const std::shared_ptr<std_srvs::srv::Empty::Request>& request,
|
void saveImageCallback(const std::shared_ptr<std_srvs::srv::Empty::Request>& request,
|
||||||
@@ -448,6 +453,7 @@ class OBCameraNode {
|
|||||||
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_reset_timestamp_srv_;
|
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_reset_timestamp_srv_;
|
||||||
rclcpp::Service<SetInt32>::SharedPtr set_interleaver_laser_sync_srv_;
|
rclcpp::Service<SetInt32>::SharedPtr set_interleaver_laser_sync_srv_;
|
||||||
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_sync_host_time_srv_;
|
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_sync_host_time_srv_;
|
||||||
|
rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr set_decimation_filter_enable_srv_;
|
||||||
|
|
||||||
bool enable_sync_output_accel_gyro_ = false;
|
bool enable_sync_output_accel_gyro_ = false;
|
||||||
bool publish_tf_ = false;
|
bool publish_tf_ = false;
|
||||||
|
|||||||
@@ -184,6 +184,11 @@ void OBCameraNode::setupCameraCtrlServices() {
|
|||||||
std::shared_ptr<SetBool::Response> response) {
|
std::shared_ptr<SetBool::Response> response) {
|
||||||
setSYNCHostimeCallback(request, response);
|
setSYNCHostimeCallback(request, response);
|
||||||
});
|
});
|
||||||
|
set_decimation_filter_enable_srv_ = node_->create_service<SetBool>(
|
||||||
|
"set_decimation_filter_enable", [this](const std::shared_ptr<SetBool::Request> request,
|
||||||
|
std::shared_ptr<SetBool::Response> response) {
|
||||||
|
setDecimationFilterEnableCallback(request, response);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBCameraNode::setExposureCallback(const std::shared_ptr<SetInt32::Request>& request,
|
void OBCameraNode::setExposureCallback(const std::shared_ptr<SetInt32::Request>& request,
|
||||||
@@ -836,4 +841,33 @@ void OBCameraNode::setSYNCHostimeCallback(
|
|||||||
response->success = false;
|
response->success = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void OBCameraNode::setDecimationFilterEnableCallback(
|
||||||
|
const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||||
|
std::shared_ptr<std_srvs::srv::SetBool::Response>& response) {
|
||||||
|
try {
|
||||||
|
enable_decimation_filter_ = request->data;
|
||||||
|
if (enable_decimation_filter_) {
|
||||||
|
decimation_filter_scale_ = node_->get_parameter("decimation_filter_scale").as_int();
|
||||||
|
if (decimation_filter_scale_ == -1) {
|
||||||
|
RCLCPP_WARN(logger_, "Please configure the parameter 'decimation_filter_scale'");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
decimation_filter_scale_ = -1;
|
||||||
|
}
|
||||||
|
setupDepthPostProcessFilter();
|
||||||
|
node_->set_parameter(rclcpp::Parameter("enable_decimation_filter", enable_decimation_filter_));
|
||||||
|
node_->set_parameter(rclcpp::Parameter("decimation_filter_scale", decimation_filter_scale_));
|
||||||
|
response->success = true;
|
||||||
|
} catch (const ob::Error& e) {
|
||||||
|
response->message = e.getMessage();
|
||||||
|
response->success = false;
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
response->message = e.what();
|
||||||
|
response->success = false;
|
||||||
|
} catch (...) {
|
||||||
|
response->message = "unknown error";
|
||||||
|
response->success = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
} // namespace orbbec_camera
|
} // namespace orbbec_camera
|
||||||
|
|||||||
Reference in New Issue
Block a user