※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:=/color
2つめのターミナル:
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を導入することでも解決します。