mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 20:17:47 +08:00
Merge branch 'feature/log' into merge/sdk_2.8.2
This commit is contained in:
@@ -62,6 +62,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_soft_filter', default_value='true'),
|
DeclareLaunchArgument('enable_soft_filter', default_value='true'),
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument("ir_info_url", default_value=""),
|
DeclareLaunchArgument("ir_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("color_info_url", default_value=""),
|
DeclareLaunchArgument("color_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("log_level", default_value="none"),
|
DeclareLaunchArgument("log_level", default_value="none"),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument("log_file_name", default_value=""),
|
DeclareLaunchArgument("log_file_name", default_value=""),
|
||||||
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
||||||
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument("ir_info_url", default_value=""),
|
DeclareLaunchArgument("ir_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("color_info_url", default_value=""),
|
DeclareLaunchArgument("color_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("log_level", default_value="none"),
|
DeclareLaunchArgument("log_level", default_value="none"),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument("log_file_name", default_value=""),
|
DeclareLaunchArgument("log_file_name", default_value=""),
|
||||||
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
||||||
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument("ir_info_url", default_value=""),
|
DeclareLaunchArgument("ir_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("color_info_url", default_value=""),
|
DeclareLaunchArgument("color_info_url", default_value=""),
|
||||||
DeclareLaunchArgument("log_level", default_value="none"),
|
DeclareLaunchArgument("log_level", default_value="none"),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument("log_file_name", default_value=""),
|
DeclareLaunchArgument("log_file_name", default_value=""),
|
||||||
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
DeclareLaunchArgument("enable_publish_extrinsic", default_value="false"),
|
||||||
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
DeclareLaunchArgument("enable_d2c_viewer", default_value="false"),
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('device_access_mode', default_value='Default'), # Default, EA or CA . only for 335le
|
DeclareLaunchArgument('device_access_mode', default_value='Default'), # Default, EA or CA . only for 335le
|
||||||
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('net_device_port', default_value='0'),
|
DeclareLaunchArgument('net_device_port', default_value='0'),
|
||||||
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('device_access_mode', default_value='Default'), # Default, EA or CA . only for 335le
|
DeclareLaunchArgument('device_access_mode', default_value='Default'), # Default, EA or CA . only for 335le
|
||||||
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -189,6 +189,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('net_device_port', default_value='0'),
|
DeclareLaunchArgument('net_device_port', default_value='0'),
|
||||||
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
DeclareLaunchArgument('exposure_range_mode', default_value='default'),#default, ultimate or regular
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('ir_info_url', default_value=''),
|
DeclareLaunchArgument('ir_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('color_info_url', default_value=''),
|
DeclareLaunchArgument('color_info_url', default_value=''),
|
||||||
DeclareLaunchArgument('log_level', default_value='none'),
|
DeclareLaunchArgument('log_level', default_value='none'),
|
||||||
|
DeclareLaunchArgument('ros_log_level', default_value='info'),
|
||||||
DeclareLaunchArgument('log_file_name', default_value=''),
|
DeclareLaunchArgument('log_file_name', default_value=''),
|
||||||
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
DeclareLaunchArgument('enable_publish_extrinsic', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
DeclareLaunchArgument('enable_d2c_viewer', default_value='false'),
|
||||||
|
|||||||
@@ -171,6 +171,16 @@ def generate_launch_description():
|
|||||||
default_value='none',
|
default_value='none',
|
||||||
description='SDK log level: none, debug, info, warn, error, fatal.'
|
description='SDK log level: none, debug, info, warn, error, fatal.'
|
||||||
),
|
),
|
||||||
|
DeclareLaunchArgument(
|
||||||
|
'ros_log_level',
|
||||||
|
default_value='info',
|
||||||
|
description='ROS log level: debug, info, warn, error, fatal.'
|
||||||
|
),
|
||||||
|
DeclareLaunchArgument(
|
||||||
|
'log_file_name',
|
||||||
|
default_value='',
|
||||||
|
description='Custom log file name for SDK logs. If empty, default naming is used.'
|
||||||
|
),
|
||||||
DeclareLaunchArgument(
|
DeclareLaunchArgument(
|
||||||
'time_domain',
|
'time_domain',
|
||||||
default_value='device', # global, device, system
|
default_value='device', # global, device, system
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,7 @@
|
|||||||
#include <ament_index_cpp/get_package_share_directory.hpp>
|
#include <ament_index_cpp/get_package_share_directory.hpp>
|
||||||
#include <ament_index_cpp/get_package_prefix.hpp>
|
#include <ament_index_cpp/get_package_prefix.hpp>
|
||||||
#include <rclcpp_components/register_node_macro.hpp>
|
#include <rclcpp_components/register_node_macro.hpp>
|
||||||
|
#include <rcutils/logging.h>
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@@ -96,6 +97,24 @@ void signalHandler(int sig) {
|
|||||||
|
|
||||||
namespace orbbec_camera {
|
namespace orbbec_camera {
|
||||||
backward::SignalHandling OBCameraNodeDriver::sh;
|
backward::SignalHandling OBCameraNodeDriver::sh;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
int rosLogSeverityFromString(const std::string_view &log_level) {
|
||||||
|
if (log_level == "debug") {
|
||||||
|
return RCUTILS_LOG_SEVERITY_DEBUG;
|
||||||
|
} else if (log_level == "info") {
|
||||||
|
return RCUTILS_LOG_SEVERITY_INFO;
|
||||||
|
} else if (log_level == "warn") {
|
||||||
|
return RCUTILS_LOG_SEVERITY_WARN;
|
||||||
|
} else if (log_level == "error") {
|
||||||
|
return RCUTILS_LOG_SEVERITY_ERROR;
|
||||||
|
} else if (log_level == "fatal") {
|
||||||
|
return RCUTILS_LOG_SEVERITY_FATAL;
|
||||||
|
}
|
||||||
|
return RCUTILS_LOG_SEVERITY_UNSET;
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
OBCameraNodeDriver::OBCameraNodeDriver(const rclcpp::NodeOptions &node_options)
|
OBCameraNodeDriver::OBCameraNodeDriver(const rclcpp::NodeOptions &node_options)
|
||||||
: Node("orbbec_camera_node", "/", node_options),
|
: Node("orbbec_camera_node", "/", node_options),
|
||||||
node_options_(node_options),
|
node_options_(node_options),
|
||||||
@@ -204,13 +223,21 @@ void OBCameraNodeDriver::init() {
|
|||||||
ob::Context::setExtensionsDirectory(extension_path_.c_str());
|
ob::Context::setExtensionsDirectory(extension_path_.c_str());
|
||||||
g_camera_name = declare_parameter<std::string>("camera_name", g_camera_name);
|
g_camera_name = declare_parameter<std::string>("camera_name", g_camera_name);
|
||||||
auto log_level_str = declare_parameter<std::string>("log_level", "none");
|
auto log_level_str = declare_parameter<std::string>("log_level", "none");
|
||||||
|
auto ros_log_level_str = declare_parameter<std::string>("ros_log_level", "info");
|
||||||
auto log_level = obLogSeverityFromString(log_level_str);
|
auto log_level = obLogSeverityFromString(log_level_str);
|
||||||
|
auto ros_log_level = rosLogSeverityFromString(ros_log_level_str);
|
||||||
auto log_file_name = declare_parameter<std::string>("log_file_name", "");
|
auto log_file_name = declare_parameter<std::string>("log_file_name", "");
|
||||||
std::string pwd_dir = std::getenv("PWD") ? std::getenv("PWD") : std::getenv("HOME");
|
std::string pwd_dir = std::getenv("PWD") ? std::getenv("PWD") : std::getenv("HOME");
|
||||||
std::string log_path = pwd_dir + "/Log/" + g_camera_name;
|
std::string log_path = pwd_dir + "/Log/" + g_camera_name;
|
||||||
// Set logger to console
|
// Set logger to console
|
||||||
ob::Context::setLoggerToConsole(log_level);
|
ob::Context::setLoggerToConsole(log_level);
|
||||||
ob::Context::setLoggerToFile(log_level, log_path.c_str());
|
ob::Context::setLoggerToFile(log_level, log_path.c_str());
|
||||||
|
if (ros_log_level != RCUTILS_LOG_SEVERITY_UNSET) {
|
||||||
|
auto ret = rcutils_logging_set_logger_level(this->get_logger().get_name(), ros_log_level);
|
||||||
|
if (ret != RCUTILS_RET_OK) {
|
||||||
|
RCLCPP_WARN_STREAM(logger_, "Failed to set ROS log level to " << ros_log_level_str);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set custom log file name if specified
|
// Set custom log file name if specified
|
||||||
if (!log_file_name.empty()) {
|
if (!log_file_name.empty()) {
|
||||||
try {
|
try {
|
||||||
@@ -289,7 +316,8 @@ void OBCameraNodeDriver::init() {
|
|||||||
RCLCPP_INFO_STREAM(logger_, "setUvcBackendType:" << uvc_backend_);
|
RCLCPP_INFO_STREAM(logger_, "setUvcBackendType:" << uvc_backend_);
|
||||||
} else {
|
} else {
|
||||||
ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC);
|
ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC);
|
||||||
RCLCPP_INFO_STREAM(logger_, "setUvcBackendType:" << uvc_backend_);
|
RCLCPP_INFO_STREAM(logger_,
|
||||||
|
"not support uvc_backend:" << uvc_backend_ << ", set to default libuvc");
|
||||||
}
|
}
|
||||||
ctx_->enableNetDeviceEnumeration(enumerate_net_device_);
|
ctx_->enableNetDeviceEnumeration(enumerate_net_device_);
|
||||||
device_changed_callback_id_ = ctx_->registerDeviceChangedCallback(
|
device_changed_callback_id_ = ctx_->registerDeviceChangedCallback(
|
||||||
@@ -885,11 +913,11 @@ std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByUSBPort(
|
|||||||
|
|
||||||
std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByNetIP(
|
std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByNetIP(
|
||||||
const std::shared_ptr<ob::DeviceList> &list, const std::string &net_ip) {
|
const std::shared_ptr<ob::DeviceList> &list, const std::string &net_ip) {
|
||||||
RCLCPP_INFO_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_DEBUG_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"Before lock: Select device net ip: " << net_ip);
|
"Before lock: Select device net ip: " << net_ip);
|
||||||
std::lock_guard<decltype(device_lock_)> lock(device_lock_);
|
std::lock_guard<decltype(device_lock_)> lock(device_lock_);
|
||||||
RCLCPP_INFO_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_DEBUG_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"After lock: Select device net ip: " << net_ip);
|
"After lock: Select device net ip: " << net_ip);
|
||||||
std::shared_ptr<ob::Device> device = nullptr;
|
std::shared_ptr<ob::Device> device = nullptr;
|
||||||
for (size_t i = 0; i < list->getCount(); i++) {
|
for (size_t i = 0; i < list->getCount(); i++) {
|
||||||
try {
|
try {
|
||||||
@@ -899,8 +927,8 @@ std::shared_ptr<ob::Device> OBCameraNodeDriver::selectDeviceByNetIP(
|
|||||||
if (list->getIpAddress(i) == nullptr) {
|
if (list->getIpAddress(i) == nullptr) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
RCLCPP_INFO_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_DEBUG_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"FindDeviceByNetIP device net ip " << list->getIpAddress(i));
|
"FindDeviceByNetIP device net ip " << list->getIpAddress(i));
|
||||||
if (std::string(list->getIpAddress(i)) == net_ip) {
|
if (std::string(list->getIpAddress(i)) == net_ip) {
|
||||||
RCLCPP_INFO_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
RCLCPP_INFO_STREAM_THROTTLE(logger_, *get_clock(), 5000,
|
||||||
"getDeviceByNetIP device net ip " << net_ip << " done");
|
"getDeviceByNetIP device net ip " << net_ip << " done");
|
||||||
@@ -937,7 +965,7 @@ void OBCameraNodeDriver::initializeDevice(const std::shared_ptr<ob::Device> &dev
|
|||||||
constexpr int max_retries = 3;
|
constexpr int max_retries = 3;
|
||||||
bool initialized = false;
|
bool initialized = false;
|
||||||
device_info_ = device_->getDeviceInfo();
|
device_info_ = device_->getDeviceInfo();
|
||||||
RCLCPP_INFO_STREAM(logger_, "Try to connect device via " << device_info_->connectionType());
|
RCLCPP_DEBUG_STREAM(logger_, "Try to connect device via " << device_info_->connectionType());
|
||||||
|
|
||||||
while (retry_count < max_retries && !initialized) {
|
while (retry_count < max_retries && !initialized) {
|
||||||
try {
|
try {
|
||||||
@@ -1283,7 +1311,7 @@ void OBCameraNodeDriver::startDevice(const std::shared_ptr<ob::DeviceList> &list
|
|||||||
// success get lock,break
|
// success get lock,break
|
||||||
break;
|
break;
|
||||||
} else if (try_lock_result == EBUSY) {
|
} else if (try_lock_result == EBUSY) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "Device lock is held by another process, waiting 100ms");
|
RCLCPP_WARN_STREAM(logger_, "Device lock is held by another process, waiting 100ms");
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
} else {
|
} else {
|
||||||
RCLCPP_ERROR_STREAM(logger_, "Failed to lock orb_device_lock_");
|
RCLCPP_ERROR_STREAM(logger_, "Failed to lock orb_device_lock_");
|
||||||
@@ -1309,7 +1337,7 @@ void OBCameraNodeDriver::startDevice(const std::shared_ptr<ob::DeviceList> &list
|
|||||||
}
|
}
|
||||||
auto end_time = std::chrono::high_resolution_clock::now();
|
auto end_time = std::chrono::high_resolution_clock::now();
|
||||||
auto time_cost = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time);
|
auto time_cost = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Select device cost " << time_cost.count() << " ms");
|
RCLCPP_DEBUG_STREAM(logger_, "Select device cost " << time_cost.count() << " ms");
|
||||||
start_time = std::chrono::high_resolution_clock::now();
|
start_time = std::chrono::high_resolution_clock::now();
|
||||||
initializeDevice(device);
|
initializeDevice(device);
|
||||||
end_time = std::chrono::high_resolution_clock::now();
|
end_time = std::chrono::high_resolution_clock::now();
|
||||||
|
|||||||
@@ -64,27 +64,26 @@ void OBLidarNode::setAndGetNodeParameter(
|
|||||||
OBLidarNode::~OBLidarNode() noexcept { clean(); }
|
OBLidarNode::~OBLidarNode() noexcept { clean(); }
|
||||||
|
|
||||||
void OBLidarNode::rebootDevice() {
|
void OBLidarNode::rebootDevice() {
|
||||||
RCLCPP_WARN_STREAM(logger_, "Reboot device");
|
RCLCPP_INFO_STREAM(logger_, "Rebooting device");
|
||||||
clean();
|
clean();
|
||||||
if (device_) {
|
if (device_) {
|
||||||
device_->reboot();
|
device_->reboot();
|
||||||
RCLCPP_WARN_STREAM(logger_, "Reboot device DONE");
|
RCLCPP_DEBUG_STREAM(logger_, "Reboot device complete");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBLidarNode::clean() noexcept {
|
void OBLidarNode::clean() noexcept {
|
||||||
std::lock_guard<decltype(device_lock_)> lock(device_lock_);
|
std::lock_guard<decltype(device_lock_)> lock(device_lock_);
|
||||||
RCLCPP_WARN_STREAM(logger_, "Do destroy ~OBLidarNode");
|
RCLCPP_DEBUG_STREAM(logger_, "Destroying OBLidarNode");
|
||||||
is_running_.store(false);
|
is_running_.store(false);
|
||||||
RCLCPP_WARN_STREAM(logger_, "Stop tf thread");
|
RCLCPP_DEBUG_STREAM(logger_, "Stop tf thread");
|
||||||
if (tf_thread_ && tf_thread_->joinable()) {
|
if (tf_thread_ && tf_thread_->joinable()) {
|
||||||
tf_thread_->join();
|
tf_thread_->join();
|
||||||
}
|
}
|
||||||
RCLCPP_WARN_STREAM(logger_, "Stop color frame thread");
|
RCLCPP_DEBUG_STREAM(logger_, "Stop streams");
|
||||||
RCLCPP_WARN_STREAM(logger_, "stop streams");
|
|
||||||
stopStreams();
|
stopStreams();
|
||||||
stopIMU();
|
stopIMU();
|
||||||
RCLCPP_WARN_STREAM(logger_, "Destroy ~OBLidarNode DONE");
|
RCLCPP_DEBUG_STREAM(logger_, "OBLidarNode cleanup complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBLidarNode::setupTopics() {
|
void OBLidarNode::setupTopics() {
|
||||||
@@ -115,9 +114,9 @@ void OBLidarNode::getParameters() {
|
|||||||
param_name = stream_name_[stream_index] + "_rate";
|
param_name = stream_name_[stream_index] + "_rate";
|
||||||
setAndGetNodeParameter(rate_int_[stream_index], param_name, 0);
|
setAndGetNodeParameter(rate_int_[stream_index], param_name, 0);
|
||||||
rate_[stream_index] = OBScanRateFromInt(rate_int_[stream_index]);
|
rate_[stream_index] = OBScanRateFromInt(rate_int_[stream_index]);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Input rate: " << magic_enum::enum_name(rate_[stream_index])
|
RCLCPP_DEBUG_STREAM(logger_, "Input rate: " << magic_enum::enum_name(rate_[stream_index])
|
||||||
<< " Input format:"
|
<< " Input format:"
|
||||||
<< magic_enum::enum_name(format_[stream_index]));
|
<< magic_enum::enum_name(format_[stream_index]));
|
||||||
param_name = stream_name_[stream_index] + "_frame_id";
|
param_name = stream_name_[stream_index] + "_frame_id";
|
||||||
std::string default_frame_id = camera_name_ + "_" + stream_name_[stream_index] + "_frame";
|
std::string default_frame_id = camera_name_ + "_" + stream_name_[stream_index] + "_frame";
|
||||||
setAndGetNodeParameter(frame_id_[stream_index], param_name, default_frame_id);
|
setAndGetNodeParameter(frame_id_[stream_index], param_name, default_frame_id);
|
||||||
@@ -181,6 +180,8 @@ void OBLidarNode::getParameters() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OBLidarNode::setupDevices() {
|
void OBLidarNode::setupDevices() {
|
||||||
|
RCLCPP_INFO_STREAM(logger_, "Current time domain: " << time_domain_);
|
||||||
|
|
||||||
auto sensor_list = device_->getSensorList();
|
auto sensor_list = device_->getSensorList();
|
||||||
for (size_t i = 0; i < sensor_list->getCount(); i++) {
|
for (size_t i = 0; i < sensor_list->getCount(); i++) {
|
||||||
auto sensor = sensor_list->getSensor(i);
|
auto sensor = sensor_list->getSensor(i);
|
||||||
@@ -196,14 +197,13 @@ void OBLidarNode::setupDevices() {
|
|||||||
}
|
}
|
||||||
for (const auto &[stream_index, enable] : enable_stream_) {
|
for (const auto &[stream_index, enable] : enable_stream_) {
|
||||||
if (enable && sensors_.find(stream_index) == sensors_.end()) {
|
if (enable && sensors_.find(stream_index) == sensors_.end()) {
|
||||||
RCLCPP_INFO_STREAM(logger_,
|
RCLCPP_WARN_STREAM(logger_, magic_enum::enum_name(stream_index.first)
|
||||||
magic_enum::enum_name(stream_index.first)
|
<< " sensor not supported by current device, skipping");
|
||||||
<< "sensor isn't supported by current device! -- Skipping...");
|
|
||||||
enable_stream_[stream_index] = false;
|
enable_stream_[stream_index] = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (device_->isPropertySupported(OB_PROP_HEARTBEAT_BOOL, OB_PERMISSION_READ_WRITE)) {
|
if (device_->isPropertySupported(OB_PROP_HEARTBEAT_BOOL, OB_PERMISSION_READ_WRITE)) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "Setting heartbeat to " << (enable_heartbeat_ ? "ON" : "OFF"));
|
RCLCPP_INFO_STREAM(logger_, "Current heartbeat: " << (enable_heartbeat_ ? "ON" : "OFF"));
|
||||||
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_HEARTBEAT_BOOL, enable_heartbeat_);
|
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_HEARTBEAT_BOOL, enable_heartbeat_);
|
||||||
}
|
}
|
||||||
if (!echo_mode_.empty() &&
|
if (!echo_mode_.empty() &&
|
||||||
@@ -214,9 +214,9 @@ void OBLidarNode::setupDevices() {
|
|||||||
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_SPECIFIC_MODE_INT, 1);
|
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_SPECIFIC_MODE_INT, 1);
|
||||||
}
|
}
|
||||||
RCLCPP_INFO_STREAM(
|
RCLCPP_INFO_STREAM(
|
||||||
logger_, "Setting echo mode to "
|
logger_, "Current echo mode: " << (device_->getIntProperty(OB_PROP_LIDAR_SPECIFIC_MODE_INT)
|
||||||
<< (device_->getIntProperty(OB_PROP_LIDAR_SPECIFIC_MODE_INT) ? "First Echo"
|
? "First Echo"
|
||||||
: "Last Echo"));
|
: "Last Echo"));
|
||||||
}
|
}
|
||||||
if (repetitive_scan_mode_ != -1 &&
|
if (repetitive_scan_mode_ != -1 &&
|
||||||
device_->isPropertySupported(OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT,
|
device_->isPropertySupported(OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT,
|
||||||
@@ -229,7 +229,7 @@ void OBLidarNode::setupDevices() {
|
|||||||
} else {
|
} else {
|
||||||
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT,
|
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT,
|
||||||
repetitive_scan_mode_);
|
repetitive_scan_mode_);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Setting repetitive scan mode to " << device_->getIntProperty(
|
RCLCPP_INFO_STREAM(logger_, "Current repetitive scan mode: " << device_->getIntProperty(
|
||||||
OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT));
|
OB_PROP_LIDAR_REPETITIVE_SCAN_MODE_INT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -242,7 +242,7 @@ void OBLidarNode::setupDevices() {
|
|||||||
} else {
|
} else {
|
||||||
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_TAIL_FILTER_LEVEL_INT, filter_level_);
|
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_TAIL_FILTER_LEVEL_INT, filter_level_);
|
||||||
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_APPLY_CONFIGS_INT, 1);
|
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_LIDAR_APPLY_CONFIGS_INT, 1);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Setting filter level to " << device_->getIntProperty(
|
RCLCPP_INFO_STREAM(logger_, "Current filter level: " << device_->getIntProperty(
|
||||||
OB_PROP_LIDAR_TAIL_FILTER_LEVEL_INT));
|
OB_PROP_LIDAR_TAIL_FILTER_LEVEL_INT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +255,7 @@ void OBLidarNode::setupDevices() {
|
|||||||
range.min, range.max);
|
range.min, range.max);
|
||||||
} else {
|
} else {
|
||||||
TRY_TO_SET_PROPERTY(setFloatProperty, OB_PROP_LIDAR_MEMS_FOV_SIZE_FLOAT, vertical_fov_);
|
TRY_TO_SET_PROPERTY(setFloatProperty, OB_PROP_LIDAR_MEMS_FOV_SIZE_FLOAT, vertical_fov_);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Setting vertical fov to " << device_->getFloatProperty(
|
RCLCPP_INFO_STREAM(logger_, "Current vertical fov: " << device_->getFloatProperty(
|
||||||
OB_PROP_LIDAR_MEMS_FOV_SIZE_FLOAT));
|
OB_PROP_LIDAR_MEMS_FOV_SIZE_FLOAT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,11 +329,11 @@ void OBLidarNode::setupProfiles() {
|
|||||||
stream_profile_[elem] = selected_profile;
|
stream_profile_[elem] = selected_profile;
|
||||||
rate_[elem] = selected_profile->getScanRate();
|
rate_[elem] = selected_profile->getScanRate();
|
||||||
format_[elem] = selected_profile->getFormat();
|
format_[elem] = selected_profile->getFormat();
|
||||||
RCLCPP_INFO_STREAM(logger_, " stream "
|
RCLCPP_DEBUG_STREAM(logger_, "stream "
|
||||||
<< stream_name_[elem] << " is enabled - scan rate: "
|
<< stream_name_[elem] << " is enabled - scan rate: "
|
||||||
<< magic_enum::enum_name(selected_profile->getScanRate())
|
<< magic_enum::enum_name(selected_profile->getScanRate())
|
||||||
<< " format:"
|
<< " format:"
|
||||||
<< magic_enum::enum_name(selected_profile->getFormat()));
|
<< magic_enum::enum_name(selected_profile->getFormat()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// IMU
|
// IMU
|
||||||
@@ -499,7 +499,7 @@ void OBLidarNode::startIMU() {
|
|||||||
|
|
||||||
void OBLidarNode::stopStreams() {
|
void OBLidarNode::stopStreams() {
|
||||||
if (!pipeline_started_ || !pipeline_) {
|
if (!pipeline_started_ || !pipeline_) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "pipeline not started or not exist, skip stop pipeline");
|
RCLCPP_DEBUG_STREAM(logger_, "Pipeline not started or not exist, skip stop pipeline");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -517,7 +517,7 @@ void OBLidarNode::stopIMU() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!imu_sync_output_start_ || !imuPipeline_) {
|
if (!imu_sync_output_start_ || !imuPipeline_) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "IMU pipeline not started or not exist, skip stop imu pipeline");
|
RCLCPP_DEBUG_STREAM(logger_, "IMU pipeline not started or not exist, skip stop imu pipeline");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -542,10 +542,10 @@ void OBLidarNode::setupPipelineConfig() {
|
|||||||
|
|
||||||
if (enable_stream_[stream_index]) {
|
if (enable_stream_[stream_index]) {
|
||||||
auto video_profile = profile;
|
auto video_profile = profile;
|
||||||
RCLCPP_INFO_STREAM(logger_,
|
RCLCPP_DEBUG_STREAM(logger_,
|
||||||
"lidar profile: " << magic_enum::enum_name(video_profile->getScanRate())
|
"lidar profile: " << magic_enum::enum_name(video_profile->getScanRate())
|
||||||
<< " "
|
<< " "
|
||||||
<< magic_enum::enum_name(video_profile->getFormat()));
|
<< magic_enum::enum_name(video_profile->getFormat()));
|
||||||
}
|
}
|
||||||
|
|
||||||
RCLCPP_INFO_STREAM(
|
RCLCPP_INFO_STREAM(
|
||||||
@@ -1272,11 +1272,12 @@ void OBLidarNode::calcAndPublishStaticTransform() {
|
|||||||
auto timestamp = node_->now();
|
auto timestamp = node_->now();
|
||||||
publishStaticTF(timestamp, trans, Q, frame_id_[base_stream_], accel_gyro_frame_id_);
|
publishStaticTF(timestamp, trans, Q, frame_id_[base_stream_], accel_gyro_frame_id_);
|
||||||
|
|
||||||
RCLCPP_INFO_STREAM(logger_, "Publishing static transform from "
|
RCLCPP_DEBUG_STREAM(logger_, "Publishing static transform from "
|
||||||
<< frame_id_[base_stream_] << " to " << accel_gyro_frame_id_);
|
<< frame_id_[base_stream_] << " to " << accel_gyro_frame_id_);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Translation " << trans[0] << ", " << trans[1] << ", " << trans[2]);
|
RCLCPP_DEBUG_STREAM(logger_,
|
||||||
RCLCPP_INFO_STREAM(logger_, "Rotation " << Q.getX() << ", " << Q.getY() << ", " << Q.getZ()
|
"Translation " << trans[0] << ", " << trans[1] << ", " << trans[2]);
|
||||||
<< ", " << Q.getW());
|
RCLCPP_DEBUG_STREAM(logger_, "Rotation " << Q.getX() << ", " << Q.getY() << ", " << Q.getZ()
|
||||||
|
<< ", " << Q.getW());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user