Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render <user> Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2] it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby

i A libignition-rendering6-ogre2 - Ignition rendering3 classes and functions for robot apps - Development files
i A libignition-rendering6-ogre2-dev - Ignition rendering3 classes and functions for robot apps - Development files
I would assume that the referenced libraries had been built by this.

Are there any other experiences, ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386 [2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadl

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render <user> Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2] it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby

i A libignition-rendering6-ogre2 - Ignition rendering3 classes and functions for robot apps - Development files
i A libignition-rendering6-ogre2-dev - Ignition rendering3 classes and functions for robot apps - Development files
I would assume that the referenced libraries had been built by this.

Are there any other experiences, ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386 https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadl

https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadl

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render <user> <user>

Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2] [2], it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby

i A the packages libignition-rendering6-ogre2 - Ignition rendering3 classes and functions for robot apps - Development files
i A
libignition-rendering6-ogre2-dev - Ignition rendering3 classes and functions for robot apps - Development files
I would assume that the referenced libraries had been built by this.

Are there any other experiences, additional ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadl

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render <user>

Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2], it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev I would assume that the referenced libraries had been built by this.

Are there any other experiences, additional ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadlhttps://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render <user>user

Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2], it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev I would assume that the referenced libraries had been built by this.

Are there any other experiences, additional ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some deeper issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render user

Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2], it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev I would assume that the referenced libraries had been built by this.

Analyzing the Ogre2 logs, which are stored inside ~/.ignition/rendering, the EGL devices seem to be missing:

17:39:48: *-*-* OGRE Initialising
17:39:48: *-*-* Version 2.2.6 (Cerberus)
[...]
17:39:48: Loading library /usr/lib/x86_64-linux-gnu/OGRE-2.2/OGRE/RenderSystem_GL3Plus.so
17:39:48: Installing plugin: GL 3+ RenderSystem
17:39:48: OpenGL 3+ Rendering Subsystem created.
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in     GLXGLSupport::getGLDisplay at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/GLX/OgreGLXGLSupport.cpp (line 796)
17:39:48: GLX raised an exception. Won't be available. Is X11 running?
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in GLXGLSupport::getGLDisplay at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/GLX/OgreGLXGLSupport.cpp (line 796)
17:39:48: Found Num EGL Devices: 0
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): No EGL devices found! Update your GPU drivers and try again in EglPBufferSupport::EglPBufferSupport at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/EGL/PBuffer/OgreEglPBufferSupport.cpp (line 84)
17:39:48: EGL Headless raised an exception. Won't be available. Are drivers too old?

So it seems to be a problem with the EGL impl. of OGRE2. Are there any other experiences, additional ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

Hi,

in the absence of any other hints i tried to track the problem down to its roots, and found some deeper issues:

First, according to a recently merged tutorial [1] the following group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render user

Although the tutorial is aimed at the use within AWS, this could also apply to Docker.

Additionally, according to [2], it might necessary to build OGRE2 with the flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default way and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev I would assume that the referenced libraries had been built by this.

Analyzing the Ogre2 logs, which are stored inside ~/.ignition/rendering, the EGL devices seem to be missing:

17:39:48: *-*-* OGRE Initialising
17:39:48: *-*-* Version 2.2.6 (Cerberus)
[...]
17:39:48: Loading library /usr/lib/x86_64-linux-gnu/OGRE-2.2/OGRE/RenderSystem_GL3Plus.so
17:39:48: Installing plugin: GL 3+ RenderSystem
17:39:48: OpenGL 3+ Rendering Subsystem created.
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in     GLXGLSupport::getGLDisplay at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/GLX/OgreGLXGLSupport.cpp (line 796)
17:39:48: GLX raised an exception. Won't be available. Is X11 running?
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in GLXGLSupport::getGLDisplay at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/GLX/OgreGLXGLSupport.cpp (line 796)
[...]
17:39:48: Found Num EGL Devices: 0
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): No EGL devices found! Update your GPU drivers and try again in EglPBufferSupport::EglPBufferSupport at /var/lib/jenkins/workspace/ogre-2.2-debbuilder/repo/RenderSystems/GL3Plus/src/windowing/EGL/PBuffer/OgreEglPBufferSupport.cpp (line 84)
[...]
17:39:48: EGL Headless raised an exception. Won't be available. Are drivers too old?

So it seems to be a problem with the EGL impl. of OGRE2. Are there any other experiences, additional ideas or hints?

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

Hi,

in the absence of any other hints meantime i adopted my example (see above) to the solution, proposed by chapulina [0]. Therefore, the resulting test launch file only invokes a spawning mechanism for a robot model sdf, the IGN2ROS1 bridging stuff and a test fixture class - similar to the dolly one -, which loads a world description and defines the server to run headless via:

ignition::gazebo::ServerConfig config;
config.SetSdfFile(ignition::common::joinPaths(std::string(PROJECT_SOURCE_PATH), "worlds", "empty.sdf"));
config.SetHeadlessRendering(true);
ignition::gazebo::TestFixture fixture(config);

I tried to track the problem down to its roots, and found some deeper lying issues:

First, according to a recently merged tutorial [1] the following user to group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render user

Although the tutorial is aimed aims at the use within AWS, this could also apply to Docker.Docker. I have not yet been able to check this.

Additionally, according to [2], it might be necessary to build OGRE2 Ogre2 with the compile flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo the default dolly's way by mimicing the shell script [3] and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev are installed, I would assume that the referenced libraries those libs had been built by this.

Analyzing the Ogre2 logs, which are stored inside ~/.ignition/rendering, the EGL devices seem to be missing:

17:39:48: *-*-* OGRE Initialising
17:39:48: *-*-* Version 2.2.6 (Cerberus)
[...]
17:39:48: Loading library /usr/lib/x86_64-linux-gnu/OGRE-2.2/OGRE/RenderSystem_GL3Plus.so
17:39:48: Installing plugin: GL 3+ RenderSystem
17:39:48: OpenGL 3+ Rendering Subsystem created.
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in     GLXGLSupport::getGLDisplay at [...]
17:39:48: Found Num EGL Devices: 0
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): No EGL devices found! Update your GPU drivers and try again in EglPBufferSupport::EglPBufferSupport at [...]
17:39:48: EGL Headless raised an exception. Won't be available. Are drivers too old?

So Delivering 0 EGL devices, it seems to be a problem with the EGL impl. of OGRE2. Ogre2 inside Docker.

Are there any other experiences, additional ideas or hints?

[0] Run tests headless with EGL, https://github.com/chapulina/dolly/pull/41/files

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

[3] https://github.com/chapulina/dolly/blob/galactic/.github/workflows/build-and-test.sh

Hi,

in the meantime i adopted my example (see above) to the solution, proposed by chapulina [0]. Therefore, the resulting test launch file only invokes a spawning mechanism for a robot model sdf, the IGN2ROS1 bridging stuff and a test fixture class - similar to the dolly one -, which loads a world description and defines the server to run headless via:

ignition::gazebo::ServerConfig config;
config.SetSdfFile(ignition::common::joinPaths(std::string(PROJECT_SOURCE_PATH), "worlds", "empty.sdf"));
config.SetHeadlessRendering(true);
ignition::gazebo::TestFixture fixture(config);

I tried to track the problem down to its roots, and found some deeper lying issues:

First, according to a recently merged tutorial [1] the following user to group assignment might be necessary (for ubuntu 20.04):

sudo usermod -a -G render user

20.04). Although the respective tutorial is aims at the use within AWS, this could also apply to Docker. I have not yet been able to check this.

sudo usermod -a -G render user

Additionally, according to [2], it might be necessary to build Ogre2 with the compile flag

OGRE_GLSUPPORT_USE_EGL_HEADLESS

Since i installed ignition gazebo dolly's way by mimicing the shell script [3] and thereby the packages libignition-rendering6-ogre2 and libignition-rendering6-ogre2-dev are installed, I would assume that those libs had been built by this.

Analyzing the Ogre2 logs, which are stored inside ~/.ignition/rendering, the EGL devices seem to be missing:

17:39:48: *-*-* OGRE Initialising
17:39:48: *-*-* Version 2.2.6 (Cerberus)
[...]
17:39:48: Loading library /usr/lib/x86_64-linux-gnu/OGRE-2.2/OGRE/RenderSystem_GL3Plus.so
17:39:48: Installing plugin: GL 3+ RenderSystem
17:39:48: OpenGL 3+ Rendering Subsystem created.
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): Couldn`t open X display :1.0 in     GLXGLSupport::getGLDisplay at [...]
17:39:48: Found Num EGL Devices: 0
17:39:48: OGRE EXCEPTION(3:RenderingAPIException): No EGL devices found! Update your GPU drivers and try again in EglPBufferSupport::EglPBufferSupport at [...]
17:39:48: EGL Headless raised an exception. Won't be available. Are drivers too old?

Delivering 0 EGL devices, it seems to be a problem with the EGL impl. of Ogre2 inside Docker.

Are there any other experiences, additional ideas or hints?

References:

[0] Run tests headless with EGL, https://github.com/chapulina/dolly/pull/41/files

[1] https://github.com/ignitionrobotics/ign-gazebo/pull/1386

[2] https://github.com/OGRECave/ogre-next/tree/master/Samples/2.0/Tutorials/Tutorial_EglHeadless

[3] https://github.com/chapulina/dolly/blob/galactic/.github/workflows/build-and-test.sh