※Qiitaの記事もチェックしてみてください。
Ubuntu20.04の環境構築をしました。そして、Ubuntu18プログラムの移行のためにとりあえずDarknetの環境構築を行いました。Darknetの環境構築を行う記事は多くありますが、将来環境構築を複数回行うことを見越して備忘録として書きます。
この記事では、Ubuntu20.04+CUDA11.2+OpenCV4.2(すべて最新)の組み合わせを前提にしています。また、NVIDIAドライバのバージョンは460.32.03です。
Ubuntu20.04LTSの環境構築
1.Ubuntu20.04LTSのインストール:minimal installationでいいです。言語は英語推奨。
2.パッケージの更新とインストール
$ sudo apt update $ sudo apt upgrade $ sudo apt install git gcc cmake
3.NVIDIA Driverのインストール: 公式ドライバー | NVIDIA でGPUの種類を選択してダウンロードします。
私が使用したドライバは以下のリンクから直接とべます。(Linux 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のインストール
nanoなどで~/.bashrcを開いて追記する。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のインストール
- Installation — ROS 2 Documentation: Foxy documentationに従ってインストールを進めます。OpenCVはFoxy依存なので、
ros-foxy-vision-opencvパッケージは必ずインストールしてください。(ros-foxy-desktopでも可)
ROS2用ワークスペースの作成
4つめのコマンドで--recusiveオプションを追加しないように!
$ 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:=/color2つめのターミナル:
ros2 launch darknet_ros darknet_ros.launch.py

AlexeyAB氏実装のdarknetについて
Ubuntu20.04LTS+CUDA11.2の場合、そのまま動きました。

トラブルシューティング
cannot find -lcudaというエラーについて:以下のリンクを参照して、バージョンを書き換えてシンボリックリンクを貼り付ける。
Could not load library libcudnn_cnn_train.so.8などロードできないという趣旨のエラー:リンクを正しく貼り直す。error "OpenCV 4.x+ requires enabled C++11 support"というエラーが出る:リポジトリが違います。あるいは、OpenCV3.2を導入することでも解決します。