ошибки связи устройств ros2 2

Вопрос или проблема

ㅁУстройство1

  • Raspberry5, ubuntu24.04, установка ROS2 jazzy ver

ㅁУстройство2

  • MiniPC, ubuntu22.04, установка ROS2 Humble ver

====================== следующий шаг

ㅁУстройство2

Создание издателя темы

  • команда оболочки: ros2 topic pub /test std_msgs/msg/String “data: 1”

ㅁУстройство1

Эхо темы устройства2

  • команда оболочки: ros2 topic echo /test

Следующий журнал выводится на устройстве2

>>> [rcutils|error_handling.c:108] rcutils_set_error_state()
Это состояние ошибки перезаписывается:

  'Исключение Fast CDR при десериализации сообщения типа rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_., в ./src/type_support_common.cpp:118'

с этим новым сообщением об ошибке:

  ''Исключение 'Плохое выделение' при десериализации сообщения типа rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_., в ./src/type_support_common.cpp:123'

rcutils_reset_error() следует вызывать после обработки ошибок, чтобы избежать этого.
<<<

Я не знаю, почему этот журнал выводится. Это потому что версии разные?

Ответ или решение

Ошибки связи между устройствами ROS2

При работе с системой ROS2 (Robot Operating System 2), особенно при использовании различных версий на разных устройствах, могут возникнуть ошибки связи. В вашем случае вы используете два устройства: Raspberry Pi с установленной версией ROS2 Jazzy и MiniPC с версией ROS2 Humble. Это может стать источником ряда проблем, включая ошибки сериализации и десериализации сообщений, квотируемые в логе.

Причины ошибок

  1. Несоответствие версий ROS2: Рекомендуется использовать одну и ту же версию ROS2 для всех устройств в сети, чтобы избежать проблем совместимости. Jazzy и Humble могут иметь различные реализации и структуры данных, приводящие к несовместимости при обмене сообщениями.

  2. Проблемы с сериализацией/десериализацией: Сообщение, которое отправляется с помощью команды ros2 topic pub, может не соответствовать ожиданиям системы на стороне устройства, получающего сообщение. Ошибка Bad alloc указывает на то, что возникла проблема с выделением памяти при попытке десериализовать сообщение с типом ParticipantEntitiesInfo.

  3. Сеть и конфигурация DDS: ROS2 использует DDS (Data Distribution Service) как основу для обмена сообщениями, и любые проблемы в конфигурации сети (например, настройки файрвола, недоступность сервера DDS) могут привести к ошибкам связи.

Рекомендации по устранению ошибок

  1. Унификация версий: Убедитесь, что оба устройства используют одинаковую версию ROS2. Проверьте документацию по миграции и обновлению, если вам нужно перейти с Jazzy на Humble или наоборот.

  2. Отладка сети:

    • Убедитесь, что устройства находятся в одной сети и могут видеть друг друга (пинг).
    • Проверьте настройки файрвола на обоих устройствах. Убедитесь, что порты, используемые ROS2 и DDS, открыты.
  3. Проверка конфигурации DDS:

    • Ознакомьтесь с настройками DDS. Убедитесь, что параметры QoS (Quality of Service) соответствуют ожиданиям. Неправильные настройки могут привести к потере пакетов.
  4. Тестирование обмена сообщениями:

    • Попробуйте отправить сообщения с использованием различных типов данных. Например, используйте стандартные типы и проверьте, появятся ли ошибки.
    • Попробуйте запустить несколько простых примеров из документации ROS2, чтобы понять, возникает ли проблема в вашей конфигурации или в самой системе.

Завершение

Если все вышеперечисленное не помогло, обратитесь к сообществу ROS2 для получения дополнительной поддержки. Поделитесь подробной информацией о ваших настройках и проблемах; возможно, другие пользователи столкнулись с аналогичными трудностями. Также рассматривайте возможность обновления систем до более стабильных версий, если это является приемлемым вариантом. Успехов в отладке и налаживании взаимодействия между вашими устройствами!

Оцените материал
Добавить комментарий

Капча загружается...