From 25a9b4e339867bacb8ba5b92b955420cec86596a Mon Sep 17 00:00:00 2001 From: Dirk Thomas Date: Mon, 20 Aug 2018 08:58:32 -0700 Subject: [PATCH] add Time::is_zero and Duration::seconds (#536) add Duration::seconds --- rclcpp/include/rclcpp/duration.hpp | 7 +++++++ rclcpp/src/rclcpp/duration.cpp | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/rclcpp/include/rclcpp/duration.hpp b/rclcpp/include/rclcpp/duration.hpp index 6e63584..11fc2e2 100644 --- a/rclcpp/include/rclcpp/duration.hpp +++ b/rclcpp/include/rclcpp/duration.hpp @@ -97,6 +97,13 @@ public: rcl_duration_value_t nanoseconds() const; + /// \return the duration in seconds as a floating point number. + /// \warning Depending on sizeof(double) there could be significant precision loss. + /// When an exact time is required use nanoseconds() instead. + RCLCPP_PUBLIC + double + seconds() const; + private: rcl_duration_t rcl_duration_; }; diff --git a/rclcpp/src/rclcpp/duration.cpp b/rclcpp/src/rclcpp/duration.cpp index afbc293..0455abe 100644 --- a/rclcpp/src/rclcpp/duration.cpp +++ b/rclcpp/src/rclcpp/duration.cpp @@ -214,4 +214,10 @@ Duration::nanoseconds() const return rcl_duration_.nanoseconds; } +double +Duration::seconds() const +{ + return std::chrono::duration(std::chrono::nanoseconds(rcl_duration_.nanoseconds)).count(); +} + } // namespace rclcpp