mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-05 20:47:46 +08:00
feat: support multiple ROS 2 distributions
This commit is contained in:
@@ -19,8 +19,13 @@
|
||||
#include <fcntl.h>
|
||||
#include <semaphore.h>
|
||||
#include <sys/shm.h>
|
||||
#include <ament_index_cpp/get_package_share_directory.hpp>
|
||||
#include <ament_index_cpp/get_package_prefix.hpp>
|
||||
#if __has_include(<ament_index_cpp/get_package_share_path.hpp>)
|
||||
#include <ament_index_cpp/get_package_share_path.hpp>
|
||||
#define ORBBEC_AMENT_INDEX_USES_FILESYSTEM_PATHS
|
||||
#else
|
||||
#include <ament_index_cpp/get_package_share_directory.hpp>
|
||||
#endif
|
||||
#include <rclcpp_components/register_node_macro.hpp>
|
||||
#include <rcutils/logging.h>
|
||||
#include <csignal>
|
||||
@@ -39,6 +44,24 @@ std::string g_time_domain = "global"; // Assuming this is declared elsew
|
||||
namespace {
|
||||
constexpr auto kStreamStartDelayAfterReconnect = std::chrono::seconds(5);
|
||||
|
||||
std::filesystem::path getPackageSharePath(const std::string &package_name) {
|
||||
#ifdef ORBBEC_AMENT_INDEX_USES_FILESYSTEM_PATHS
|
||||
return ament_index_cpp::get_package_share_path(package_name);
|
||||
#else
|
||||
return ament_index_cpp::get_package_share_directory(package_name);
|
||||
#endif
|
||||
}
|
||||
|
||||
std::filesystem::path getPackagePrefixPath(const std::string &package_name) {
|
||||
#ifdef ORBBEC_AMENT_INDEX_USES_FILESYSTEM_PATHS
|
||||
std::filesystem::path package_prefix;
|
||||
ament_index_cpp::get_package_prefix(package_name, package_prefix);
|
||||
return package_prefix;
|
||||
#else
|
||||
return ament_index_cpp::get_package_prefix(package_name);
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string getLogDirectoryForCamera(const std::string &camera_name) {
|
||||
const char *log_dir_override = std::getenv("ORBBEC_LOG_DIR");
|
||||
if (log_dir_override && log_dir_override[0] != '\0') {
|
||||
@@ -153,10 +176,10 @@ int rosLogSeverityFromString(const std::string_view &log_level) {
|
||||
OBCameraNodeDriver::OBCameraNodeDriver(const rclcpp::NodeOptions &node_options)
|
||||
: Node("orbbec_camera_node", "/", node_options),
|
||||
node_options_(node_options),
|
||||
config_path_(ament_index_cpp::get_package_share_directory("orbbec_camera") +
|
||||
"/config/OrbbecSDKConfig_v2.0.xml"),
|
||||
config_path_(
|
||||
(getPackageSharePath("orbbec_camera") / "config" / "OrbbecSDKConfig_v2.0.xml").string()),
|
||||
logger_(this->get_logger()),
|
||||
extension_path_(ament_index_cpp::get_package_prefix("orbbec_camera") + "/lib/extensions") {
|
||||
extension_path_((getPackagePrefixPath("orbbec_camera") / "lib" / "extensions").string()) {
|
||||
node_name_ = "orbbec_camera_node";
|
||||
init();
|
||||
}
|
||||
@@ -165,10 +188,10 @@ OBCameraNodeDriver::OBCameraNodeDriver(const std::string &node_name, const std::
|
||||
const rclcpp::NodeOptions &node_options)
|
||||
: Node(node_name, ns, node_options),
|
||||
node_options_(node_options),
|
||||
config_path_(ament_index_cpp::get_package_share_directory("orbbec_camera") +
|
||||
"/config/OrbbecSDKConfig_v2.0.xml"),
|
||||
config_path_(
|
||||
(getPackageSharePath("orbbec_camera") / "config" / "OrbbecSDKConfig_v2.0.xml").string()),
|
||||
logger_(this->get_logger()),
|
||||
extension_path_(ament_index_cpp::get_package_prefix("orbbec_camera") + "/lib/extensions") {
|
||||
extension_path_((getPackagePrefixPath("orbbec_camera") / "lib" / "extensions").string()) {
|
||||
node_name_ = node_name;
|
||||
init();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user