ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
![]() | 1 | initial version |
It's not helping my issue (https://answers.ros.org/question/399434/rospy-timesynchronizer-with-rosbag-play-bag-clock-loop-r-01-use_sim_timetrue/) but it looks like calling setReset on the Synchronizer is what you want: https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L309-L313
void setReset(const bool reset)
{
// Set this true to reset queue on ROS time jumped back
enable_reset_ = reset;
}
https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L216-L231
if (ros::Time::isSimTime() && enable_reset_)
{
if (now < last_stamps_[i])
{
++num_reset_deques_;
if (num_reset_deques_ == 1)
{
ROS_WARN("Detected jump back in time. Clearing message filter queues");
}
clearDeque<i>();
if (num_reset_deques_ >= RealTypeCount::value)
{
num_reset_deques_ = 0;
}
}
}
![]() | 2 | No.2 Revision |
It's not helping my issue (https://answers.ros.org/question/399434/rospy-timesynchronizer-with-rosbag-play-bag-clock-loop-r-01-use_sim_timetrue/) but it looks like calling setReset setReset(true)
on the Synchronizer is what you want:
https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L309-L313
void setReset(const bool reset)
{
// Set this true to reset queue on ROS time jumped back
enable_reset_ = reset;
}
https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L216-L231
if (ros::Time::isSimTime() && enable_reset_)
{
if (now < last_stamps_[i])
{
++num_reset_deques_;
if (num_reset_deques_ == 1)
{
ROS_WARN("Detected jump back in time. Clearing message filter queues");
}
clearDeque<i>();
if (num_reset_deques_ >= RealTypeCount::value)
{
num_reset_deques_ = 0;
}
}
}
![]() | 3 | No.3 Revision |
It's not helping my issue (https://answers.ros.org/question/399434/rospy-timesynchronizer-with-rosbag-play-bag-clock-loop-r-01-use_sim_timetrue/) but it It looks like calling setReset(true)
on the Synchronizer is what you want:
https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L309-L313
void setReset(const bool reset)
{
// Set this true to reset queue on ROS time jumped back
enable_reset_ = reset;
}
https://github.com/ros/ros_comm/blob/noetic-devel/utilities/message_filters/include/message_filters/sync_policies/approximate_time.h#L216-L231
if (ros::Time::isSimTime() && enable_reset_)
{
if (now < last_stamps_[i])
{
++num_reset_deques_;
if (num_reset_deques_ == 1)
{
ROS_WARN("Detected jump back in time. Clearing message filter queues");
}
clearDeque<i>();
if (num_reset_deques_ >= RealTypeCount::value)
{
num_reset_deques_ = 0;
}
}
}