mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-09-13 11:30:20 +08:00
chore: use default stream profile
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -160,7 +160,7 @@ class OBCameraNode {
|
||||
|
||||
void setupProfiles();
|
||||
|
||||
void printSensorProfiles(const std::shared_ptr<ob::Sensor>& sensor);
|
||||
void printSensorProfiles(const std::shared_ptr<ob::Sensor>& sensor);
|
||||
|
||||
void selectBaseStream();
|
||||
|
||||
@@ -325,8 +325,6 @@ class OBCameraNode {
|
||||
|
||||
static bool isGemini335PID(uint32_t pid);
|
||||
|
||||
std::string selectPreset(uint32_t pid);
|
||||
|
||||
private:
|
||||
rclcpp::Node* node_ = nullptr;
|
||||
std::shared_ptr<ob::Device> device_ = nullptr;
|
||||
|
||||
@@ -21,32 +21,32 @@ def generate_launch_description():
|
||||
DeclareLaunchArgument('enable_point_cloud', default_value='true'),
|
||||
DeclareLaunchArgument('enable_colored_point_cloud', default_value='true'),
|
||||
DeclareLaunchArgument('connection_delay', default_value='100'),
|
||||
DeclareLaunchArgument('color_width', default_value='1280'),
|
||||
DeclareLaunchArgument('color_height', default_value='720'),
|
||||
DeclareLaunchArgument('color_fps', default_value='15'),
|
||||
DeclareLaunchArgument('color_format', default_value='MJPG'),
|
||||
DeclareLaunchArgument('color_width', default_value='0'),
|
||||
DeclareLaunchArgument('color_height', default_value='0'),
|
||||
DeclareLaunchArgument('color_fps', default_value='0'),
|
||||
DeclareLaunchArgument('color_format', default_value='ANY'),
|
||||
DeclareLaunchArgument('enable_color', default_value='true'),
|
||||
DeclareLaunchArgument('color_qos', default_value='default'),
|
||||
DeclareLaunchArgument('color_camera_info_qos', default_value='default'),
|
||||
DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'),
|
||||
DeclareLaunchArgument('depth_width', default_value='848'),
|
||||
DeclareLaunchArgument('depth_height', default_value='480'),
|
||||
DeclareLaunchArgument('depth_fps', default_value='15'),
|
||||
DeclareLaunchArgument('depth_format', default_value='Y16'),
|
||||
DeclareLaunchArgument('depth_width', default_value='0'),
|
||||
DeclareLaunchArgument('depth_height', default_value='0'),
|
||||
DeclareLaunchArgument('depth_fps', default_value='0'),
|
||||
DeclareLaunchArgument('depth_format', default_value='ANY'),
|
||||
DeclareLaunchArgument('enable_depth', default_value='true'),
|
||||
DeclareLaunchArgument('depth_qos', default_value='default'),
|
||||
DeclareLaunchArgument('depth_camera_info_qos', default_value='default'),
|
||||
DeclareLaunchArgument('left_ir_width', default_value='848'),
|
||||
DeclareLaunchArgument('left_ir_height', default_value='480'),
|
||||
DeclareLaunchArgument('left_ir_fps', default_value='15'),
|
||||
DeclareLaunchArgument('left_ir_format', default_value='Y8'),
|
||||
DeclareLaunchArgument('left_ir_width', default_value='0'),
|
||||
DeclareLaunchArgument('left_ir_height', default_value='0'),
|
||||
DeclareLaunchArgument('left_ir_fps', default_value='0'),
|
||||
DeclareLaunchArgument('left_ir_format', default_value='ANY'),
|
||||
DeclareLaunchArgument('enable_left_ir', default_value='true'),
|
||||
DeclareLaunchArgument('left_ir_qos', default_value='default'),
|
||||
DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'),
|
||||
DeclareLaunchArgument('right_ir_width', default_value='848'),
|
||||
DeclareLaunchArgument('right_ir_height', default_value='480'),
|
||||
DeclareLaunchArgument('right_ir_fps', default_value='15'),
|
||||
DeclareLaunchArgument('right_ir_format', default_value='Y8'),
|
||||
DeclareLaunchArgument('right_ir_width', default_value='0'),
|
||||
DeclareLaunchArgument('right_ir_height', default_value='0'),
|
||||
DeclareLaunchArgument('right_ir_fps', default_value='0'),
|
||||
DeclareLaunchArgument('right_ir_format', default_value='ANY'),
|
||||
DeclareLaunchArgument('enable_right_ir', default_value='true'),
|
||||
DeclareLaunchArgument('right_ir_qos', default_value='default'),
|
||||
DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'),
|
||||
@@ -105,8 +105,8 @@ def generate_launch_description():
|
||||
DeclareLaunchArgument('align_mode', default_value='SW'),
|
||||
DeclareLaunchArgument('diagnostic_period', default_value='1.0'),
|
||||
DeclareLaunchArgument('enable_laser', default_value='true'),
|
||||
DeclareLaunchArgument('depth_precision', default_value='1mm'),
|
||||
DeclareLaunchArgument('device_preset', default_value=''),
|
||||
DeclareLaunchArgument('depth_precision', default_value=''),
|
||||
DeclareLaunchArgument('device_preset', default_value='Default'),
|
||||
# Laser on/off alternate mode, 0: off, 1: on-off alternate, 2: off-on alternate.
|
||||
DeclareLaunchArgument('laser_on_off_mode', default_value='0'),
|
||||
DeclareLaunchArgument('retry_on_usb3_detection_failure', default_value='false'),
|
||||
|
||||
@@ -134,8 +134,11 @@ void OBCameraNode::setupDevices() {
|
||||
}
|
||||
auto info = device_->getDeviceInfo();
|
||||
try {
|
||||
device_->setBoolProperty(OB_PROP_DEVICE_USB3_REPEAT_IDENTIFY_BOOL,
|
||||
retry_on_usb3_detection_failure_);
|
||||
if (device_->isPropertySupported(OB_PROP_DEVICE_USB3_REPEAT_IDENTIFY_BOOL,
|
||||
OB_PERMISSION_READ_WRITE)) {
|
||||
device_->setBoolProperty(OB_PROP_DEVICE_USB3_REPEAT_IDENTIFY_BOOL,
|
||||
retry_on_usb3_detection_failure_);
|
||||
}
|
||||
if (depth_registration_) {
|
||||
align_filter_ = std::make_unique<ob::Align>(align_target_stream_);
|
||||
}
|
||||
@@ -153,6 +156,11 @@ void OBCameraNode::setupDevices() {
|
||||
device_->setIntProperty(OB_PROP_LASER_ON_OFF_MODE_INT, laser_on_off_mode_);
|
||||
}
|
||||
if (!device_preset_.empty()) {
|
||||
RCLCPP_INFO_STREAM(logger_, "Available presets:");
|
||||
auto preset_list = device_->getAvailablePresetList();
|
||||
for (uint32_t i = 0; i < preset_list->count(); i++) {
|
||||
RCLCPP_INFO_STREAM(logger_, "Preset " << i << ": " << preset_list->getName(i));
|
||||
}
|
||||
RCLCPP_INFO_STREAM(logger_, "Load device preset: " << device_preset_);
|
||||
device_->loadPreset(device_preset_.c_str());
|
||||
}
|
||||
@@ -391,10 +399,14 @@ void OBCameraNode::setupProfiles() {
|
||||
std::shared_ptr<ob::VideoStreamProfile> selected_profile;
|
||||
std::shared_ptr<ob::VideoStreamProfile> default_profile;
|
||||
try {
|
||||
selected_profile =
|
||||
profiles->getVideoStreamProfile(width_[elem], height_[elem], format_[elem], fps_[elem]);
|
||||
default_profile =
|
||||
profiles->getVideoStreamProfile(width_[elem], height_[elem], format_[elem]);
|
||||
if (width_[elem] == 0 && height_[elem] == 0 && fps_[elem] == 0 &&
|
||||
format_[elem] == OB_FORMAT_UNKNOWN) {
|
||||
selected_profile = profiles->getProfile(0)->as<ob::VideoStreamProfile>();
|
||||
} else {
|
||||
selected_profile = profiles->getVideoStreamProfile(width_[elem], height_[elem],
|
||||
format_[elem], fps_[elem]);
|
||||
}
|
||||
|
||||
} catch (const ob::Error &ex) {
|
||||
RCLCPP_ERROR_STREAM(
|
||||
logger_, "Failed to get " << stream_name_[elem] << " profile: " << ex.getMessage());
|
||||
@@ -435,8 +447,10 @@ void OBCameraNode::setupProfiles() {
|
||||
images_[elem] =
|
||||
cv::Mat(height_[elem], width_[elem], image_format_[elem], cv::Scalar(0, 0, 0));
|
||||
RCLCPP_INFO_STREAM(
|
||||
logger_, " stream " << stream_name_[elem] << " is enabled - width: " << width_[elem]
|
||||
<< ", height: " << height_[elem] << ", fps: " << fps_[elem] << ", "
|
||||
logger_, " stream " << stream_name_[elem]
|
||||
<< " is enabled - width: " << selected_profile->width()
|
||||
<< ", height: " << selected_profile->height()
|
||||
<< ", fps: " << selected_profile->fps() << ", "
|
||||
<< "Format: " << magic_enum::enum_name(selected_profile->format()));
|
||||
}
|
||||
}
|
||||
@@ -637,11 +651,11 @@ void OBCameraNode::getParameters() {
|
||||
camera_link_frame_id_ = camera_name_ + "_link";
|
||||
for (auto stream_index : IMAGE_STREAMS) {
|
||||
std::string param_name = stream_name_[stream_index] + "_width";
|
||||
setAndGetNodeParameter(width_[stream_index], param_name, IMAGE_WIDTH);
|
||||
setAndGetNodeParameter(width_[stream_index], param_name, 0);
|
||||
param_name = stream_name_[stream_index] + "_height";
|
||||
setAndGetNodeParameter(height_[stream_index], param_name, IMAGE_HEIGHT);
|
||||
setAndGetNodeParameter(height_[stream_index], param_name, 0);
|
||||
param_name = stream_name_[stream_index] + "_fps";
|
||||
setAndGetNodeParameter(fps_[stream_index], param_name, IMAGE_FPS);
|
||||
setAndGetNodeParameter(fps_[stream_index], param_name, 0);
|
||||
param_name = "enable_" + stream_name_[stream_index];
|
||||
setAndGetNodeParameter(enable_stream_[stream_index], param_name, false);
|
||||
param_name = "flip_" + stream_name_[stream_index];
|
||||
@@ -789,12 +803,6 @@ void OBCameraNode::getParameters() {
|
||||
align_target_stream_ = obStreamTypeFromString(align_target_stream_str_);
|
||||
setAndGetNodeParameter<bool>(retry_on_usb3_detection_failure_, "retry_on_usb3_detection_failure",
|
||||
false);
|
||||
auto device_info = device_->getDeviceInfo();
|
||||
CHECK_NOTNULL(device_info.get());
|
||||
auto pid = device_info->pid();
|
||||
if (isGemini335PID(pid)) {
|
||||
device_preset_ = selectPreset(pid);
|
||||
}
|
||||
}
|
||||
|
||||
void OBCameraNode::setupTopics() {
|
||||
@@ -856,10 +864,11 @@ void OBCameraNode::setupPipelineConfig() {
|
||||
for (const auto &stream_index : IMAGE_STREAMS) {
|
||||
if (enable_stream_[stream_index]) {
|
||||
RCLCPP_INFO_STREAM(logger_, "Enable " << stream_name_[stream_index] << " stream");
|
||||
RCLCPP_INFO_STREAM(
|
||||
logger_, "Stream " << stream_name_[stream_index] << " width: " << width_[stream_index]
|
||||
<< " height: " << height_[stream_index] << " fps: "
|
||||
<< fps_[stream_index] << " format: " << format_str_[stream_index]);
|
||||
auto profile = stream_profile_[stream_index]->as<ob::VideoStreamProfile>();
|
||||
RCLCPP_INFO_STREAM(logger_,
|
||||
"Stream " << stream_name_[stream_index] << " width: " << profile->width()
|
||||
<< " height: " << profile->height() << " fps: " << profile->fps()
|
||||
<< " format: " << profile->format());
|
||||
pipeline_config_->enableStream(stream_profile_[stream_index]);
|
||||
}
|
||||
}
|
||||
@@ -2053,16 +2062,6 @@ bool OBCameraNode::isGemini335PID(uint32_t pid) {
|
||||
pid == GEMINI_336LE_PID;
|
||||
}
|
||||
|
||||
std::string OBCameraNode::selectPreset(uint32_t pid) {
|
||||
switch (pid) {
|
||||
case GEMINI_336_PID:
|
||||
case GEMINI_336L_PID:
|
||||
return "AMR with IR-Pass";
|
||||
default:
|
||||
return "Default";
|
||||
}
|
||||
}
|
||||
|
||||
orbbec_camera_msgs::msg::IMUInfo OBCameraNode::createIMUInfo(
|
||||
const stream_index_pair &stream_index) {
|
||||
orbbec_camera_msgs::msg::IMUInfo imu_info;
|
||||
|
||||
@@ -260,6 +260,9 @@ std::string getObSDKVersion() {
|
||||
}
|
||||
|
||||
OBFormat OBFormatFromString(const std::string &format) {
|
||||
if (format.empty()) {
|
||||
return OB_FORMAT_UNKNOWN;
|
||||
}
|
||||
std::string fixed_format;
|
||||
std::transform(format.begin(), format.end(), std::back_inserter(fixed_format),
|
||||
[](const auto ch) { return std::isalpha(ch) ? toupper(ch) : ch; });
|
||||
|
||||
Reference in New Issue
Block a user