仮想デスクトップでROS2を動かすまで

# この記事の目的
Windows10上に仮想デスクトップ環境を構築してROS2の開発環境を整える

# 大まかな流れ
 1. VirtualBoxをダウンロード
 2. VirtualBoxの設定
 3. UbuntuをVirtualBoxにインストール
 4. Ubuntuにros2をインストール

# Step1 : VirtualBoxをダウンロード
- [VirtualBoxのサイト](https://www.virtualbox.org/wiki/Downloads)にアクセスする
- 「Windos hosts」を選択するとダウンロードが開始される
- ダウンロードされたファイルをクリックして実行する
- ウィザードに沿って「NEXT」で進めていく
- ウィザードで「Install」をクリックするとインストールが開始
- Windowsセキュリティで「インストール」をクリックする
- インストールが完了したら「Finish」をクリックして終了

# Step2 : VirtualBoxの設定
- デスクトップにある「Oracle VM VirtualBox」のアイコンをクリックして起動
- メイン画面から「新規」をクリックし、入力が終わったら「次へ」をクリック
    - 名前：任意で入力
    - タイプ：Linux
    - バージョン：Ubuntu18.04
    - メモリーサイズ
- メモリーサイズを設定し「次へ」をクリック
- ファイルストレージは「可変サイズ」にし、ファイルサイズは"25GB"にしましたUbuntuのシステムだけで5GBとるのに加えてrosのストレージも考えると、
  少し余裕をもって置いたほうがいいです。その他の設定はデフォルトのまま。
- 「作成」をクリックして完了。

<img width="500" alt="VM_New.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239786/9c690dd1-f642-d600-0f65-51c3319e2010.png">
<img width="293" alt="harddisk.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239786/2416f683-481c-0e16-46e4-82cbbedfac76.png">


# Step3 : Ubuntuイメージをダウンロード
- [Ubuntuサイト](https://www.ubuntulinux.jp/News/ubuntu1804-ja-remix)にアクセスする
- 「64-bit PC (AMD64) desktop image」をクリックしてダウンロードする
- ダウンロードが終了したら、「Oracle VM VirtualBox」のアイコンをクリックして「VirtualBox」を起動する
- メイン画面にある「起動」(緑色の右矢印)をクリックする
- 次の画面が表示されるので、ダウンロードしたUbuntuのイメージファイルを選択して「起動」をクリック
- 次の画面が表示されたら「Ubuntuをインストール」を選択する
    - 「Ubuntuのインストール中にアップデートをダウンロード」にチェックを入れて「続ける」をクリック
    - 「ディスクを削除してUbuntuをインストール」にチェックを入れて「インストール」をクリック
    - タイムゾーンの画面で「Tokyo」を指定して「続ける」をクリック
    - キーボードレイアウトは「日本語」を選択して「続ける」をクリック
    - ユーザ情報をクリックして「続ける」をクリック
    - インストールが完了したら、「今すぐ再起動する」をクリック
    - ログイン画面が表示されるとUbuntuのインストールは完了

<img width="315" alt="select_hardware.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239786/dc40e40d-84d5-ebd9-5de6-c13b4c7476d5.png">


# Step4 : ROS2をインストール

ROS2ホームページに従って環境をセットアップしていく
インストールするバージョンはDashing
[Installing ROS 2 Dashing Diademata](https://index.ros.org/doc/ros2/Installation/Dashing/)

## Locale設定
文字コードをUTF-8にしておく必要があります

```
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8
```

## APTリポジトリを追加

```
$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
```

## ROS2パッケージ(Dashing)をインストール
```
$ sudo apt update
$ sudo apt install ros-dashing-desktop python3-colcon-common-extensions python3-argcomplete python3-rosdep
$ sudo rosdep init
$ rosdep update
```

## 環境設定
ROS2のセットアップスクリプトを自動実行できるように、
ターミナル起動時に読み込まれるようにします

```
$ echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
```

## 動作確認
デモプログラムでtalkerノードが送信した文字列をlistenerノードが受信していることを確認しましょう
talkerノード用ターミナルとlisnterノード用ターミナルを立ち上げてください

```terminal:talker
$ ros2 run demo_nodes_cpp talker

[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
```

```terminal:listener
$ ros2 run demo_nodes_cpp listener

[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
```

お疲れさまでした。これでROS2の開発環境のセットアップは完了です。
次はワークスペースを作成し、コードを実際に書き、動かしていくことになります。
今回はここまで。


# 参照

- [Windows10にVirtualBoxとUbuntuをインストール](https://qiita.com/pyon_kiti_jp/items/0be8ac17439abf418e48)
- [Ubuntu 18.04にROS2 Dashingをインストール](https://qiita.com/k-koh/items/838c70004119c329c617)