Синхронизация тем ROS с разными частотами кадров - PullRequest
0 голосов
/ 07 ноября 2018

Скажем, у меня есть несколько тем ROS для подписки. Обычно я могу использовать message_filters :: sync_policies с точным временем или приблизительным временем. Но из-за имущества

Сообщения используются только один раз. Два набора не могут совместно использовать одно и то же сообщение. Некоторые сообщения могут быть отброшены.

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

В некоторых случаях одна из входящих тем, скажем, тема A имеет половину скорости, чем другие, скажем, B и C , и я не хочу отбросьте любую из тем B или C, чтобы уступить место A, есть ли готовый метод или алгоритм?

Например, я мог бы дублировать или интерполировать сообщения A. Или я мог бы создать несколько «поддельных» сообщений A (которые не требуют много ресурсов), чтобы я мог легко войти в функцию обратного вызова.

Если такого пакета нет, думаю, я мог бы попытаться написать такой, который мог бы способствовать некоторым особым случаям. Если я сделаю это самостоятельно, я должен уделить много времени, чтобы убедиться, что это работает. Что ты думаешь?

1 Ответ

0 голосов
/ 09 ноября 2018

Использование message_filters :: Cache может оказаться обходным решением для вас.

  • Кэшируйте вашу topic A с очередью, по крайней мере, 2, если бы все было гладко, но я бы всегда шел чуть выше.
  • В ваших (синхронизированных) ответных сообщениях topic B/C вы можете получить последнее сообщение из кэша topic A с помощью getLatestTime().

Следовательно, в вашем коде будет два (кэшированных topic A и синхронизированных topic B/C) подписчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...