mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-08 05:47:45 +08:00
Add set_software_trigger_enabled param and service
This commit is contained in:
@@ -299,8 +299,11 @@ void OBCameraNode::setupDevices() {
|
||||
RCLCPP_INFO_STREAM(logger_, "Frames per trigger: " << sync_config.framesPerTrigger);
|
||||
RCLCPP_INFO_STREAM(logger_,
|
||||
"Software trigger period " << software_trigger_period_.count() << " ms");
|
||||
software_trigger_timer_ = node_->create_wall_timer(
|
||||
software_trigger_period_, [this]() { TRY_EXECUTE_BLOCK(device_->triggerCapture()); });
|
||||
software_trigger_timer_ = node_->create_wall_timer(software_trigger_period_, [this]() {
|
||||
if (software_trigger_enabled_) {
|
||||
TRY_EXECUTE_BLOCK(device_->triggerCapture());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if (device_->isPropertySupported(OB_DEVICE_PTP_CLOCK_SYNC_ENABLE_BOOL,
|
||||
@@ -1652,7 +1655,8 @@ void OBCameraNode::getParameters() {
|
||||
setAndGetNodeParameter<int>(color_delay_us_, "color_delay_us", 0);
|
||||
setAndGetNodeParameter<int>(trigger2image_delay_us_, "trigger2image_delay_us", 0);
|
||||
setAndGetNodeParameter<int>(trigger_out_delay_us_, "trigger_out_delay_us", 0);
|
||||
setAndGetNodeParameter<bool>(trigger_out_enabled_, "trigger_out_enabled", false);
|
||||
setAndGetNodeParameter<bool>(trigger_out_enabled_, "trigger_out_enabled", true);
|
||||
setAndGetNodeParameter<bool>(software_trigger_enabled_, "software_trigger_enabled", true);
|
||||
setAndGetNodeParameter<bool>(enable_ptp_config_, "enable_ptp_config", false);
|
||||
setAndGetNodeParameter<std::string>(cloud_frame_id_, "cloud_frame_id", "");
|
||||
if (enable_colored_point_cloud_ || enable_d2c_viewer_) {
|
||||
|
||||
@@ -206,6 +206,11 @@ void OBCameraNode::setupCameraCtrlServices() {
|
||||
std::shared_ptr<SetBool::Response> response) {
|
||||
setSYNCHostimeCallback(request, response);
|
||||
});
|
||||
set_software_trigger_enabled_srv_ = node_->create_service<SetBool>(
|
||||
"set_software_trigger_enabled", [this](const std::shared_ptr<SetBool::Request> request,
|
||||
std::shared_ptr<SetBool::Response> response) {
|
||||
setSoftwareTriggerEnabledCallback(request, response);
|
||||
});
|
||||
set_write_customerdata_srv_ = node_->create_service<SetString>(
|
||||
"set_write_customer_data", [this](const std::shared_ptr<SetString::Request> request,
|
||||
std::shared_ptr<SetString::Response> response) {
|
||||
@@ -1058,6 +1063,24 @@ void OBCameraNode::setSYNCHostimeCallback(
|
||||
}
|
||||
}
|
||||
|
||||
void OBCameraNode::setSoftwareTriggerEnabledCallback(
|
||||
const std::shared_ptr<std_srvs::srv::SetBool::Request>& request,
|
||||
std::shared_ptr<std_srvs::srv::SetBool::Response>& response) {
|
||||
try {
|
||||
software_trigger_enabled_ = request->data;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
void OBCameraNode::setWriteCustomerData(const std::shared_ptr<SetString::Request>& request,
|
||||
std::shared_ptr<SetString::Response>& response) {
|
||||
if (request->data.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user