【ROS】YOLO  GPU 設定

SSDの交換に伴い、またもや発生したNVIDIA　GPU設定。。。
今回も案の定、復旧に2日間費やす。。。これで3度目

二度とこの悲劇が繰り返されないように、今回こそは動作確認済の詳細な設定をここに記す。


# 今回の設定環境

ubuntu 18.04
Geforce GTX960M
# 対象ツール
darknet 
yolo v2 tiny

# 動作したCuda＆Nvidia driverバージョン

nvidia driver 418
cuda 10.1


以下設定手順


# 現状確認
```
lspci | grep -i nvidia
```

現状入っているCUDA,nvidia-driverの確認
```
dpkg -l | grep nvidia
dpkg -l | grep cuda
```

現状入っているCUDA nvidiaドライバの完全削除
```
 sudo apt-get --purge remove nvidia*
 sudo apt-get --purge remove cuda*
 sudo apt-get --purge remove cudnn*
 sudo apt-get --purge remove libnvidia*
 sudo apt-get --purge remove libcuda*
 sudo apt-get --purge remove libcudnn*
 sudo apt-get autoremove
 sudo apt-get autoclean
 sudo apt-get update
 sudo rm -rf /usr/local/cuda*
```

参考
https://qiita.com/harmegiddo/items/86b295ccf96eff489e02

# Cuda　ツールキットインストール
今回は10.1を指定してインストールする。

https://developer.nvidia.com/cuda-10.1-download-archive-base?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork

![Screenshot from 2022-03-26 16-48-17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/36283103-b042-c9f2-44ab-b8f8dcaf397d.jpeg)


Base installer をダウンロード

```
cd ダウンロード
sudo dpkg -i cuda-repo-ubuntu1804_10.1.105-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-10.1
```
※最後にsudo apt-get install cuda-10.1とバージョン指定しないと最新のものが勝手にインストールされる。








# パスの追加
インストールしたCUDA 10.1に対して.bashrcにパスを追加します。
(bashでなく他のshellを使う人は適宜読み替えてください)
その後設定を再読込して適用します。


```
echo 'export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
sudo ldconfig

reboot

nvcc -V #(-Vは大文字です)
```
![Screenshot from 2022-03-26 17-20-32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/e96d436a-8753-80a9-00c9-0d57e07ef326.jpeg)




# nvidia-driver のインストール
以下で推奨のドライバを確認　　YOLO V2　tinyの場合は418
※今回はGUIで設定
アプリケーションを表示→ソフトウェアとアップデート→追加のドライバー→nvidia driver 418を選択→再起動
![Screenshot from 2022-03-26 18-02-45.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/32aa170c-11b2-43c4-9d43-b38fd1b19030.jpeg)

ターミナルでのインストール方法
```
ubuntu-drivers devices #インストール（nvidia-driver-418の場合)
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-418

sudo reboot
nvidia-smi -l
```

↓ちゃんとGPUがONになってる
![Screenshot from 2022-03-26 17-11-52.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/1ca57733-7935-3be5-299c-3babb3338b55.jpeg)

# yolo_wsでの操作1

```
cd yolo_ws/src/darknet_ros/darknet/Makefile
GPU=を0から1に変更
cd yolo_ws/src/darknet_ros/darknet![Screenshot from 2022-03-26 17-394-01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/a47b813c-e899-316e-15cf-77cf2717711c.jpeg)

make
```
![Screenshot from 2022-03-26 17-31-03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/f98efbdc-e4c6-a7d0-a318-d6fd8a4b6613.jpeg)
うまくいっているのか分かりづらいが、一応、この後、GPUを認識した。

# yolo_wsでの操作2
※重要※
yolo_wsのbuild,devel,フォルダを削除してからcatkin_makeし直すこと

ターミナル1
```
cd yolo_ws
catkin_make
source ./devel/setup.bash
roslaunch realsense2_camera rs_camera.launch
```
ターミナル2
```
cd yolo_ws
source ./devel/setup.bash
roslaunch darknet_ros darknet_ros.launch
```
![Screenshot from 2022-03-26 17-394-01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/30f992f2-3368-7fea-629b-5a34e4ee36df.jpeg)
![Screenshot from 2022-03-26 17-39-01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/22736896-2762-0b34-678a-0cf6b743e3bd.jpeg)
![Screenshot from 2022-03-26 17-41-37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1040271/44086334-9df9-adeb-8d96-1744269cc090.jpeg)

これでおそらく大丈夫だろう
うん、きっと大丈夫だ。。。
まじでもう勘弁して欲しい。。。