Robotics StackExchange | Archived questions

How to convert a std::chrono::high_resolution_clock to ros::Time

I like to convert a chrono::highresolutionclock to ros:Time?

Asked by Markus Bader on 2019-10-24 02:34:08 UTC

Comments

Answers

Hi ros::Time are sec and nsec since epoch

#include <iostream>
#include <chrono>
#include <ctime>
#include <ros/ros.h>

int main()
{
    const auto p0 = std::chrono::time_point<std::chrono::high_resolution_clock>{};
    const auto p3 = std::chrono::high_resolution_clock::now();

    auto tstamp = p3 - p0;
    int32_t sec = std::chrono::duration_cast<std::chrono::seconds>(tstamp).count();
    int32_t nsec = std::chrono::duration_cast<std::chrono::nanoseconds>(tstamp).count() % 1000000000UL;
    std::cout << "sec: " << sec << " nsec: " << nsec << " since epoch: \n";
    ros::Time n(sec, nsec);
    return 0;
}

Asked by Markus Bader on 2019-10-24 02:39:59 UTC

Comments