我正在尝试在 Google Colaboratory 上运行gym-gazebo。
在Colab上运行gazebo服务器(没有gui的gazebo)有问题。
显示警告:
Unable to create X window. Rendering will be disabled
但我想我修复了它。Unable to open audio device
,Conversion of sensor type[depth] not supported
为了在无头模式下运行 Gazebo,您需要运行
gserver
可执行文件,而不是 gazebo
。不确定gym-gazebo 工具包使用哪一个。
为了仍然在 Gazebo 服务器中进行渲染(例如相机视图),您需要使用 Xvfb(X 虚拟帧缓冲区)。它是一个 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
告诉 Gazebo 使用的 X Window 客户端使用我们创建的虚拟显示器,而不是默认的 :0
。
在colab上完整安装Gazebo并以具有渲染功能的无头服务器模式运行它可以通过以下方式实现:
!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 作为头运行完整的 Gazebo,并使用此处解释的 ngrok.io 作为完全工作的笔记本链接到它。 https://colab.research.google.com/drive/1A-miW8cTRKzs7B0m1m4enfiFySzBhsgN
您需要使用可以在 ngrok.com 创建的身份验证令牌对 ngrok 进行身份验证才能进行连接,因为它是午餐作为背景并且不会打印到单元格
!./ngrok authtoken <token>