🎉

[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が発表されました。

https://docs.ultralytics.com/ja

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に関するメッセージです。

下記のサイトを参考にすると手順は以下の通りとなります。
https://qiita.com/Yorozuya59/items/499a632cce827a912918

  1. エラー画面の<OK>を選択.
  2. パスワードが2回求められるので入力.
  3. sudo rebootを実行
  4. 起動時にいくつかの選択肢が出てくるので,Enroll MOKを選択.
    ssh接続で操作している場合,クライアント側にこれが表示されない
  5. パスワードが求められるので,先に入力したものを入力.
  6. 起動

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
https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local

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

https://developer.nvidia.com/cuda-12-6-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local
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でデモを動かしてみます。
https://zenn.dev/robohase01/articles/c155684a1ad41a

ご質問やフィードバックは、Zennのコメント欄にてお待ちしております。
記事が参考になった方は、ぜひ「いいね」をお願いします。

参考

https://qiita.com/porizou1/items/74d8264d6381ee2941bd
https://qiita.com/zakutakumi/items/86a2be411ea562067edc

Nexis-R

Discussion