ROS2をWindowsに入れてみた

ここに記載されているのは、[ROS2-Documentation-Windows-Install-Binary-Install](https://docs.ros.org/en/humble/Installation/Windows-Install-Binary.html)の翻訳に実際にやってみた知見を加えたものです。Dockerを使わずにインストールする方法です。

## システム要求
Windows11とWindows10で動作します。ストレージは60~100GBくらい必要です。可能であればクリーンなWindowsを用意することをお勧めします。

## 必要なソフトウェアのインストール
### Chocolateyをインストールする。
ChocolateyはWindowsで使用するパッケージマネージャーです。インストール方法はChocolateyのホームページを参照してください。

[https://chocolatey.org/](https://chocolatey.org/install)

### Pythonをインストールする。
コマンドプロントを管理者権限をつけて開いて以下を入力して、Pythonをインストールしてください。Pythonがすでにインストールされている場合は一度アンインストールすることお勧めします。

```
choco install -y python --version 3.8.3
```
一度ここでコマンドプロントを閉じることをお勧めします。

### Visual C++　再頒布可能パッケージをインストールする。
コマンドプロントを管理者権限をつけて開いて以下を入力して、Visual C++　再頒布可能パッケージをインストールしてください。
```
choco install -y vcredist2013 vcredist140
```
一度ここでコマンドプロントを閉じることをお勧めします。

### OpenSSLをインストールする。
Win64 OpenSSL V1.1.1s のインストーラを[こちら](https://slproweb.com/products/Win32OpenSSL.html)からダウンロードしてください。ページを下にスクロールするとダウンロードできます。Lite版やWin32版、バージョン3.X.Yはダウンロードしないでください。

ダウンロードしたインストーラを実行してください。インストール時に設定するパラメータはすべてデフォルトにしてください。

インストールが完了したら以下のコマンドを管理者権限のつけたコマンドプロントで実行してください。

```
setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"
```
一度ここでコマンドプロントを閉じることをお勧めします。

OpenSSL-WIN64のPATHを追加する必要があります。まずコントロールパネルを開き、左上の検索に`環境変数`と入力し検索結果に出てきた`システム環境変数の編集`を選択します。そして`環境変数`をクリックします。システム環境変数の一覧をスクロールするとPathという変数があるのでそれをクリックして編集を押して新規で以下を追加します。

```
C:\Program Files\OpenSSL-Win64\bin\
```

### Visual Studio をインストールする。
Visual Studio 2019をインストールする。

インストールは簡単で`C++によるデスクトップ開発`を選択してオプションに表示されている選択しにすべてチェックを入れます。
![image](https://user-images.githubusercontent.com/53041471/199908994-0813f6f5-13ac-4f39-a6cf-a84e8fc6e1fa.png)

 ### OpenCV をインストールする。
 いくつかのサンプルはOpenCVが必要です。
 
 以下のリンクから直接ダウンロード可能です。
 [https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip](https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip)
 
ダウンロードしたら`C:`(Cドライブ直下)に展開してください。

展開後以下のコマンドを管理者権限のついたコマンドプロントで実行してください。
```
setx /m OpenCV_DIR C:\opencv
```
一度ここでコマンドプロントを閉じることをお勧めします

コマンド実行後に以下をOpenSSLと同じ要領でシステム環境変数に追加してください。
```
C:\opencv\x64\vc16\bin
```
### CMakeをインストールする。
以下のコマンドを管理者権限のついたコマンドプロントで実行します。
```
choco install -y cmake
```
OpenSSLの際と同じ手段で以下を環境変数に追加します。
```
C:\Program Files\CMake\bin
```

### 依存関係をインストールする。
依存関係のあるパッケージの一部はchocolateyデータベースにないので手動でダウンロードする必要があります。

[このGiHubリポジトリ](https://github.com/ros2/choco-packages/releases/tag/2022-03-15)から以下をダウンロードしてください。
- asio.1.12.1.nupkg
- bullet.3.17.nupkg
- cunit.2.1.3.nupkg
- eigen-3.3.4.nupkg
- tinyxml-usestl.2.6.2.nupkg
- tinyxml2.6.0.0.nupkg

ダウンロードが完了したら以下を管理者権限のついたコマンドプロントで実行してください。
```
choco install -y -s <PATH\TO\DOWNLOADS\> asio cunit eigen tinyxml-usestl tinyxml2 bullet
```

**必ず`<PATH\TO\DOWNLOADS\>`をダウンロードしたパスに変更してください。** ダウンロードしたパスがわからない場合は以下を参照してください。

- Windows11
    - ダウンロードフォルダを右クリックすると`パスをコピー`というオプションが表示されます。そこをクリックするとパスがクリップボードにコピーされます。
- Windows10
    - ダウンロードフォルダを右クリックすると`プロパティ`というオプションが表示されます。そこをクリックすると表示されます。
    
いかをコマンド管理者権限付きのコマンドプロントで実行してください。
```
python -m pip install -U pip setuptools==59.6.0
```
```
python -m pip install -U catkin_pkg cryptography empy importlib-metadata lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro
```

### Qt5をインストールする。
[5.12.X offline installer](https://www.qt.io/offline-installers)をダウンロードしてインストールしてください。

インストール時にインストールするもの聞かれるがすべて選択してインストール。

インストール完了後、以下のコマンドを管理者権限のついたコマンドプロントで実行してください。
```
setx /m Qt5_DIR C:\Qt\Qt5.12.12\5.12.12\msvc2017_64
setx /m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\platforms
```

### RQtの依存関係をダウンロードする。
[graphviz-6.0.2 (64-bit) EXE installer](https://graphviz.org/download/)をインストール。

## ROS2 ダウンロードする
1. このページに移動する。: [https://github.com/ros2/ros2/releases](https://github.com/ros2/ros2/releases)
2. もっとも新しいWindowsパッケージをダウンロードする。例(`ros2-humble-*-windows-release-amd64.zip`)
3. Cドライブ直下に'dev'という名前のフォルダを作る。
4. 3で作ったフォルダにダウンロードしたファイルを展開する。
5. 展開したフォルダの名前を`ros2_humble`に変更する。

ここらで一度再起動する。

## 環境セットアップ
以下をコマンドプロントに入力して問題ないことを確認する。
```
call C:\dev\ros2_humble\local_setup.bat
```

## Exampleを試す。
コマンドプロントで以下を実行
```
call C:\dev\ros2_humble\local_setup.bat
ros2 run demo_nodes_cpp talker
```
別のウィンドウを開き以下を実行
```
call C:\dev\ros2_humble\local_setup.bat
ros2 run demo_nodes_py listener
```
データが流れることが確認できればインストール完了。

# 最後に一言
ハマるポイント多いのでUbuntuに入れた方が良いと思います。