ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Docker Environment for Local and Remote Development

Hi all! I’ve developed a docker environment that does x11 pass-through built off Nvidia’s container toolkit! This is pretty powerful as it allows both local rendering and remote rendering (via ssh) at pretty decent performance. The only downside is that it requires an nvidia graphics card :frowning:

I find it particularly useful for development on the go as you can just ssh into your big workstation and pick up where you left off!

If you’re interested in checking out the project, find it here: GitHub - gbalke/docker-ros2-opengl: Dockerfile and for enabling OpenGL applications to run locally in an environment with the latest drake/ros2 builds.

At the moment, the ros2 branch targets rolling but I can easily add branches for foxy and galactic if people are interested!


Any chance of getting a rocker plugin for this?

I’m curious about this but I haven’t used Rocker before… Can you point me to some relevant materials?

Rocker itself is here. But the best resource for plugins is the Off your rocker repository, because you can just copy how the plugins in that collection are made.

From what I can see, I believe rocker is does most of what I’m trying to achieve save for the x11 passthrough. It appears that this may be pulled off with a simple plugin to pass these files into the container’s file system. I don’t presently have a remote machine to fiddle with so it may take some time to create a proper demo. I’m worried that if I run it locally, it will render in both the scenario where it is being passed through ssh and the case where it is not (technically this should be verifiable via the DISPLAY env variable but :man_shrugging:).

Another approach for remote operations we’ve been using with rocker is with novnc to provide use a purely virtual desktop through the browser: GitHub - tfoote/novnc-rocker

You can run openGL accelerated content remotely such as rviz and gazebo with NVIDIA hardware or not and then access it via any computer with a browser.