[ROS 2] GPU環境構築からyolo_rosを動かすまで その1
概要
Nexis-Rというチームでロボカップレスキュー実機リーグに参加している者です。
この記事ではros2でyoloを使えるパッケージyolo_rosを動かす為にGPU環境の構築について説明していきます。
環境
2025/01/01時点
- Ubuntu 22.04
- ROS 2 Humble
- Thirdwave Corporation XL7C-R36H (PC)
- GeForce RTX 3060 Mobile (GPU)
2025/03/07時点
- Ubuntu 22.04
- ROS 2 Humble
- Thirdwave Corporation RL7C-R46-5N (PC)
- GeForce RTX 4060 8GB Mobile (GPU)
YOLOとは?
YOLO (You Only Look Once) は、物体検出のための高速かつ効率的な深層学習アルゴリズムです。従来の物体検出手法と異なり、画像を一度だけ見るだけで複数の物体を同時に検出できます。YOLOの主な特徴として:
- リアルタイム処理が可能な高速な検出速度
- 高い検出精度
- end-to-endの学習が可能
- 様々なハードウェアで動作可能
が挙げられます。最近はUltralyticsが新しいYOLOシリーズのモデルYOLO11が発表されました。
1. GPU環境構築
システム更新
sudo apt -y update
sudo apt -y upgrade
NVIDIAグラフィックカードの確認
グラフィックカードがシステム側で認識されるか確認してください。
lspci | grep -i nvidia | grep VGA
nouveauドライバの無効化
NVIDIAのGPUを使用するために、デフォルトのNVIDIAドライバ(nouveau)を無効化し、NVIDIA公式ドライバに切り替えます。
echo 'blacklist nouveau' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
echo 'options nouveau modeset=0' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
cat /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
既存のCUDAとドライバの削除
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*
推奨ドライバの確認
ubuntu-drivers devices
recommendedが書かれているドライバをインストールしましょう。著者の環境では、nvidia-driver-560がrecommendedとなっていたのでこれをインストールします。
hasegawa@hasegawa-XL7C-R36H:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002520sv00001D05sd0000117Cbc03sc00i00
vendor : NVIDIA Corporation
model : GA106M [GeForce RTX 3060 Mobile / Max-Q]
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-545 - distro non-free
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-565 - third-party non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-550 - third-party non-free
driver : nvidia-driver-560 - third-party non-free recommended
driver : nvidia-driver-565-open - third-party non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-545-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-550-open - third-party non-free
driver : nvidia-driver-560-open - third-party non-free
driver : xserver-xorg-video-nouveau - distro free builtin
GPUドライバのインストール
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-560
sudo reboot now
sudo apt install nvidia-driver-560
をインストール中に下記のような画面が表示されます。初めてnvidia-driverをインストールする時に出てきます。UEFI Secure Bootに関するメッセージです。
下記のサイトを参考にすると手順は以下の通りとなります。
- エラー画面の<OK>を選択.
- パスワードが2回求められるので入力.
- sudo rebootを実行
- 起動時にいくつかの選択肢が出てくるので,Enroll MOKを選択.
ssh接続で操作している場合,クライアント側にこれが表示されない - パスワードが求められるので,先に入力したものを入力.
- 起動
NVIDIAドライバの確認
再起動後、以下のコマンドでGPUの認識を確認します:
nvidia-smi
著者の環境では下記のようになりました。
注意:nvidia-smi
の出力に表示されるCUDA Versionは、実際にインストールされているバージョンではありません。正確なバージョンはnvcc -V
で確認できます。
hasegawa@hasegawa-RL7C-R46-5N:~/ros2_ws$ nvidia-smi
Sun Mar 23 10:49:59 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| 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 RTX 4060 ... Off | 00000000:01:00.0 On | N/A |
| N/A 45C P8 3W / 115W | 426MiB / 8188MiB | 37% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2078 G /usr/lib/xorg/Xorg 59MiB |
| 0 N/A N/A 134201 C /usr/bin/python3 348MiB |
+-----------------------------------------------------------------------------------------+
2. CUDAのインストール
本来であればCUDA12.6をインストールすべきですが、他のROS2パッケージで使っているcv_bridgeの関係で今回はCUDA11.7をインストールします。
CUDA 11.7のインストール手順:
Operating System:Linux
Architecture:x86_64
Distribution:Ubuntu
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
追記(2025/03/07)
新しいPCでcudaを入れようとしたところ下記のエラーが発生した。
Errors were encountered while processing:
nvidia-dkms-515
cuda-drivers-515
cuda-drivers
nvidia-driver-515
cuda-runtime-11-7
cuda-demo-suite-11-7
cuda-11-7
cuda
E: Sub-process /usr/bin/dpkg returned an error code (1)
これはcudaのバージョンとGPUの相性が悪いことを意味する。なのでnvidia-smiで表示されたcuda12.6をインストールする。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda-repo-ubuntu2204-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
2025/03/07時点ではこの方法でインストールできた。
環境変数の設定
~/.bashrc
に以下の設定を追加:
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
設定を反映:
source ~/.bashrc
バージョンの確認
nvcc -V
以下のような出力が表示されれば、インストールは成功です:
hasegawa@hasegawa-RL7C-R46-5N:~/ros2_ws$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Fri_Jun_14_16:34:21_PDT_2024
Cuda compilation tools, release 12.6, V12.6.20
Build cuda_12.6.r12.6/compiler.34431801_0
まとめ
今回ubuntu上にGPUの環境構築を行いました。次回の記事では実際にGPUを使ってYOLOのROS2パッケージyolo_rosでデモを動かしてみます。
ご質問やフィードバックは、Zennのコメント欄にてお待ちしております。
記事が参考になった方は、ぜひ「いいね」をお願いします。
参考
Discussion