Docker Ros melodic Error记录

一、镜像制作

ros docker 硬件加速 官方文档
ros melodict镜像 制作

sudo docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE \
 --device=/dev/dri --group-add video \
 -v /home/xxx/Share:/mnt/Share \
 --privileged=true -it --network host -d --ipc=host \
 --name mviz rocker:latest # 映射路径改成自己的

二、问题记录

1、Unable to create the rendering window after 100 tries

在这里插入图片描述
原因:容器中默认使用intel的核显,启动rviz时,openGL找不到渲染的显卡。

解决方案1 打开核显独显混合使用模式

戴尔笔记本打开方法
开机按F2,进入BIOS Setup
点 Dispaly
右边拖到最下面
Hybird Graphics / Advanced Optimus
选择 ON
在这里插入图片描述

APPLY CHANGES
exit

微星笔记本打开核显独显混合使用模式方法
开机按F2,进入BIOS
按键 左Alt+F2+右Ctrl+右Shift 同时按,把隐藏设置激活才能看到
点MSI VGA MODE 选择 MS-Hybird MODE
保存退出
在这里插入图片描述
验证 打开 Nvidia x server settings
选择 NVIDIA On-Demand
(Performance 只使用NVIDIA的显卡)
(NVIDIA On-Demand 混合模式)
(Power saving Mode 只使用Intel的核显)
在这里插入图片描述

解决方案2 在容器中使用NVIDIA显卡渲染rviz
  1. 安装NVIDIA驱动
    打开附件驱动(Additional Drivers),选一个NVIDIA的驱动
    在这里插入图片描述

或者

sudo ubuntu-drivers autoinstall
  1. 安装 NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2

注意:melodic及以后的版本无需安装opengl的依赖,之前的版本需要,详细看官方文档

sudo systemctl restart docker

验证安装是否成功

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
| N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

另一个在容器中使用NVIDIA显卡的方法
注: 安装NVIDIA Container Toolkit其实就是安装nvidia-docker2,且已经包括了nvidia-container-runtime。
3. docker run 改成

sudo docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --device=/dev/dri --group-add video \
 -v /home/xxx/Share:/mnt/Share \
 --privileged=true -it --network host -d --ipc=host --gpus all\
 --name mviz_nv rocker:latest
  1. 到容器内验证是否能打开rviz
解决方案3

换驱动,选最后一个,解决。(慎重,选了之后可能不能使用cuda)

参考这个没解决
换驱动,选最后一个,解决。
在这里插入图片描述

2、Could not connect to any X display.

在宿主机终端执行:

xhost +
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值