wkentaro
10/9/2015 - 5:00 PM

Time jumper for gazebo with rosbag

Time jumper for gazebo with rosbag

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy
from tf2_msgs.msg import TFMessage
from jsk_recognition_msgs.msg import BoundingBoxArray
import message_filters


def cb_1(msg):
    global first_stamp, now
    for i, tf in enumerate(msg.transforms):
        if first_stamp is None:
            first_stamp = tf.header.stamp
        tf.header.stamp -= first_stamp
        tf.header.stamp += now
    pub_1.publish(msg)


def cb_2(msg):
    global first_stamp, now
    if first_stamp is None:
        first_stamp = msg.header.stamp
    msg.header.stamp -= first_stamp
    msg.header.stamp += now
    for i, box in enumerate(msg.boxes):
        box.header.stamp -= first_stamp
        box.header.stamp += now
    pub_2.publish(msg)


rospy.init_node('hoge')
first_stamp = None

rospy.sleep(1)
now = rospy.Time.now()


pub_1 = rospy.Publisher('/tf', TFMessage, queue_size=1)
pub_2 = rospy.Publisher('/in_bin_atof/bin_clipper/output/box_array', BoundingBoxArray, queue_size=1)

sub_1 = rospy.Subscriber('/tf_old', TFMessage, cb_1)
sub_2 = rospy.Subscriber('/in_bin_atof/bin_clipper/output/box_array_old', BoundingBoxArray, cb_2)

rospy.spin()