Проблема с синхронизацией времени в message_filters с беседкой - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь использовать 'message_filters' для синхронизации двух тем, опубликованных в симуляторе беседки.Но это не работает нормально

Я также пробовал «приблизительное время» и «точное время», но тоже не работает.

Есть проблема, в которой я провел эксперимент:

Я открыл новый терминал и опубликовал темы вручную, например:

$ rostopic pub "/ topicA" pkgA / msgA "" -r 10 $ rostopic pub "/ topicB" pkgB / msgB "" -r10

Тогда my_node работал очень хорошо.Он просто не может синхронизировать темы из беседки.

#include "ros/ros.h"
#include <message_filters/subscriber.h>
#include <message_filters/time_synchronizer.h>
#include <message_filters/sync_policies/approximate_time.h>
#include <message_filters/sync_policies/exact_time.h>
#include "pkgA/msgA.h"
#include "pkgB/msgB.h"

void callback(const pkgA::msgA &a, const pkgB::msgB &b)
{
  // Solve all of perception here...
}

int main(int argc, char **argv)
{
  ros::init(argc, argv, "gazebo_relay_node");

  ros::NodeHandle nh;
  message_filters::Subscriber<pkgA::msgA> subA(nh, "topicA", 1);
  message_filters::Subscriber<pkgB::msgB> subB(nh, "topicB", 1);

  TimeSynchronizer<pkgA::msgA, pkgB::msgB> sync(subA, subB, 100);
  sync.registerCallback(boost::bind(&callback, _1, _2));

  ros::spin();

  return 0;
}

Я ожидаю, что смогу синхронизировать темы из беседки и получать данные из разных тем в функции обратного вызова.

...