Что делать когда пишет в системе ROS при использов...

Создано: 13 апреля 2025 г.

Отвечено с использованием O1 от Chat01

Вопрос

Что делать когда пишет в системе ROS при использовании gazebo следующее: [gazebo-2] process has died [pid 54221, exit code 255, cmd /opt/ros/noetic/lib/gazebo_ros/gzserver -e ode worlds/empty.world name:=gazebo log:=/home/darya/.ros/log/e206b0d0-1863-11f0-9269-b398c73190a8/gazebo-2.log].
log file: /home/darya/.ros/log/e206b0d0-1863-11f0-9269-b398c73190a8/gazebo-2*.log

Мысль

Investigating Gazebo crash

I’m mapping out common Gazebo crash issues. Checking the log file for clues, considering environment variables, and ensuring proper setup are key actions to take.

Reasoned about Gazebo error in ROS for a few seconds

Ответ

Сообщение [gazebo-2] process has died ... exit code 255 ... указывает на то, что при запуске Gazebo что-то «падает» (crash). Чаще всего такие ошибки связаны либо с несовместимостями версий ROS/Gazebo/плагинов, либо с проблемами драйверов (например, видеокарты), либо с отсутствием нужных библиотек или некорректным путём в переменных среды. Вот несколько шагов, которые обычно помогают найти и устранить проблему:

  1. Проверить содержимое лога
    В сообщении написано, где хранится лог:

    /home/darya/.ros/log/e206b0d0-1863-11f0-9269-b398c73190a8/gazebo-2*.log
    

    Откройте файл (или несколько таких файлов, если их там несколько) в любом текстовом редакторе и посмотрите, что пишется в последних строках перед падением. Часто там указано, какой конкретно плагин или библиотека вызвали ошибку.

  2. Убедиться, что установлены все нужные пакеты

    • Проверьте, что у вас стоят совпадающие версии ROS (noetic) и соответствующие пакеты для Gazebo (например, ros-noetic-gazebo-ros, ros-noetic-gazebo-plugins и т. д.).
    • Убедитесь, что в вашем workspace (если он есть) не перекрываются версии тех же пакетов, которые устанавливаются через apt.
  3. Перезапустить, предварительно «почистив» окружение

    • Закройте все терминалы с ROS.
    • В новом терминале выполните source /opt/ros/noetic/setup.bash (или zsh, если у вас zsh) перед запуском любых команд ROS.
    • Если у вас есть собственный workspace, выполните в том же терминале source /путь_к_вашему_workspace/devel/setup.bash.
    • Попробуйте снова запустить Gazebo (через roslaunch gazebo_ros empty_world.launch или аналогичную команду).
  4. Проверить драйвер видеокарты (особенно если у вас nvidia)

    • Иногда Gazebo падает при проблемах с OpenGL или при использовании устаревших драйверов.
    • Попробуйте запустить gazebo напрямую (из терминала) без ROS и посмотреть, падает ли он так же.
    • Если падает и напрямую, попробуйте либо обновить драйвер, либо проверить, работает ли какая-либо другая 3D-графика (например, запустив glxgears).
  5. Посмотреть, нет ли конфликтов в переменных среды

    • Убедитесь, что GAZEBO_RESOURCE_PATH, GAZEBO_PLUGIN_PATH, LD_LIBRARY_PATH не содержат неправильных путей.
    • Проверить можно командой echo $GAZEBO_PLUGIN_PATH и т. п.
    • Если у вас много workspaces (или несколько версий ROS) на одной машине, иногда старые настройки мешают. В таком случае попробуйте запустить на «чистой» системе (допустим, в Docker-контейнере или на другой машине).
  6. Проверить версии Gazebo

    • ROS Noetic по умолчанию чаще всего работает с Gazebo 11. Убедитесь, что именно эта версия установлена.
    • Если вы используете другую версию, возможно, придётся вручную ставить соответствующие пакеты и убедиться в совместимости.
  7. Попробовать отключить плагины
    Если в вашем world-файле загружаются какие-то сторонние плагины (например, от робота, датчиков и т. д.), попробуйте запустить пустой мир empty.world (если вы не делали этого раньше). Если пустой мир запускается нормально, значит проблема в конкретном плагине. В логах это обычно явно видно.


Если вы после этих шагов всё ещё сталкиваетесь с ошибкой, то:

  1. Скопируйте последние строки из лога gazebo-2.log, где есть информация об ошибке.
  2. Опубликуйте точную версию ROS (rosversion -d) и Gazebo (gazebo --version).
  3. Уточните, работает ли «голая» команда gazebo без ROS (т. е. просто в терминале).

Таким образом можно точнее локализовать, из-за чего происходит падение.

Поделиться этим Q&A