diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index 5c9eacb7..d6e8127b 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -15,6 +15,7 @@ *******************************************************************************/ #include "orbbec_camera/ob_camera_node.h" +#include #include #include #include @@ -65,6 +66,20 @@ std::string OBCameraNode::normalizeDepthFilterName(const std::string &filter_nam namespace { +template +auto resolveTopicNameCompat(const NodeTopicsInterfaceT &topics_interface, + const std::string &topic_name, const std::string &, const std::string &, + int) -> decltype(topics_interface.resolve_topic_name(topic_name)) { + return topics_interface.resolve_topic_name(topic_name); +} + +template +std::string resolveTopicNameCompat(const NodeTopicsInterfaceT &, const std::string &topic_name, + const std::string &node_name, const std::string &node_namespace, + long) { + return rclcpp::expand_topic_or_service_name(topic_name, node_name, node_namespace, false); +} + std::string getDepthFilterStatusName(const std::string &filter_name) { if (filter_name == "SpatialAdvancedFilter") { return "SpatialFilter"; @@ -5731,7 +5746,9 @@ void OBCameraNode::setupCameraInfo() { } std::string OBCameraNode::resolveStreamStatusTopic(const std::string &topic_name) const { - return node_->get_node_topics_interface()->resolve_topic_name(topic_name); + const auto topics_interface = node_->get_node_topics_interface(); + return resolveTopicNameCompat(*topics_interface, topic_name, node_->get_name(), + node_->get_namespace(), 0); } std::string OBCameraNode::compressedStreamStatusTopic(const stream_index_pair &stream_index) const {