Add laser on off mode

This commit is contained in:
Joe Dong
2024-04-18 10:19:32 +08:00
parent 037cc10163
commit 3bd7a69821
4 changed files with 11 additions and 2 deletions
+3
View File
@@ -360,6 +360,9 @@ The following are the launch parameters available:
- `depth_filter_config` : Configure the loading path for the depth filtering configuration file. By default, the depth - `depth_filter_config` : Configure the loading path for the depth filtering configuration file. By default, the depth
filtering configuration file is located in the /config/depthfilter directory,Supported only on Gemini2. filtering configuration file is located in the /config/depthfilter directory,Supported only on Gemini2.
- `depth_precision` : The depth precision, should be like `1mm` format. The default value is `1mm`. - `depth_precision` : The depth precision, should be like `1mm` format. The default value is `1mm`.
- `enable_laser` : Whether to enable the laser. The default value is `true`.
- `laser_on_off_mode`: Laser on/off alternate mode, 0: off, 1: on-off alternate, 2: off-on alternate. The default value
is `0`.
## Depth work mode switch ## Depth work mode switch
@@ -512,5 +512,6 @@ class OBCameraNode {
std::unique_ptr<diagnostic_updater::Updater> diagnostic_updater_ = nullptr; std::unique_ptr<diagnostic_updater::Updater> diagnostic_updater_ = nullptr;
double diagnostic_period_ = 1.0; double diagnostic_period_ = 1.0;
bool enable_laser_ = false; bool enable_laser_ = false;
int laser_on_off_mode_ = 0;
}; };
} // namespace orbbec_camera } // namespace orbbec_camera
+4 -1
View File
@@ -104,7 +104,10 @@ def generate_launch_description():
DeclareLaunchArgument('hole_filling_filter_mode', default_value='FILL_TOP'), DeclareLaunchArgument('hole_filling_filter_mode', default_value='FILL_TOP'),
DeclareLaunchArgument('align_mode', default_value='SW'), DeclareLaunchArgument('align_mode', default_value='SW'),
DeclareLaunchArgument('diagnostic_period', default_value='1.0'), DeclareLaunchArgument('diagnostic_period', default_value='1.0'),
DeclareLaunchArgument('enable_laser', default_value='false'), DeclareLaunchArgument('enable_laser', default_value='true'),
DeclareLaunchArgument('depth_precision', default_value='1mm'),
# Laser on/off alternate mode, 0: off, 1: on-off alternate, 2: off-on alternate.
DeclareLaunchArgument('laser_on_off_mode', default_value='0'),
] ]
# Node configuration # Node configuration
+3 -1
View File
@@ -142,6 +142,7 @@ void OBCameraNode::setupDevices() {
RCLCPP_INFO_STREAM(logger_, "Depth process is " << d2d_mode); RCLCPP_INFO_STREAM(logger_, "Depth process is " << d2d_mode);
} }
device_->setIntProperty(OB_PROP_LASER_CONTROL_INT, enable_laser_); device_->setIntProperty(OB_PROP_LASER_CONTROL_INT, enable_laser_);
device_->setIntProperty(OB_PROP_LASER_ON_OFF_MODE_INT, laser_on_off_mode_);
device_->loadPreset(device_preset_.c_str()); device_->loadPreset(device_preset_.c_str());
auto depth_sensor = device_->getSensor(OB_SENSOR_DEPTH); auto depth_sensor = device_->getSensor(OB_SENSOR_DEPTH);
// set depth sensor to filter // set depth sensor to filter
@@ -198,7 +199,7 @@ void OBCameraNode::setupDevices() {
params.disp_diff = noise_removal_filter_min_diff_; params.disp_diff = noise_removal_filter_min_diff_;
params.max_size = noise_removal_filter_max_size_; params.max_size = noise_removal_filter_max_size_;
noise_removal_filter->setFilterParams(params); noise_removal_filter->setFilterParams(params);
} else if (filter_name == "HdrMerge") { } else if (filter_name == "HDRMerge") {
// do nothing // do nothing
} else { } else {
RCLCPP_INFO_STREAM(logger_, "Skip setting filter: " << filter_name); RCLCPP_INFO_STREAM(logger_, "Skip setting filter: " << filter_name);
@@ -725,6 +726,7 @@ void OBCameraNode::getParameters() {
setAndGetNodeParameter<std::string>(align_mode_, "align_mode", "HW"); setAndGetNodeParameter<std::string>(align_mode_, "align_mode", "HW");
setAndGetNodeParameter<double>(diagnostic_period_, "diagnostic_period", 1.0); setAndGetNodeParameter<double>(diagnostic_period_, "diagnostic_period", 1.0);
setAndGetNodeParameter<bool>(enable_laser_, "enable_laser", false); setAndGetNodeParameter<bool>(enable_laser_, "enable_laser", false);
setAndGetNodeParameter<int>(laser_on_off_mode_, "laser_on_off_mode", 0);
} }
void OBCameraNode::setupTopics() { void OBCameraNode::setupTopics() {