Чтобы запустить беседку в режиме без головы, вам нужно запустить gserver
исполняемый файл вместо gazebo
.Не уверен, какой из них используется инструментарием gym-gazebo.
Чтобы по-прежнему выполнять рендеринг на сервере gazebo (например, с камеры), вам необходимо использовать Xvfb (X Virtual Frame Buffer).Это X-сервер, который может работать на машинах без аппаратного дисплея и без физических устройств ввода.Он эмулирует тупой кадровый буфер с использованием виртуальной памяти.
Для вашей конкретной записной книжки colab я изменил последнюю ячейку, добавив
get_ipython().system_raw('Xvfb :1 -screen 0 1600x1200x16 &')
, чтобы создать виртуальный дисплей, и добавил DISPLAY =: 1.0 кначало последней строки, поэтому выглядело это следующим образом
DISPLAY=:1.0 python gym-gazebo/examples/turtlebot/circuit2c_turtlebot_camera_dqn.py
DISPLAY=:1.0
сообщает клиенту X Window, используемому gazebo для использования виртуального дисплея, который мы создали вместо одного по умолчанию :0
.
Полная установка Gazebo на colab и запуск его в режиме безголового сервера с возможностью рендеринга может быть достигнут следующим образом:
!curl -sSL http://get.gazebosim.org | sh # Install gazebo
!apt-get install -y xvfb # Install X Virtual Frame Buffer
get_ipython().system_raw('Xvfb :1 -screen 0 1600x1200x16 &') # create virtual display with size 1600x1200 and 16 bit color. Color can be changed to 24 or 8
!source /usr/share/gazebo-9/setup.sh && DISPLAY=:1.0 gzserver --verbose # Run gazebo and tell X client to use our virtual DISPLAY :1.0
Существует также способ запустить полную беседку в симуляторе с gzweb в качестве головыи ссылка на него с помощью ngrok.io объясняется здесь как полностью рабочий блокнот.https://colab.research.google.com/drive/1A-miW8cTRKzs7B0m1m4enfiFySzBhsgN
Вам необходимо пройти аутентификацию в ngrok, используя свой токен авторизации, который можно создать на ngrok.com для подключения, потому что это ланч в качестве фона и он не печатается в ячейку
!./ngrok authtoken <token>