Skip to content

Commit 5f08366

Browse files
committed
timepoint conversion: tf2_ros
1 parent 7af8708 commit 5f08366

File tree

1 file changed

+4
-22
lines changed

1 file changed

+4
-22
lines changed

tf2_ros/include/tf2_ros/buffer_interface.h

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,40 +54,22 @@ using TransformReadyCallback = std::function<void (const TransformStampedFuture
5454

5555
inline builtin_interfaces::msg::Time toMsg(const tf2::TimePoint & t)
5656
{
57-
std::chrono::nanoseconds ns =
58-
std::chrono::duration_cast<std::chrono::nanoseconds>(t.time_since_epoch());
59-
std::chrono::seconds s =
60-
std::chrono::duration_cast<std::chrono::seconds>(t.time_since_epoch());
61-
builtin_interfaces::msg::Time time_msg;
62-
time_msg.sec = static_cast<int32_t>(s.count());
63-
time_msg.nanosec = static_cast<uint32_t>(ns.count() % 1000000000ull);
64-
return time_msg;
57+
return tf2::toMsg<tf2::TimePoint, builtin_interfaces::msg::Time>(t);
6558
}
6659

6760
inline tf2::TimePoint fromMsg(const builtin_interfaces::msg::Time & time_msg)
6861
{
69-
int64_t d = time_msg.sec * 1000000000ull + time_msg.nanosec;
70-
std::chrono::nanoseconds ns(d);
71-
return tf2::TimePoint(std::chrono::duration_cast<tf2::Duration>(ns));
62+
return tf2::TimePointFromMsg(time_msg);
7263
}
7364

7465
inline builtin_interfaces::msg::Duration toMsg(const tf2::Duration & t)
7566
{
76-
std::chrono::nanoseconds ns =
77-
std::chrono::duration_cast<std::chrono::nanoseconds>(t);
78-
std::chrono::seconds s =
79-
std::chrono::duration_cast<std::chrono::seconds>(t);
80-
builtin_interfaces::msg::Duration duration_msg;
81-
duration_msg.sec = static_cast<int32_t>(s.count());
82-
duration_msg.nanosec = static_cast<uint32_t>(ns.count() % 1000000000ull);
83-
return duration_msg;
67+
return tf2::toMsg<tf2::Duration, builtin_interfaces::msg::Duration>(t);
8468
}
8569

8670
inline tf2::Duration fromMsg(const builtin_interfaces::msg::Duration & duration_msg)
8771
{
88-
int64_t d = duration_msg.sec * 1000000000ull + duration_msg.nanosec;
89-
std::chrono::nanoseconds ns(d);
90-
return tf2::Duration(std::chrono::duration_cast<tf2::Duration>(ns));
72+
return tf2::DurationFromMsg(duration_msg);
9173
}
9274

9375
inline double timeToSec(const builtin_interfaces::msg::Time & time_msg)

0 commit comments

Comments
 (0)