在 Docker 中运行 ROS Desktop

Dockerfile 下载: https://github.com/determ1ne/ros-dekstop-nvidia-docker

想配置一个 ros 的环境确实挺麻烦, ros 的开发人员也许想到了这一点,所以在官方 wiki 上就有写了一半弃坑的教程 Using GUI’s with Docker 和写完的的教程 Using Hardware Acceleration with Docker

仿照着做的时候,总提示 glvnd 的问题,于是干脆拉了一个 nvidia 的 glvnd 镜像作为 base ,之后也用 nvidia-docker 运行容器,说不定之后改成包含 CUDA 的镜像也很简单。基本方法和 wiki 上的 The isolated way 大致相同,只不过加了一些 nvidia 相关的东西。

至于 gazebo7 ,首先需要关闭 Qt 的 MIT-SHM 才能正常运行: QT_X11_NO_MITSHM=1 gazebo 。不过由于 gazebo7 还会联网下载模型,这段时间窗口会保持黑屏,我以为是 bug 。。不过 gazebo9 是完全可以正常使用的,就没有再折腾了。

还有一个比较有意思的事就是如何在 docker 不同阶段构建时保持不同的网络环境。我最后使用了 V2Ray 控制路由,对国内和国外不同服务器的连接使用不同的网络线路,获得最快的构建速度。