Я работаю в roscpp и публикую данные одометрии на узле ros.За публикацию этих данных отвечают два класса.Из соображений безопасности иногда необходимо вызвать деструктор основного класса и опубликовать неподвижные данные (позу одометрии, в которой используются те же значения, чтобы дать понять, что робот стоит на месте) из другого класса.Я уже подтвердил, что вторичный класс отправляет правильную позу на правильную привязку.
Большую часть времени после переключения на вторичный класс я сталкиваюсь с неудачной проверкой из-за того, что время данных не превышаетвремя предыдущих данных.
Я получаю сообщение об ошибке:
F0402 08:12:25.187301 9044 map_by_time.h:43] Check failed: data.time > std::prev(trajectory.end())->first (636898039451158060 vs. 636898039451158060)
Как вы можете видеть, оно думает, что время данных равно предыдущему времени данных.Я подтвердил, что метка времени, публикуемая из моего кода, находится в области 1554227809034068
(в микросекундах с начала эпохи), что точно соответствует времени, когда я собирал данные.После переключения отметка времени остается верной, значение близко к и немного выше, чем предыдущее значение.
Я пытаюсь выяснить, почему это сообщение об ошибке имеет такое большое количество времени и почему оно не соответствует отправленной отметке времени.