AGX下创建使用ROS docker后遇到rviz无法显示的问题,具体问题如下,猜想是与显卡驱动有关,但是如何解决尚没思路,大家有遇到过吗?
rviz::RenderSystem: error creating render window: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-i02lBV/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)
这个问题可能是由于 AGX 系统中的显卡驱动不支持 OGRE 库导致的。OGRE 是一个用于渲染 3D 图形的库,而 rviz 是 ROS 中一个可视化工具,其中使用了 OGRE 库。
一种解决办法是在 AGX 系统中安装支持 OGRE 的显卡驱动。另一种解决办法是在 Docker 中运行 ROS 时使用其他显卡驱动,例如 Nvidia 的显卡驱动。
可以尝试在Docker中运行ROS时使用nvidia-docker,这样就可以在Docker中使用Nvidia的显卡驱动,而不需要在AGX系统中安装驱动。
安装nvidia-docker的方法如下:
# 安装nvidia-docker
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
# 安装nvidia-docker2
sudo apt-get install -y nvidia-docker2
#重启docker服务
sudo systemctl restart docker
#在运行ROS的docker容器时使用nvidia-docker,而不是普通的docker。
sh
nvidia-docker run -it --rm -p 11311:11311 -v /path/to/your/catkin_ws:/catkin_ws ros:kinetic-ros-base
这样就可以在docker中使用Nvidia的显卡驱动了。
如果仍然无法解决问题,可以尝试更新OGRE库,或者更换其他可视化工具。
这个错误是由于在Docker容器中没有正确配置显卡驱动导致的。
在AGX上运行ROS Docker时,需要在运行docker run命令时通过--runtime nvidia参数来指定使用NVIDIA驱动,并通过--privileged参数来授权Docker容器访问AGX的显卡。
类似这样:
docker run --runtime=nvidia --privileged -it ros:melodic
另外,你可以在Dockerfile中安装nvidia-container-toolkit来支持在容器中使用NVIDIA驱动。
另外,你还需要检查Docker容器中的环境变量是否已经正确配置,如果没有配置,可以在Dockerfile中使用ENV命令来配置。
例如:
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
如果依然无法解决问题,建议你尝试重启AGX上的Docker服务或者AGX设备。
另外,你可以尝试在容器中安装x11docker来支持GUI应用在容器中运行。