AutowareをWSLにインストールしてみたい (v1.11.0対応)

# やりたいこと

Windows10でAutowareをしたい


## ひとまず無視する内容

- CUDA

## WSLの準備

Storeから「Ubuntu16.04」をインストールします。
なお、初期設定は終了した時点からのスタートとします。

※2019/05/27時点で、Ubuntu16が正常にインストールできないようです。
Ubuntuが18に固定されるような場合、[この記事](https://qiita.com/hikaruright/items/200fcee24666defe18f7)を参考にインストールを行ってください。


## WSL上での操作

### ROS のインストール

[ROS Wiki](http://wiki.ros.org/ja/kinetic/Installation/Ubuntu)を参考に進めます。

ROSのインストール

```shell
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt update
$ sudo apt-get install ros-kinetic-desktop-full
```

ROSDEPを初期化。

```shell
$ sudo rosdep init
$ rosdep update
```

環境設定を行います

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

最後に、rosの開発パッケージをインストール

```shell
$ sudo apt-get install python-rosinstall
```

### OpenCVのインストール

必要パッケージのインストール(以下を一度に実行)

```shell
$ sudo apt-get install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy \
    libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev \
    libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev \
    libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev \
    x264 v4l-utils unzip
```

```shell
$ wget https://github.com/opencv/opencv/archive/2.4.13.6.zip
$ unzip 2.4.13.6.zip
$ mkdir opencv-2.4.13.6/bulid
$ pushd opencv-2.4.13.6/build/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON \
    -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON \
    -D WITH_VTK=ON -D CUDA_GENERATION=Auto ..
$ make -j8
$ sudo make install
$ sudo ldconfig
$ popd
```

### Autoware のインストール

[AutowareのWiki](https://github.com/autowarefoundation/autoware/wiki/Source-Build)を参考に進めます。

初回のupdate(スキップしてもOK)

```shell
$ sudo apt update
$ sudo apt upgrade
```

```shell
$ sudo apt update
$ sudo apt install -y python-catkin-pkg python-rosdep python-wstool ros-$ROS_DISTRO-catkin libmosquitto-dev gksu
```


ROSの必要パッケージをインストール

```shell
$ sudo apt install libglew-dev ros-kinetic-sound-play ros-kinetic-jsk-recognition-msgs ros-kinetic-nmea-msgs ros-kinetic-grid-map-ros ros-kinetic-jsk-rviz-plugins ros-kinetic-gps-common libssl-dev libssh2-1-dev libnlopt-dev libpcap-dev libarmadillo-dev
```

Autowareのクローン

```shell
$ cd $HOME
$ git clone https://github.com/CPFL/Autoware.git --recurse-submodules
```

colconの設定(v1.11以降に必要)

```shell
$ sudo apt install -y python3-pip python3-setuptools
$ sudo pip3 install -U setuptools
$ sudo apt install -y python3-colcon-common-extensions
```

ビルド

```shell
$ cd ~/Autoware/ros/
$ rosdep update
$ rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
$ ./colcon_release
```

## X Windowsの準備

WSLのGUIを操作するために、Windows側にX Clientをインストールします。

今回はVcXsrvを使用します。

https://sourceforge.net/projects/vcxsrv/

[X410](https://www.microsoft.com/ja-jp/p/x410/9nlp712zmn9q?activetab=pivot:overviewtab
)というストアアプリもあるようですので、お好きなほうをご使用ください。

起動すると以下のような画面が表示されますので、
「One large Window」を選択してDisplayを起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97156/9f3ddceb-cfea-82a8-db67-f7ec6e84e3d4.png)


### Ubuntuでデスクトップサービスを起動する

GNONE DESKTOPをインストール

```shell
$ sudo apt install ubuntu-desktop unity compizconfig-settings-manager
```

出力するディスプレイを指定。
必要に応じて.bashrcに書き込みましょう。

```shell
$ export DISPLAY=:0.0
```

デスクトップ設定

```
$ ccsm
```

Ubuntu Unity Pluginが選択されていることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97156/1aba86cb-d7c2-7bbc-6214-84a9b9c7ad47.png)


```shell
$ compiz
```

これでデスクトップが起動します。

ターミナルを起動し、以下のコマンドを実行します。
(Windows側から新しくターミナルを起動します。)

```shell
$ cd Autoware/ros
$ ./run
```

これで起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97156/4aba2ba9-2eb4-43d0-b19d-c3ca2e4beb3d.png)


CUDAは使えませんが、それ以外の機能は使えると思います。