LoginSignup
4
3

More than 1 year has passed since last update.

ROS2-Foxyでdarknet-ros(Ubuntu20.04+OpenCV4.2+CUDA11.2)

Last updated at Posted at 2021-04-02

※この記事は過去に私が投稿した記事(えいあーる・れいの技術日記(はてなブログ))を修正したものです。

元記事はこちら↓

 この記事では、Ubuntu20.04+CUDA11.2でDarknet_rosを動かす方法を環境構築と合わせて説明します。リポジトリを見る限りYOLOv3までの対応だと思います。
 Ubuntu20.04+CUDA11.2+OpenCV4.2+ROS2-Foxy(2021年3月時点ですべて最新)の組み合わせを前提にしています。また、NVIDIAドライバのバージョンは460.32.03です。

ハードウェア

 次のハードウェアで環境構築しました。

  • CPU:Ryzen7 2700x(16threads @4.3GHz)
  • GPU:GeForce RTX2080Ti(TU102)
  • RAM:16GB DDR4

Ubuntu20.04LTSの環境構築

1.Ubuntu20.04LTSのインストール

  • PCをUbuntu20.04を焼いたUSBメモリでブートし、インストールを行います。minimal installationでいいです。言語は英語推奨。

2.パッケージの更新とインストール

 gccとcmakeはNVIDIA Driverのインストールで必要です。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install git gcc cmake

3.NVIDIA Driverのインストール

4.nouveauを無効化する

echo `blacklist nouveau` >> /etc/modprobe.d/blacklist-nouveau.conf
echo `options nouveau modeset=0` >> /etc/modprobe.d/blacklist-nouveau.conf
sudo reboot

5.NVIDIA Driverをインストールする

  • ログイン画面が表示されたら、Ctrl+Alt+F2を押してCUIログインをします。
$ cd ~/Downloads/
$ chmod +x NVIDIA-Linux-x86_64-460.67.run
$ ./NVIDIA-Linux-x86_64-460.67.run

###基本的には質問に対してOKでいいです

$ sudo reboot

6.ログインしてドライバインストール確認

  • 再度ログインしてターミナルを開き、$ nvidia-smiでドライバがインストールされているか確認します。

成功例

| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| 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  GeForce RTX 208...  On   | 00000000:06:00.0  On |                  N/A |
| 24%   32C    P8    22W / 260W |    654MiB / 11016MiB |      3%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       983      G   /usr/lib/xorg/Xorg                102MiB |
|    0   N/A  N/A      1491      G   /usr/lib/xorg/Xorg                336MiB |
|    0   N/A  N/A      1623      G   /usr/bin/gnome-shell               70MiB |
|    0   N/A  N/A      2349      G   ...AAAAAAAAA= --shared-files       72MiB |
|    0   N/A  N/A     18194      G   ...AAAAAAAA== --shared-files       22MiB |
|    0   N/A  N/A    113055      G   ...AAAAAAAAA= --shared-files       35MiB |
+-----------------------------------------------------------------------------+

7.CUDA 11.2のインストール

  • https://developer.nvidia.com/cuda-downloads に従ってインストールします。

  • $ sudo apt install cuda-11-2のステップまで終わらせます。

  • nanoやvscodeなどで~/.bashrcを開いて環境変数の設定を追記します。2行目についてはcudaのままでもいいし、cuda-11.2などのバージョン指定でもよいです。(バージョンを切り替えがちな人はbashrcに記載しないほうがいいかも)

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

8.cuDNNのインストール

※かなり面倒な方法なので、もっと楽な方法があれば教えてください。

  • https://developer.nvidia.com/rdp/cudnn-download に移動して対応するcuDNNをダウンロードして、/usr/local/cuda-11.2/include//usr/local/cuda-11.2/lib64/にそれぞれファイルをコマンドでコピペし、シンボリックリンクを作成します。

ROS2のインストール

  • https://docs.ros.org/en/foxy/Installation.html に従ってインストールを進めます。OpenCVはFoxy依存なので、ros-foxy-vision-opencvパッケージは必ずインストールしてください。(ros-foxy-desktopで勝手にインストールされます)

ROS2用ワークスペースの作成とソースコードのダウンロード

 4つめのコマンドで--recusiveオプションを追加しないように!(OpenCV3のバージョンがダウンロードされてしまいます。)

$ source /opt/ros/foxy/setup.bash

$ cd ~/
$ mkdir -p ros2_ws/src
$ cd ros2_ws/src
$ git clone https://github.com/ajaypaul2008/darknet_ros.git
$ cd darknet_ros
$ git checkout foxy

$ git clone https://github.com/kunaltyagi/darknet.git
$ cd darknet
$ git checkout opencv4

$ cd ~/ros2_ws/
$ colcon build
  • webカメラ用ROS2パッケージもインストールしておきましょう。
$ sudo apt install ros-foxy-v4l2-camera

実行

 あらかじめROS2とワークスペースの環境はロードしておきましょう。

  • 1つめのターミナル:$ ros2 run v4l2_camera v4l2_camera_node __ns:=/color

  • 2つめのターミナル:ros2 launch darknet_ros darknet_ros.launch.py

(YOLOv4)AlexeyAB氏実装のdarknetについて

 Ubuntu20.04LTS+CUDA11.2の場合、コンパイルしてそのまま動きました。MakeFileのパスは適宜変更してください。CUDA11以上を使用する場合は-gencode arch=compute_30,code=sm_30 \を削除してください。(CUDA11より、KeplerアーキテクチャのGPUは使えなくなりました。)

トラブルシューティング

  • cannot find -lcudaというエラーについて:以下のリンクを参照して、バージョンを書き換えてシンボリックリンクを貼り付けてください。

  • Could not load library libcudnn_cnn_train.so.8などロードできないという趣旨のエラー:エラーをよく確認して、リンクを正しく貼り直してください。

  • error "OpenCV 4.x+ requires enabled C++11 support"というエラーが出る:ROS2用ワークスペースの作成の時点でダウンロードしたリポジトリがOpenCV3用の可能性があります。OpenCV4用のリポジトリをダウンロードしてください。

使用したリポジトリ

関連

  • Darknet YOLOv3・YOLOv4の作者のリポジトリです。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3