GPU搭載のノートPCの性能を試すためROS2+Tensorflowをやりたい（ROS2の環境構築編）

GPU搭載のノートPCの性能を試すためROS2+Tensorflowをやりたい（ROS2の環境構築編）

先に言っておくとTensorFlowができるかはわからない。

##あらまし
つい最近のことであるが、GPU搭載のノートPCを購入した。
せっかくなのでその性能を試したいと思いこの記事の内容に至った。

この度購入したPCはWindows10搭載ということで、
最近リリースされたというROS2を入れ、
TensorFlowの画像認識を動かせば「かなりGPUが仕事してる感が出る」のではと考えた次第である。

## 環境
|項目|内容|
|:------|:---:|
| OS | Windows 10 Pro 64ビット|
|プロセッサ|Intel Core i7-7700HQ CPU @ 2.8GHz 2.81GHz|
|RAM|16GB|

## 以下、本題。

[ROS2公式ページ](https://github.com/ros2/ros2/wiki/Windows-Install-Binary)のインストール手順に沿っていく。

###1. Chocolateyのインストール
以下に示すWebページの手順に沿ってインストールした。

参考：https://qiita.com/konta220/items/95b40b4647a737cb51aa

![cmd.png](https://qiita-image-store.s3.amazonaws.com/0/211021/bd84cfa4-eda2-3d06-874c-188cdfd3980d.png)

コマンドを打つとインストールが開始される。

![cmd2.png](https://qiita-image-store.s3.amazonaws.com/0/211021/6824b304-02bd-d7fc-b475-065272a063d0.png)

###2.  Pythonのインストール
管理者権限のコマンドプロンプト上で以下のコマンドを入力、[エンター]でインストールを開始する。
`> choco install -y python`

###3. OpenSSLのインストール
下記ページからインストーラーをダウンロード。
Win32でなく、またLightではないとのことなので"Win64 OpenSSL v1.0.2n"をダウンロードした。
https://slproweb.com/products/Win32OpenSSL.html

デフォルトのパラメーターでインストール後、コマンドプロンプトで以下のコマンドを入力し、環境変数を設定する。

`setx -m OPENSSL_CONF C:\OpenSSL-Win64\bin\openssl.cfg`

![OpenSSL2.png](https://qiita-image-store.s3.amazonaws.com/0/211021/456fc587-6c34-2c7e-3ebe-fc384add7c33.png)


以下を環境変数Pathに追加する。
`C:\OpenSSL-Win64\bin\`

参考：http://www.atmarkit.co.jp/ait/articles/1601/29/news043.html

###4.  Visual Studio Community 2015
別件でインストール済みのため省略。

###5. Boostのインストール
[sourceforge](https://sourceforge.net/projects/boost/files/boost-binaries/1.61.0/)からboostを取得。
以下を取得しインストールした。
`boost_1_61_0-msvc-14.0-64`

後にROSで設定する。
`PATH=C:\local\boost_1_61_0\lib64-msvc-14.0`

以下を使うこともできるらしい。
[Adlink OpenSplice](https://github.com/ADLINK-IST/opensplice/releases/tag/OSPL_V6_7_171127OSS_RELEASE)

###6. OpenCVのインストール

[ここ](https://github.com/ros2/ros2/releases/download/release-beta2/opencv-2.4.13.2-vc14.VS2015.zip)からZIPファイルをダウンロードし、Cドライブ直下に`dev`というフォルダを作成し、展開する。
`c:\dev\opencv-2.4.13.2-vc14.VS2015\x64\vc14\bin`

###7. いろいろインストール

[ここから](https://github.com/ros2/choco-packages/releases/tag/2017-04-04-1)
以下をダウンロード。

- asio.1.10.6.nupkg
- eigen-3.3.3.nupkg
- tinyxml-usestl.2.6.2.nupkg
- tinyxml2.4.1.0.nupkg

`choco install -y -s <ダウンロードしたフォルダ> asio eigen tinyxml-usestl tinyxml2`

ちなみに私の場合はDドライブの`Download`フォルダにダウンロードしたので以下
`choco install -y -s D:\Download asio eigen tinyxml-usestl tinyxml2`

![iroiro.png](https://qiita-image-store.s3.amazonaws.com/0/211021/c71bd65c-00f0-57be-4478-007ef3e28557.png)

yamlもインストール
`python -m pip install -U pyyaml setuptools`

この時に以下のようなエラーが出たときの対策は下のページを参考に。
`UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 80: invalid start byte`

参考：https://qiita.com/akabei/items/da70ebf61cc413d5ff0d
コマンドプロンプトの文字コードを変更して解決した。
`chcp 65001`

###8. やっとROS2
https://github.com/ros2/ros2/releases

 ros2-ardent-package-windows-fastrtps-AMD64.zip

C直下に作った`dev`フォルダに展開。
フォルダ名を`ros2`とする。


###9. 動作確認
コマンドプロンプトを二つ開き、それぞれで以下のバッチを実行する。
`call C:\dev\ros2\local_setup.bat`

次に片方のコマンドプロンプト（①）で
`> ros2 run demo_nodes_cpp talker`
を実行する。
同様に、もう一つのコマンドプロンプト（②）で
`> ros2 run demo_nodes_py listener`
を実行する。

①のPublishした数字を②でSubscribすれば確認完了。

![demo.png](https://qiita-image-store.s3.amazonaws.com/0/211021/a8065359-1dcf-a6d0-801d-ec3d961076f6.png)

次にTensorFlowの環境構築もろもろを行っていくが、
ROS2さんの途中でCV2.4入れてたけど大丈夫なんすかね？
うまくいったらまた記事にしたい。