Комментарий о том, что вам нужно опубликовать преобразование другим способом, неверен.
Следует использовать только один из них:
Они будут бороться друг с другом и вызывать постоянное воспроизводство, так что в любой момент времени побеждает последний полученный. Вероятно, первая протестированная версия вызвала отключение дерева из-за непреднамеренного повторного родительства, и добавление второго вызова замаскировало его.
И пока смотрю на этот код. Чище и эффективнее публиковать вектор статических преобразований, чтобы воспользоваться преимуществами фиксации, а не публиковать последовательность отдельных преобразований.
Мы уже поднимали это здесь раньше: https://github.com/mavlink/mavros/pull/1252#issuecomment -503084522
@ TSC21 FYI
@jkflying @baumanta Можете ли вы попробовать проверить, существует ли проблема с отметкой времени при удалении дублирующего издателя?
@tfoote, вы были правы в своем комментарии к выпуску №388 . Кажется, что цикл tf в mavros всегда отвечает за получение tf в ros :: Time :: now ().
Я поместил прослушиватель tf в код избегания, который извлекал преобразования по метке времени последнего облака точек и в ros :: Time :: now () и распечатал оба преобразования. По мере того, как дрон двигался, я ожидал, что трансформации будут немного другими. Использование Mavros 0.29.2. оба преобразования всегда были идентичны, даже несмотря на то, что отметки времени не были. При использовании Mavros PR # 1252 преобразования были другими.
Хорошо, я подозреваю, что код плагина odom
не работал из-за неясного ограничения заблокированных тем - вы не можете публиковать разные сообщения в заблокированной теме из одного и того же процесса.
См. Https://github.com/ros/ros_comm/issues/146 и https://answers.ros.org/question/261815/how-can-i-access-all-static-tf2-transforms/.
Обходной путь для этого - создать вектор всех преобразований и опубликовать их за один раз (перейдите к специализированной функции TF2 http://docs.ros.org/melodic/api/tf2_ros/html/c++/classtf2__ros_1_1StaticTransformBroadcaster.html#a83d0664cb0cc85689d )
Исправлено https://github.com/mavlink/mavros/pull/1300.