diff --git a/rclcpp/include/rclcpp/node.hpp b/rclcpp/include/rclcpp/node.hpp index bc8b93e..4b6bcfb 100644 --- a/rclcpp/include/rclcpp/node.hpp +++ b/rclcpp/include/rclcpp/node.hpp @@ -894,9 +894,13 @@ public: rclcpp::Clock::SharedPtr get_clock(); + RCLCPP_PUBLIC + rclcpp::Clock::ConstSharedPtr + get_clock() const; + RCLCPP_PUBLIC Time - now(); + now() const; /// Return the Node's internal NodeBaseInterface implementation. RCLCPP_PUBLIC diff --git a/rclcpp/include/rclcpp/node_interfaces/node_clock.hpp b/rclcpp/include/rclcpp/node_interfaces/node_clock.hpp index 1b09492..91cdcf5 100644 --- a/rclcpp/include/rclcpp/node_interfaces/node_clock.hpp +++ b/rclcpp/include/rclcpp/node_interfaces/node_clock.hpp @@ -54,6 +54,12 @@ public: rclcpp::Clock::SharedPtr get_clock() override; + /// Get a clock which will be kept up to date by the node. + RCLCPP_PUBLIC + virtual + rclcpp::Clock::ConstSharedPtr + get_clock() const; + private: RCLCPP_DISABLE_COPY(NodeClock) diff --git a/rclcpp/include/rclcpp/node_interfaces/node_clock_interface.hpp b/rclcpp/include/rclcpp/node_interfaces/node_clock_interface.hpp index 055d475..efc6dec 100644 --- a/rclcpp/include/rclcpp/node_interfaces/node_clock_interface.hpp +++ b/rclcpp/include/rclcpp/node_interfaces/node_clock_interface.hpp @@ -40,6 +40,12 @@ public: virtual rclcpp::Clock::SharedPtr get_clock() = 0; + + /// Get a const ROS clock which will be kept up to date by the node. + RCLCPP_PUBLIC + virtual + rclcpp::Clock::ConstSharedPtr + get_clock() const = 0; }; } // namespace node_interfaces diff --git a/rclcpp/src/rclcpp/node.cpp b/rclcpp/src/rclcpp/node.cpp index 783a7e1..3cc13b0 100644 --- a/rclcpp/src/rclcpp/node.cpp +++ b/rclcpp/src/rclcpp/node.cpp @@ -390,8 +390,14 @@ Node::get_clock() return node_clock_->get_clock(); } +rclcpp::Clock::ConstSharedPtr +Node::get_clock() const +{ + return node_clock_->get_clock(); +} + rclcpp::Time -Node::now() +Node::now() const { return node_clock_->get_clock()->now(); } diff --git a/rclcpp/src/rclcpp/node_interfaces/node_clock.cpp b/rclcpp/src/rclcpp/node_interfaces/node_clock.cpp index 8de8c3c..734d7bd 100644 --- a/rclcpp/src/rclcpp/node_interfaces/node_clock.cpp +++ b/rclcpp/src/rclcpp/node_interfaces/node_clock.cpp @@ -36,8 +36,14 @@ NodeClock::NodeClock( NodeClock::~NodeClock() {} -std::shared_ptr +rclcpp::Clock::SharedPtr NodeClock::get_clock() { return ros_clock_; } + +rclcpp::Clock::ConstSharedPtr +NodeClock::get_clock() const +{ + return ros_clock_; +} diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp index 9d9fa7e..6ed96db 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp @@ -465,9 +465,13 @@ public: rclcpp::Clock::SharedPtr get_clock(); + RCLCPP_LIFECYCLE_PUBLIC + rclcpp::Clock::ConstSharedPtr + get_clock() const; + RCLCPP_LIFECYCLE_PUBLIC rclcpp::Time - now(); + now() const; /// Return the Node's internal NodeBaseInterface implementation. RCLCPP_LIFECYCLE_PUBLIC diff --git a/rclcpp_lifecycle/src/lifecycle_node.cpp b/rclcpp_lifecycle/src/lifecycle_node.cpp index 90e7f1c..f75d6c2 100644 --- a/rclcpp_lifecycle/src/lifecycle_node.cpp +++ b/rclcpp_lifecycle/src/lifecycle_node.cpp @@ -316,8 +316,14 @@ LifecycleNode::get_clock() return node_clock_->get_clock(); } +rclcpp::Clock::ConstSharedPtr +LifecycleNode::get_clock() const +{ + return node_clock_->get_clock(); +} + rclcpp::Time -LifecycleNode::now() +LifecycleNode::now() const { return node_clock_->get_clock()->now(); }