Update ros wrapper timestamp
This commit is contained in:
parent
ea86ddd167
commit
a2ece901ba
|
@ -17,6 +17,9 @@
|
|||
#include "device/context.h"
|
||||
#include "device/device.h"
|
||||
|
||||
#define FULL_PRECISION \
|
||||
std::fixed << std::setprecision(std::numeric_limits<double>::max_digits10)
|
||||
|
||||
MYNTEYE_BEGIN_NAMESPACE
|
||||
|
||||
namespace enc = sensor_msgs::image_encodings;
|
||||
|
@ -170,8 +173,23 @@ class ROSWrapperNodelet : public nodelet::Nodelet {
|
|||
void publishTopics() {
|
||||
device_->SetStreamCallback(
|
||||
Stream::LEFT, [this](const device::StreamData &data) {
|
||||
static double ros_time_beg = ros::Time::now().toSec();
|
||||
static double img_time_beg = data.img->timestamp;
|
||||
ros::Time stamp(
|
||||
ros_time_beg + (data.img->timestamp - img_time_beg) * 0.00001f);
|
||||
|
||||
// static double img_time_prev = -1;
|
||||
// NODELET_INFO_STREAM("ros_time_beg: " << FULL_PRECISION <<
|
||||
// ros_time_beg
|
||||
// << ", img_time_elapsed: " << FULL_PRECISION
|
||||
// << ((data.img->timestamp - img_time_beg) * 0.00001f)
|
||||
// << ", img_time_diff: " << FULL_PRECISION
|
||||
// << ((img_time_prev < 0) ? 0
|
||||
// : (data.img->timestamp - img_time_prev) * 0.01f) << " ms");
|
||||
// img_time_prev = data.img->timestamp;
|
||||
|
||||
++left_count_;
|
||||
publishLeft(data, left_count_, ros::Time::now());
|
||||
publishLeft(data, left_count_, stamp);
|
||||
NODELET_DEBUG_STREAM(
|
||||
Stream::LEFT << ", count: " << left_count_
|
||||
<< ", frame_id: " << data.img->frame_id
|
||||
|
@ -181,8 +199,13 @@ class ROSWrapperNodelet : public nodelet::Nodelet {
|
|||
|
||||
device_->SetStreamCallback(
|
||||
Stream::RIGHT, [this](const device::StreamData &data) {
|
||||
static double ros_time_beg = ros::Time::now().toSec();
|
||||
static double img_time_beg = data.img->timestamp;
|
||||
ros::Time stamp(
|
||||
ros_time_beg + (data.img->timestamp - img_time_beg) * 0.00001f);
|
||||
|
||||
++right_count_;
|
||||
publishRight(data, right_count_, ros::Time::now());
|
||||
publishRight(data, right_count_, stamp);
|
||||
NODELET_DEBUG_STREAM(
|
||||
Stream::RIGHT << ", count: " << right_count_
|
||||
<< ", frame_id: " << data.img->frame_id
|
||||
|
@ -191,18 +214,22 @@ class ROSWrapperNodelet : public nodelet::Nodelet {
|
|||
});
|
||||
|
||||
device_->SetMotionCallback([this](const device::MotionData &data) {
|
||||
static std::uint32_t imu_time_beg = -1;
|
||||
static double imu_ros_time_beg;
|
||||
if (imu_time_beg == -1) {
|
||||
imu_time_beg = data.imu->timestamp;
|
||||
imu_ros_time_beg = ros::Time::now().toSec();
|
||||
}
|
||||
// 0.01 ms > 1 s
|
||||
static double ros_time_beg = ros::Time::now().toSec();
|
||||
static double imu_time_beg = data.imu->timestamp;
|
||||
ros::Time stamp(
|
||||
imu_ros_time_beg + (data.imu->timestamp - imu_time_beg) * 0.00001f);
|
||||
ros_time_beg + (data.imu->timestamp - imu_time_beg) * 0.00001f);
|
||||
|
||||
// static double imu_time_prev = -1;
|
||||
// NODELET_INFO_STREAM("ros_time_beg: " << FULL_PRECISION << ros_time_beg
|
||||
// << ", imu_time_elapsed: " << FULL_PRECISION
|
||||
// << ((data.imu->timestamp - imu_time_beg) * 0.00001f)
|
||||
// << ", imu_time_diff: " << FULL_PRECISION
|
||||
// << ((imu_time_prev < 0) ? 0
|
||||
// : (data.imu->timestamp - imu_time_prev) * 0.01f) << " ms");
|
||||
// imu_time_prev = data.imu->timestamp;
|
||||
|
||||
++imu_count_;
|
||||
publishIMU(data, imu_count_, stamp);
|
||||
publishImu(data, imu_count_, stamp);
|
||||
NODELET_DEBUG_STREAM(
|
||||
"Imu count: " << imu_count_ << ", frame_id: " << data.imu->frame_id
|
||||
<< ", timestamp: " << data.imu->timestamp
|
||||
|
@ -242,7 +269,7 @@ class ROSWrapperNodelet : public nodelet::Nodelet {
|
|||
cv_bridge::CvImage(header, enc::MONO8, img).toImageMsg());
|
||||
}
|
||||
|
||||
void publishIMU(
|
||||
void publishImu(
|
||||
const device::MotionData &data, std::uint32_t seq, ros::Time stamp) {
|
||||
sensor_msgs::Imu msg;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user