在Ubuntu上使用Docker运行Rviz和Gazebo
首先
为了方便那些想要尝试创建各种不同的ROS环境但又觉得环境配置麻烦的人,我将介绍使用Docker来构建ROS环境的方法。相比直接在主机操作系统上配置环境,使用Docker可以省去很多配置环境的繁琐步骤,而且还可以创建多个环境,具有很多优点。这种方法不需要太多有关Docker的知识,这也是它的优点之一。
假设为前提的个人电脑环境
满足下列两个条件
-
Ubuntu が入っている
NVIDIA のグラフィックボード、もしくは Intel などの内蔵 GPU 1 を搭載している
能够做到的事情
使用Docker启动的Ubuntu中启动ROS,显示Rviz和Gazebo的GUI。
这次要做什么
Docker のインストール
NVIDIA 関連のあれこれ
Nouveau の無効化
NVIDIA ドライバのインストール
NVIDIA Container Toolkit のインストール
X サーバへのアクセス設定
Docker イメージの取得
Docker ファイルのダウンロード
Docker ファイルのビルド
動作確認
安装Docker
NVIDIA 関連のあれこれ
Nouveau の無効化
NVIDIA ドライバのインストール
NVIDIA Container Toolkit のインストール
X サーバへのアクセス設定
Docker イメージの取得
Docker ファイルのダウンロード
Docker ファイルのビルド
動作確認
根据”在Ubuntu上安装Docker Engine – 使用Apt存储库进行安装”的说明,请打开终端并执行以下命令。
$ sudo apt update
$ sudo apt -y install ca-certificates curl gnupg
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
接下来,我们将对Docker命令进行更改,使其可以在非管理员权限(无需sudo)下执行。请执行以下命令。
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
请确认操作步骤已经完成。请先关闭终端,再重新打开后执行以下命令。
$ docker --rm run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
英伟达(NVIDIA)驱动程序及相关事项
如果您的 PC 上安装了 NVIDIA 显卡,才需要执行此步骤。如果您没有安装显卡,而是使用内置的 GPU1,那么请跳过此步骤,继续进行“X 服务器访问设置”的步骤。
NVIDIA グラフィックボードを搭載している場合
まず既に NVIDIA ドライバをインストール済みかどうかを確認します。ターミナルを開き以下のコマンドを実行してください。
$ dpkg -l | grep nvidia
何も表示されなかった場合はそのまま以下の手順に進みます。何かしらの NVIDIA ドライバの情報が表示された場合は、以下の手順をスキップして “Docker のインストール” の手順に進んでください。
その後、以下の手順を行います。
Nouveau の無効化
NVIDIA ドライバのインストール
新的无效化
NVIDIA グラフィックボードを搭載している場合
まず Nouveau モジュールが動いていることを確認します。ターミナルを開き以下のコマンドを実行してください。
$ lsmod | grep nouveau
nouveau 1403757 0
video 24400 1 nouveau
mxm_wmi 13021 1 nouveau
i2c_algo_bit 13413 1 nouveau
drm_kms_helper 125008 1 nouveau
ttm 93441 1 nouveau
drm 349210 3 ttm,drm_kms_helper,nouveau
i2c_core 40582 5
drm,i2c_i801,drm_kms_helper,i2c_algo_bit,nouveau
wmi 19070 2 mxm_wmi,nouveau
何かしらの情報が表示され Nouveau モジュールが動いていることを確認した後、 /etc/modprobe.d ディレクトリに移動します。TODOd: もしなにも表示されない場合。以下のコマンドを実行してください。
$ cd /etc/modprobe.d
次に Nouveau モジュールの設定を記述する blacklist-nouveau.conf ファイルを作成します。以下のコマンドを実行し、
$ sudo nano blacklist-nouveau.conf
表示される blacklist-nouveau.conf ファイルの内容に以下を書き記し、
blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
Control + S により blacklist-nouveau.conf ファイルを保存した後、Control + X で blacklist-nouveau.conf ファイルを閉じてください。
最後に、initramfs イメージを更新します 2。以下のコマンドを実行してください。
$ sudo update-initramfs -u
NVIDIA 驅動程式的安裝
警告
如果以下步骤失败,可能会导致驱动程序冲突、屏幕无法显示、无法登录等故障。请务必谨慎操作。
NVIDIA グラフィックボードを搭載している場合
まず Ubuntu のグラフィックスドライバを更新します。ターミナルを開き以下のコマンドを実行してください。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
次に PC に推奨されるドライバを調べます。以下のコマンドを実行してください。
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002204sv000019DAsd00001613bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-535 – third-party non-free
driver : nvidia-driver-525 – third-party non-free
driver : nvidia-driver-525-server – distro non-free
driver : nvidia-driver-470-server – distro non-free
driver : nvidia-driver-470 – distro non-free
driver : nvidia-driver-535-server – distro non-free
driver : nvidia-driver-535-server-open – distro non-free recommended
driver : nvidia-driver-525-open – distro non-free
driver : nvidia-driver-535-open – third-party non-free
driver : xserver-xorg-video-nouveau – distro free builtin
表示されたリストの中で recommended と書かれている NVIDIA ドライバをインストールします。例えば nvidia-driver- であった場合、以下のようにコマンドを実行してください。
$ sudo apt install nvidia-driver-
再起動します。以下のコマンドを実行してください。
$ sudo reboot
ログイン後、まずインストールされた NVIDIA 関連のパッケージを確認します。以下のコマンドを実行してください。
$ dpkg -l | grep nvidia
ii libnvidia-cfg1-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-common-525 525.85.12-0ubuntu1 all Shared files used by the NVIDIA libraries
ii libnvidia-compute-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA libcompute package
ii libnvidia-compute-525:i386 525.85.12-0ubuntu1 i386 NVIDIA libcompute package
ii libnvidia-container-tools 1.13.5-1 amd64 NVIDIA container runtime library (command-line tools)
ii libnvidia-container1:amd64 1.13.5-1 amd64 NVIDIA container runtime library
ii libnvidia-decode-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA Video Decoding runtime libraries
ii libnvidia-decode-525:i386 525.85.12-0ubuntu1 i386 NVIDIA Video Decoding runtime libraries
ii libnvidia-encode-525:amd64 525.85.12-0ubuntu1 amd64 NVENC Video Encoding runtime library
ii libnvidia-encode-525:i386 525.85.12-0ubuntu1 i386 NVENC Video Encoding runtime library
ii libnvidia-extra-525:amd64 525.85.12-0ubuntu1 amd64 Extra libraries for the NVIDIA driver
ii libnvidia-fbc1-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-fbc1-525:i386 525.85.12-0ubuntu1 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-gl-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii libnvidia-gl-525:i386 525.85.12-0ubuntu1 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii nvidia-compute-utils-525 525.85.12-0ubuntu1 amd64 NVIDIA compute utilities
ii nvidia-container-toolkit 1.13.5-1 amd64 NVIDIA Container toolkit
ii nvidia-container-toolkit-base 1.13.5-1 amd64 NVIDIA Container Toolkit Base
ii nvidia-dkms-525 525.85.12-0ubuntu1 amd64 NVIDIA DKMS package
ii nvidia-driver-525 525.85.12-0ubuntu1 amd64 NVIDIA driver metapackage
ii nvidia-kernel-common-525 525.85.12-0ubuntu1 amd64 Shared files used with the kernel module
ii nvidia-kernel-source-525 525.85.12-0ubuntu1 amd64 NVIDIA kernel source package
ii nvidia-modprobe 525.85.12-0ubuntu1 amd64 Load the NVIDIA kernel driver and create device files
ii nvidia-prime 0.8.16~0.20.04.2 all Tools to enable NVIDIA’s Prime
ii nvidia-settings 525.85.12-0ubuntu1 amd64 Tool for configuring the NVIDIA graphics driver
ii nvidia-utils-525 525.85.12-0ubuntu1 amd64 NVIDIA driver support binaries
ii screen-resolution-extra 0.18build1 all Extension for the nvidia-settings control panel
ii xserver-xorg-video-nvidia-525 525.85.12-0ubuntu1 amd64 NVIDIA binary Xorg driver
次に NVIDIA モジュールの状態を確認します。以下のコマンドを実行してください。
$ lsmod | grep nvidia
nvidia_uvm 1388544 0
nvidia_drm 69632 14
nvidia_modeset 1216512 20 nvidia_drm
nvidia 56336384 1168 nvidia_uvm,nvidia_modeset
drm_kms_helper 307200 1 nvidia_drm
drm 618496 18 drm_kms_helper,nvidia,nvidia_drm
最後に GPU の状態や利用率を確認します。以下のコマンドを実行してください。
$ nvidia-smi
Sun Oct 15 17:08:11 2023
+—————————————————————————–+
| NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.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 NVIDIA GeForce … On | 00000000:01:00.0 On | N/A |
| 0% 57C P8 25W / 350W | 473MiB / 24576MiB | 19% Default |
| | | N/A |
+——————————-+———————-+———————-+
+—————————————————————————–+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1140 G /usr/lib/xorg/Xorg 35MiB |
| 0 N/A N/A 1880 G /usr/lib/xorg/Xorg 252MiB |
| 0 N/A N/A 2004 G /usr/bin/gnome-shell 26MiB |
| 0 N/A N/A 2458 G …veSuggestionsOnlyOnDemand 48MiB |
| 0 N/A N/A 54442 G /usr/bin/anydesk 20MiB |
| 0 N/A N/A 624141 G …937440421976888396,262144 10MiB |
| 0 N/A N/A 728274 G …/ros/noetic/lib/rviz/rviz 8MiB |
| 0 N/A N/A 2923469 G …RendererForSitePerProcess 45MiB |
+—————————————————————————–+
以上の手順は “【Ubuntu + NVIDIA】Ubuntu に NVIDIA ドライバーをインストール”、”ubuntuにCUDA、nvidiaドライバをインストールするメモ” を参考にしました。
安装 NVIDIA 容器工具包
NVIDIA グラフィックボードを搭載している場合
まず必要なリポジトリと GPG 鍵を設定します。ターミナルを開き以下のコマンドを実行してください。
$ 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
NVIDIA Container Toolkit をインストールします。以下のコマンドを実行してください。
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
次に Docker デーモンが NVIDIA Container Runtime を認識するよう設定をします。以下のコマンドを実行してください。
$ sudo nvidia-ctk runtime configure –runtime=docker
Docker デーモンを再起動します。以下のコマンドを実行してください。
$ sudo systemctl restart docker
最後に NVIDIA Container Toolkit が正しくインストールされたか確認します。以下のコマンドを実行してください。
$ docker run –rm –gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000
以上の手順は “UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール”、”Installing the NVIDIA Container Toolkit” を参考にしました。
X 服务器的访问设置
我們將設定允許連接到 X 伺服器,這樣一來,X Window System (X11) 的圖形使用者介面就可以運作,並且能夠使用即將建立的 Docker 容器。請打開終端機並執行以下指令。
$ xhost local:user
请在从以下获取的Docker镜像中创建和使用容器之前,每次都执行以下步骤。
获取Docker镜像
执行以下步骤。
Docker ファイルの複製
Docker ファイルのビルド
复制Docker文件 Docker
请将GitHub存储库复制到任意目录中,例如复制到主目录(~/)中。请打开终端并执行以下命令。
$ cd
$ git clone https://github.com/turlucode/ros-docker-gui.git
构建Docker文件
首先,切換到存放 Docker 文件的目錄中。例如,切換到(~/ros-docker-gui)。打開終端並執行以下命令。
$ cd ~/ros-docker-gui
然后进行构建。请执行以下命令。例如,将要使用的 ROS 版本设为。
PC にグラフィックボードを搭載している場合
$ make ros_
PC にグラフィックボードを搭載しておらず内蔵 GPU 1 を搭載している場合
$ make cpu_ros_
确认动作
请创建一个容器并登录。打开终端并执行以下命令。
NVIDIA グラフィックボードを搭載している場合
$ docker run -it –runtime=nvidia –privileged –net=host –ipc=host -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/$(id -un)/.Xauthority -e XAUTHORITY=/home/$(id -un)/.Xauthority -e ROS_IP=127.0.0.1 turlucode/ros-:
グラフィックボードを搭載しておらず内蔵 GPU 1 を搭載している場合
$ docker run -it –privileged –net=host –ipc=host –device=/dev/dri:/dev/dri -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/$(id -un)/.Xauthority -e XAUTHORITY=/home/$(id -un)/.Xauthority -e ROS_IP=127.0.0.1 turlucode/ros-:cpu
如果执行上述命令,则会打开 X Window System 的终端 (Terminator 3)。
请在Terminator上执行以下命令来启动roscore。
$ roscore
请在Terminator上执行以下命令以启动Rviz。
$ rviz
请在Terminator上按Ctrl + C来退出Rviz。
请在终端中输入以下命令来启动 Gazebo。
$ gazebo
请在终止器上按下 Ctrl + C 来结束 Gazebo。
请最后注销并停止容器。请关闭终端。
最后一句
在我们刚才介绍的容器中,如果需要进一步编写代码,可以方便地使用已安装了VSCode的Docker镜像,或者使用VSCode的扩展功能(Remote Explorer)。
引用资料
https://github.com/turlucode/ros-docker-gui
内蔵GPUとは?外部GPUとの違いや今後の動向について解説!
【Ubuntu + NVIDIA】Ubuntu に NVIDIA ドライバーをインストール
ubuntuにCUDA、nvidiaドライバをインストールするメモ
Install Docker Engine on Ubuntu – Install using the Apt repository
Linux post-installation steps for Docker Engine – Manage Docker as a non-root user
UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール
Installing the NVIDIA Container Toolkit
ターミナル環境の構築: Terminatorのインストール
根据 “内蔵GPUとは?外部GPUとの違いや今後の動向について解説!”,内蔵GPU指的是像Intel等CPU内置的图形处理器,而分离GPU则指的是像图形卡等外部设备。
根据”ターミナル環境の構築: Terminatorのインストール”,Terminator (终端仿真器) 是一个可以替代默认安装的终端 (Gnome Terminal) 来使用的终端程序。
NVIDIA グラフィックボードを搭載している場合
まず Nouveau モジュールが動いていることを確認します。ターミナルを開き以下のコマンドを実行してください。
$ lsmod | grep nouveau
nouveau 1403757 0
video 24400 1 nouveau
mxm_wmi 13021 1 nouveau
i2c_algo_bit 13413 1 nouveau
drm_kms_helper 125008 1 nouveau
ttm 93441 1 nouveau
drm 349210 3 ttm,drm_kms_helper,nouveau
i2c_core 40582 5
drm,i2c_i801,drm_kms_helper,i2c_algo_bit,nouveau
wmi 19070 2 mxm_wmi,nouveau
何かしらの情報が表示され Nouveau モジュールが動いていることを確認した後、 /etc/modprobe.d ディレクトリに移動します。TODOd: もしなにも表示されない場合。以下のコマンドを実行してください。
$ cd /etc/modprobe.d
次に Nouveau モジュールの設定を記述する blacklist-nouveau.conf ファイルを作成します。以下のコマンドを実行し、
$ sudo nano blacklist-nouveau.conf
表示される blacklist-nouveau.conf ファイルの内容に以下を書き記し、
blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
Control + S により blacklist-nouveau.conf ファイルを保存した後、Control + X で blacklist-nouveau.conf ファイルを閉じてください。
最後に、initramfs イメージを更新します 2。以下のコマンドを実行してください。
$ sudo update-initramfs -u
如果以下步骤失败,可能会导致驱动程序冲突、屏幕无法显示、无法登录等故障。请务必谨慎操作。
-
NVIDIA グラフィックボードを搭載している場合
まず Ubuntu のグラフィックスドライバを更新します。ターミナルを開き以下のコマンドを実行してください。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
次に PC に推奨されるドライバを調べます。以下のコマンドを実行してください。
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002204sv000019DAsd00001613bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-535 – third-party non-free
driver : nvidia-driver-525 – third-party non-free
driver : nvidia-driver-525-server – distro non-free
driver : nvidia-driver-470-server – distro non-free
driver : nvidia-driver-470 – distro non-free
driver : nvidia-driver-535-server – distro non-free
driver : nvidia-driver-535-server-open – distro non-free recommended
driver : nvidia-driver-525-open – distro non-free
driver : nvidia-driver-535-open – third-party non-free
driver : xserver-xorg-video-nouveau – distro free builtin
表示されたリストの中で recommended と書かれている NVIDIA ドライバをインストールします。例えば nvidia-driver-
$ sudo apt install nvidia-driver-
再起動します。以下のコマンドを実行してください。
$ sudo reboot
ログイン後、まずインストールされた NVIDIA 関連のパッケージを確認します。以下のコマンドを実行してください。
$ dpkg -l | grep nvidia
ii libnvidia-cfg1-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-common-525 525.85.12-0ubuntu1 all Shared files used by the NVIDIA libraries
ii libnvidia-compute-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA libcompute package
ii libnvidia-compute-525:i386 525.85.12-0ubuntu1 i386 NVIDIA libcompute package
ii libnvidia-container-tools 1.13.5-1 amd64 NVIDIA container runtime library (command-line tools)
ii libnvidia-container1:amd64 1.13.5-1 amd64 NVIDIA container runtime library
ii libnvidia-decode-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA Video Decoding runtime libraries
ii libnvidia-decode-525:i386 525.85.12-0ubuntu1 i386 NVIDIA Video Decoding runtime libraries
ii libnvidia-encode-525:amd64 525.85.12-0ubuntu1 amd64 NVENC Video Encoding runtime library
ii libnvidia-encode-525:i386 525.85.12-0ubuntu1 i386 NVENC Video Encoding runtime library
ii libnvidia-extra-525:amd64 525.85.12-0ubuntu1 amd64 Extra libraries for the NVIDIA driver
ii libnvidia-fbc1-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-fbc1-525:i386 525.85.12-0ubuntu1 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-gl-525:amd64 525.85.12-0ubuntu1 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii libnvidia-gl-525:i386 525.85.12-0ubuntu1 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii nvidia-compute-utils-525 525.85.12-0ubuntu1 amd64 NVIDIA compute utilities
ii nvidia-container-toolkit 1.13.5-1 amd64 NVIDIA Container toolkit
ii nvidia-container-toolkit-base 1.13.5-1 amd64 NVIDIA Container Toolkit Base
ii nvidia-dkms-525 525.85.12-0ubuntu1 amd64 NVIDIA DKMS package
ii nvidia-driver-525 525.85.12-0ubuntu1 amd64 NVIDIA driver metapackage
ii nvidia-kernel-common-525 525.85.12-0ubuntu1 amd64 Shared files used with the kernel module
ii nvidia-kernel-source-525 525.85.12-0ubuntu1 amd64 NVIDIA kernel source package
ii nvidia-modprobe 525.85.12-0ubuntu1 amd64 Load the NVIDIA kernel driver and create device files
ii nvidia-prime 0.8.16~0.20.04.2 all Tools to enable NVIDIA’s Prime
ii nvidia-settings 525.85.12-0ubuntu1 amd64 Tool for configuring the NVIDIA graphics driver
ii nvidia-utils-525 525.85.12-0ubuntu1 amd64 NVIDIA driver support binaries
ii screen-resolution-extra 0.18build1 all Extension for the nvidia-settings control panel
ii xserver-xorg-video-nvidia-525 525.85.12-0ubuntu1 amd64 NVIDIA binary Xorg driver
次に NVIDIA モジュールの状態を確認します。以下のコマンドを実行してください。
$ lsmod | grep nvidia
nvidia_uvm 1388544 0
nvidia_drm 69632 14
nvidia_modeset 1216512 20 nvidia_drm
nvidia 56336384 1168 nvidia_uvm,nvidia_modeset
drm_kms_helper 307200 1 nvidia_drm
drm 618496 18 drm_kms_helper,nvidia,nvidia_drm
最後に GPU の状態や利用率を確認します。以下のコマンドを実行してください。
$ nvidia-smi
Sun Oct 15 17:08:11 2023
+—————————————————————————–+
| NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.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 NVIDIA GeForce … On | 00000000:01:00.0 On | N/A |
| 0% 57C P8 25W / 350W | 473MiB / 24576MiB | 19% Default |
| | | N/A |
+——————————-+———————-+———————-+
+—————————————————————————–+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1140 G /usr/lib/xorg/Xorg 35MiB |
| 0 N/A N/A 1880 G /usr/lib/xorg/Xorg 252MiB |
| 0 N/A N/A 2004 G /usr/bin/gnome-shell 26MiB |
| 0 N/A N/A 2458 G …veSuggestionsOnlyOnDemand 48MiB |
| 0 N/A N/A 54442 G /usr/bin/anydesk 20MiB |
| 0 N/A N/A 624141 G …937440421976888396,262144 10MiB |
| 0 N/A N/A 728274 G …/ros/noetic/lib/rviz/rviz 8MiB |
| 0 N/A N/A 2923469 G …RendererForSitePerProcess 45MiB |
+—————————————————————————–+
以上の手順は “【Ubuntu + NVIDIA】Ubuntu に NVIDIA ドライバーをインストール”、”ubuntuにCUDA、nvidiaドライバをインストールするメモ” を参考にしました。
安装 NVIDIA 容器工具包
NVIDIA グラフィックボードを搭載している場合
まず必要なリポジトリと GPG 鍵を設定します。ターミナルを開き以下のコマンドを実行してください。
$ 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
NVIDIA Container Toolkit をインストールします。以下のコマンドを実行してください。
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
次に Docker デーモンが NVIDIA Container Runtime を認識するよう設定をします。以下のコマンドを実行してください。
$ sudo nvidia-ctk runtime configure –runtime=docker
Docker デーモンを再起動します。以下のコマンドを実行してください。
$ sudo systemctl restart docker
最後に NVIDIA Container Toolkit が正しくインストールされたか確認します。以下のコマンドを実行してください。
$ docker run –rm –gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000
以上の手順は “UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール”、”Installing the NVIDIA Container Toolkit” を参考にしました。
X 服务器的访问设置
まず必要なリポジトリと GPG 鍵を設定します。ターミナルを開き以下のコマンドを実行してください。
$ 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
NVIDIA Container Toolkit をインストールします。以下のコマンドを実行してください。
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
次に Docker デーモンが NVIDIA Container Runtime を認識するよう設定をします。以下のコマンドを実行してください。
$ sudo nvidia-ctk runtime configure –runtime=docker
Docker デーモンを再起動します。以下のコマンドを実行してください。
$ sudo systemctl restart docker
最後に NVIDIA Container Toolkit が正しくインストールされたか確認します。以下のコマンドを実行してください。
$ docker run –rm –gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000
以上の手順は “UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール”、”Installing the NVIDIA Container Toolkit” を参考にしました。
我們將設定允許連接到 X 伺服器,這樣一來,X Window System (X11) 的圖形使用者介面就可以運作,並且能夠使用即將建立的 Docker 容器。請打開終端機並執行以下指令。
$ xhost local:user
请在从以下获取的Docker镜像中创建和使用容器之前,每次都执行以下步骤。
获取Docker镜像
执行以下步骤。
-
Docker ファイルの複製
Docker ファイルのビルド
复制Docker文件 Docker
请将GitHub存储库复制到任意目录中,例如复制到主目录(~/)中。请打开终端并执行以下命令。
$ cd
$ git clone https://github.com/turlucode/ros-docker-gui.git
构建Docker文件
首先,切換到存放 Docker 文件的目錄中。例如,切換到(~/ros-docker-gui)。打開終端並執行以下命令。
$ cd ~/ros-docker-gui
然后进行构建。请执行以下命令。例如,将要使用的 ROS 版本设为
-
PC にグラフィックボードを搭載している場合
$ make ros_
PC にグラフィックボードを搭載しておらず内蔵 GPU 1 を搭載している場合
$ make cpu_ros_
确认动作
请创建一个容器并登录。打开终端并执行以下命令。
-
NVIDIA グラフィックボードを搭載している場合
$ docker run -it –runtime=nvidia –privileged –net=host –ipc=host -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/$(id -un)/.Xauthority -e XAUTHORITY=/home/$(id -un)/.Xauthority -e ROS_IP=127.0.0.1 turlucode/ros-
グラフィックボードを搭載しておらず内蔵 GPU 1 を搭載している場合
$ docker run -it –privileged –net=host –ipc=host –device=/dev/dri:/dev/dri -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/home/$(id -un)/.Xauthority -e XAUTHORITY=/home/$(id -un)/.Xauthority -e ROS_IP=127.0.0.1 turlucode/ros-
如果执行上述命令,则会打开 X Window System 的终端 (Terminator 3)。
请在Terminator上执行以下命令来启动roscore。
$ roscore
请在Terminator上执行以下命令以启动Rviz。
$ rviz
请在Terminator上按Ctrl + C来退出Rviz。
请在终端中输入以下命令来启动 Gazebo。
$ gazebo
请在终止器上按下 Ctrl + C 来结束 Gazebo。
请最后注销并停止容器。请关闭终端。
最后一句
在我们刚才介绍的容器中,如果需要进一步编写代码,可以方便地使用已安装了VSCode的Docker镜像,或者使用VSCode的扩展功能(Remote Explorer)。
引用资料
https://github.com/turlucode/ros-docker-gui
内蔵GPUとは?外部GPUとの違いや今後の動向について解説!
【Ubuntu + NVIDIA】Ubuntu に NVIDIA ドライバーをインストール
ubuntuにCUDA、nvidiaドライバをインストールするメモ
Install Docker Engine on Ubuntu – Install using the Apt repository
Linux post-installation steps for Docker Engine – Manage Docker as a non-root user
UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール
Installing the NVIDIA Container Toolkit
ターミナル環境の構築: Terminatorのインストール
根据 “内蔵GPUとは?外部GPUとの違いや今後の動向について解説!”,内蔵GPU指的是像Intel等CPU内置的图形处理器,而分离GPU则指的是像图形卡等外部设备。
根据”ターミナル環境の構築: Terminatorのインストール”,Terminator (终端仿真器) 是一个可以替代默认安装的终端 (Gnome Terminal) 来使用的终端程序。
内蔵GPUとは?外部GPUとの違いや今後の動向について解説!
【Ubuntu + NVIDIA】Ubuntu に NVIDIA ドライバーをインストール
ubuntuにCUDA、nvidiaドライバをインストールするメモ
Install Docker Engine on Ubuntu – Install using the Apt repository
Linux post-installation steps for Docker Engine – Manage Docker as a non-root user
UbuntuにDockerをインストールしてGPUを認識させる – NVIDIA Container Toolkitのインストール
Installing the NVIDIA Container Toolkit
ターミナル環境の構築: Terminatorのインストール
根据”ターミナル環境の構築: Terminatorのインストール”,Terminator (终端仿真器) 是一个可以替代默认安装的终端 (Gnome Terminal) 来使用的终端程序。