Привет, мне хорошо известно, что UUV Simulator может моделировать несколько роботов (одна из его сильных сторон). Однако мне не удалось заставить деревья TF системы с несколькими роботами оставаться связанными с одним общим родительским кадром TF world
.
При запуске roslaunch uuv_gazebo_worlds ocean_waves.launch
публикуются только world
и world_ned
.
Затем, если я загружаю свой собственный auv4
URDF, я получаю подключенное дерево TF от world
до auv4/base_link
.
Пока все хорошо. Точно так же, если бы я перезапустил симулятор и снова запустил roslaunch uuv_gazebo_worlds ocean_waves.launch
, но на этот раз загружая свой автомобиль auv3
, я получаю подключенное дерево TF с world
на auv3/base_link
.
Пока все хорошо. Однако, если бы я попытался запустить roslaunch uuv_gazebo_worlds ocean_waves.launch
а затем загрузить оба urdf-файла одновременно с помощью отдельных файлов upload.launch (шаблон следует за upload_rexrov.launch), я получу отключенное дерево TF, при этом второе запущенное транспортное средство обычно отключено. из дерева TF. В этом случае сначала был загружен auv3, а затем auv4, в результате чего world
подключился к auv3/base_link
но отключился от auv4/base_link
.
То же самое происходит, если я изменяю порядок загрузки (сначала auv4, затем auv3), тогда world
подключается к auv4/base_link
но не auv3/base_link
.
Я, вероятно, делаю что-то не так, поскольку № 396 касается той же проблемы, но каким-то образом исходный плакат (OP) сумел решить проблему самостоятельно. Может ли кто-нибудь рассказать, как можно решить эту проблему, чтобы разрешить полностью подключенное дерево TF? В настоящее время я понимаю, что файл message_to_tf.launch
помогает преобразовать nav_msgs :: Odometry в преобразования TF ROS. Любая помощь приветствуется. Спасибо!
Привет @HashirZahir, у меня еще не было времени, но я постараюсь воспроизвести вашу ошибку и найти решение
@HashirZahir Меня тоже интересует эта же проблема. Я пытаюсь запустить 3 машины Eca_a9 одновременно таким же образом после запуска _roslaunch uuv_gazebo_worlds ocean_waves.launch_. Я могу заставить работать не более двух автомобилей Eca_a9 одновременно - Есть ли у вас какие-либо дальнейшие успехи в этом вопросе?
Не могли бы вы поделиться шагами по репликации, чтобы 2 машины Eca_a9 работали вместе (и их соответствующие деревья TF?) В моем случае я могу создать обе машины в симуляции, но дерево TF сломано / отключено, что затрудняет выполнение многоуровневые вычисления / алгоритмы
Удачи @pxalcantara ?
Извините, @HashirZahir , но пока нет, я был очень занят, но попробую проверить на этой неделе.
Не могли бы вы поделиться шагами по репликации, чтобы 2 машины Eca_a9 работали вместе (и их соответствующие деревья TF?) В моем случае я могу создать обе машины в симуляции, но дерево TF сломано / отключено, что затрудняет выполнение многоуровневые вычисления / алгоритмы
Извините за медленный ответ. У меня есть файл запуска для запуска 3 (или более) UUV Eca в разных пространствах имен с помощью upload.launch. Я использую другой файл запуска, чтобы запустить контроллер геометрического слежения для каждой из трех машин. Не зная почему, это обычно работает для 2/3 UUV, при этом 3-й не отвечает и сломан (как вы описали) ... Таким образом, я могу контролировать, отправлять путевые точки, отображать все темы для 2 UUV. Обратите внимание, что это не всегда последовательно, и иногда только один UUV будет появляться правильно. К сожалению, я больше не разбираюсь в этом вопросе.
Кому-нибудь удалось разобраться в этом вопросе? Возможности этого симулятора с несколькими роботами потрясающие, но я чувствую, что какой-то простой скрипт дерева TF вызывает сломанное дерево TF, хотя мне не удалось найти источник проблемы.
@HashirZahir
У меня была та же проблема, что и у @ Joel-Lindsay, с неработающими ссылками на eca_a9s. Я исправил это, отредактировав файл /eca_a9/eca_a9_description/robots/eca_a9_default.urdf.xacro.
inertial_reference_frame = "$ (аргумент inertial_reference_frame)"
был изменен на:
inertial_reference_frame = "мир"
Это исправило мои tf-деревья, которые также были отключены.
Привет, @ErinWetter, не могли бы вы поделиться изображением подключенного дерева TF?
Вот вершина tf-дерева с 4 рабочими eca_a9:
Спустившись только к двум машинам, мы видим базовую ссылку:
Я не понял, почему фрейм-ссылки между вещателями: ground_truth_to_uuv # и / uu # / robot_state_publisher не подключались до жесткого кодирования издателя состояния робота, чтобы он соответствовал, но я не знаком с процессом создания модели робота xacro / urdf.
Я провел несколько тестов на одном транспортном средстве, сравнивая порядок запуска узлов вещания на Eca и RexRov (у которого не было проблем со сломанным деревом tf, и я использовал для моделирования нескольких транспортных средств). Для одного Eca_a9 дерево tf будет разорвано на / base_link, если я запустил узел / ground_truth_to_uuv # в терминале, а не в файле "upload_eca_a9.launch". При этом то же самое проделываем с RexRov / base_link со всеми условиями запуска.