ubuntuインストールからkinectをdockerとrosで動かすまで（概要）


#まずはじめに，，，
関東の大学院の修士1年です。
自分は今までwindows＋シミュレーションで研究を進めていました。

そろそろ就活とかインターンとかするかと思い，研究室の知り合いのつてで，ロボットのスタートアップにインターンしに行きました。

ある程度，プログラム書いてるしなんとか働けるだろうと思っていたのですが，現実は甘くなかったです。

聞いたことあるけどよくわからない単語が飛び交っているし，指示されたことの意味が分からないしと散々でした。
今まで勉強したことは何だったのかと感じました。

でも，それらを理解して実機を動かしている人たちがかっこよく見えたし，センサとかロボットが実際に動いてるのは近未来っぽくて楽しそうなので，勉強することを決意しました。

## 目標
**自分のPCにubuntuをインストールして，rosとdockerを用いてkinectを動かすこと**を目標にします。

この記事では，大まかな流れを説明していきます。

大まかな流れがわかれば，調べたり，エラーと戦うことができますが，そもそも流れを知らないと何をすればよいのかわからなくなりますし，自分はそうでした。笑
なので，詳細に関しては他の記事に任せて，自分が行った大まかな流れを共有したいと思います。

（※あくまでも「自分用メモ」＋「アウトプットの練習」なので，大目に見てください！）


# 環境

* ノートPC HP envy x360
* CPU

# やったこと

* ubuntuのインストールと環境設定
* dockerとrosともろもろのインストール
* GUIとkinect2のdockerファイルの作成

やる前の状態と，やった後の状態の比較はこんな感じです。

![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416435/34543ca1-68bc-394a-c4d6-7060f0d1de2e.png)

（この画像は[@kotaro-dr](https://qiita.com/kotaro-dr/items/b1024c7d200a75b992fc)さんの記事を参考に作成しました。）

最終的にはこんな感じのアウトプットになります。
![Screenshot from 2019-11-08 01-01-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416435/b008a632-cc2f-ab95-78ed-98634b1f214e.png)

少しわかりづらいですが，kinectがrgb情報と距離情報が取れてるのがわかります。
2枚の画像のように見えるのが，奥行きを表しています。


## ubuntuのインストールと環境設定
### windowsのバックアップ
[ではまず，これに従ってバックアップを取ります。](https://www.pasoble.jp/windows/10/088142.html)
あとからできるところは省略して，システムイメージのバックアップだけやりました。

### Dドライブにubuntuをインストール
[これに従ってusbから直接ubuntuをインストール。](https://qiita.com/Takumi_Kaibara/items/4132e552a615a050a841)

### ubuntuの詳細設定
扱うドライバとかデフォルトで起動するosを選択したりする。
（この辺は詳しい研究室の後輩に教わりました、、、）

## dockerとrosとその他のインストール
[docker docsに従って，dockerをインストールします。](https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository)

[ROS.orgに従って，rosをインストールします。](http://wiki.ros.org/melodic/Installation/Ubuntu)

ChromとかTerminatorとかVScodeとかインストールしたい人はインストールします。

## GUIとkinect2のdockerファイルの作成
### dockerのモチベーション
「dockerは仮想環境を作ってそこ作業するから，本体のPCの環境を壊さないからよい」
らしいのですが自分はあまりイメージできませんでした。

おそらくこの感覚は，様々なライブラリをインストールして，それぞれのライブラリがコンフリクトを生じてデータが吹っ飛ぶという経験をしている人がありがたく感じるものだと思います。

[この記事が分かりやすいと思います。](https://qiita.com/kotaro-dr/items/b1024c7d200a75b992fc)
参考記事を基に自分の認識ではこんな感じです。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416435/80d7c1e0-0b65-ffe3-f8a4-55c1f3a0ce15.png)

（この画像は[@kotaro-dr](https://qiita.com/kotaro-dr/items/b1024c7d200a75b992fc)さんの記事を参考に作成しました。）

つまり，dockerをただ立ち上げたら，
自分が使っているPCとは別に空のPCが出来上がるような感覚で大丈夫だと思います。
その立ち上げの際に，いろいろインストールしたいライブラリを記述し，好きな環境を構築します。

あと，後日談ですが，自分はノートPCを使っていましたが，
処理速度が追い付かず，kinectの見栄えが良くなかったです。
そういときに，じゃあ，デスクトップでやろう！と思ったときに環境構築がとてもしやすいということがメリットかなと思います。

### 依存関係
ファイルの構成はこんな感じです。こんな感じで作成していきます。

```
/ホーム/docker/
|--kinectv2
|  |--Dockerfile
|  |--build.sh
|  |--run.sh
|  |--etc...  

|--ros_rviz
|  |--Dockerfile
|  |--build.sh
|  |--run.sh
|  |--etc...  
```



### rviz用のdockerを作ってみる
windows出身の人は，なかなか感覚がないですが，dockerでbuildしたイメージは，画面がないです、、、。
GUIを作る必要があるってのはこのことです。

そこでkinectの出力をrvizで見たいのでそれ専用のdockerファイルを作りました！
（githubのリンクをつけておきます！少々お待ちください）

### kinect v2用のdockerを作ってみる
kinectを動作させるdockerが必要なのでこれを作成します！
（githubのリンクをつけておきます！少々お待ちください）


### 各 Docker の実行と  rosrun
ここまでくれば，あとは実行するだけです。

まず，kinectv2用のterminalを起動(run)します。
以下のコマンドで実行

```
roslaunch kinect2_bridge kinect2_bridge.launch
```

次に，rviz用のterminalを起動(run)します。
以下のコマンドで実行

```
rosrun rviz rviz
```


### 終わりに
はじめて記事書くのですが，わかりやすい記事を書くことがほんとに難しいことに気づきました。今まで参考にさせていただいてきた記事たちの偉大さを実感しました。今回の記事はほぼ自分用のメモでしたが，誰かの参考になれれば幸いです。

また，テレビでシンディローパーさんが，一流になるためにはアウトプットを続けることが大事といってました。
これからもアウトプットしていこうと思います。