rclsharkの動作確認のためにROS2をインストールしたかったんだけど、よく見たら、「Only Windows 10 is supported.」と書いてあってあっとなってしまいました。
Windows11でROS2を使ったことがある人はまだあまりいないみたいですね(?)
そういえば、前回Windows10にROS2をインストールしたところRviz2のアイコンが反映されていなかったり不具合あったりしたなーーー。
せっかくなのでROS2をWindows11上でビルドすることにしてみたので、環境構築をした時のメモを残しておきます。(適宜修正していきます)
結論から先に言うと、Windows11でROS2は動きます。
前提:ビルドが最適
正直言って、この記事はほとんどの人には役に立たないと思います。
なぜなら、ビルドって人やコンピュータ環境によって全然違うのであてにならない場合が多いからです。なんなら、この環境がInsider Buildなので。
たとえ公式がめっちゃ丁寧に書いたとしても、ビルド作業がある時点で一定数の躓きポイントはあります。なので、こんな感じにしたら動いたよ~的なあいまいな表現で示します。
分かりにくい場所や少し違ったよーという点があれば教えていただけると幸いです。
Windows上でビルドする方法は以下に載っていますが基本的にはビルド→エラー→ビルド→エラー→…を繰り返しながらデバッグしたほうが良いです。
結構根気がいる作業になりそうです。
自動インストールの手法が確立されていない現時点(2021/09/23)ではパスとかをいちいち確認したほうがよいでしょう。インストーラを早く実装しなさい。
- Building ROS 2 on Windows — ROS 2 Documentation: Foxy documentation
- Installing ROS 2 on Windows — ROS 2 Documentation: Foxy documentation
ROS2のビルド以前
ここでは、以下をインストールします。どれかが欠けていたらそれっぽいエラーコマンドが出てくるので適宜対応していきましょう。
ビルド用
Visual Studio 2019のC++ツール
- Visual Studio 2019 for Windows および Mac のダウンロードでWindows用のVisual Studio 2019(Community)をインストール後、InstallerでC++用ビルドツールをインストールする。
chocolatey (Pythonなどツールのインストールのため)
- Chocolatey Software | Installing Chocolateyに従ってPowerShellでインストールする。
- インストール後は、Building ROS 2 on Windows — ROS 2 Documentation: Foxy documentationやInstalling ROS 2 on Windows — ROS 2 Documentation: Foxy documentationを参考にしてインストールできるものはインストールしましょう。もちろんPython (3.8)も!
pipでインストールするパッケージ
- setuptools
- pip
- vcstool
- colcon-common-extensions
- catkin_pkg
- cryptography
- EmPy
- ifcfg
- lark-parser
- lxml
- numpy
- pyparsing
- pyyaml
- flake8
- flake8-blind-except
- flake8-builtins
- flake8-class-newline
- flake8-comprehensions
- flake8-deprecated
- flake8-docstrings
- flake8-import-order flake8-quotes
- mypy==0.761
- pep8
- pydocstyle
xmllint
- Index of /pub/libxml/64bit/にアクセスして、
iconv-1.14-win32-x86_64.7z
とlibxml2-2.9.3-win32-x86_64.7z
とzlib-1.2.8-win32-x86_64.7z
をダウンロードして解凍し、3つのパッケージをすべてC:\xmllint
に配置します。 - 通したパス:
C:\xmllint\bin
- Index of /pub/libxml/64bit/にアクセスして、
OpenCV4のバイナリ
- Releases · opencv/opencv · GitHubから
opencv-4.5.3-vc14_vc15.exe
をダウンロードして実行してデフォルトのオプションでインストールします。 - 通したパス1:
C:\opencv\build\x64\vc15\bin
- 通したパス2:
C:\opencv\build\bin
- Releases · opencv/opencv · GitHubから
Qt5 (Open Source)
- Qt for Windows | Qt 5.15からオプション(デフォルトでOK?)でインストールします。その後、パスを通します。
- 通すパス:
C:\Qt\Qt5.12.9\5.12.9\msvc2017_64
OpenSSL(?)
- Win32/Win64 OpenSSL Installer for Windows - Shining Light ProductionsからWin64 OpenSSL v1.1.1kをダウンロード、デフォルトのオプションでインストールする。
- 通すパス:
C:\Program Files\OpenSSL-Win64\bin\
ROS2のソースコード:
ROS2-Foxyをビルド
で解説します。
入っていないかもしれないもの(少なくとも私には入っていなかった…)
make(OpenCVのインストール確認をするときにあると便利)
- Make for Windowsからダウンロードしてパスを通す。cmdで
make
を実行してコマンドが通ればOK - 通すパス:
C:\Program Files (x86)\GnuWin32\bin\
- Make for Windowsからダウンロードしてパスを通す。cmdで
patch
- Patch for Windowsからダウンロードしてパスを通す。cmdで
patch
を実行してコマンドが通ればOK - 通すパス:
C:\Program Files (x86)\GnuWin32\bin\
- Patch for Windowsからダウンロードしてパスを通す。cmdで
ビルドを進めていくうちに分かってきたこと
ROS2-FoxyはVisual Studio 2019とcolconを使ってビルドする
ROS2関連ツールのインストールは基本的に管理者権限のPowerShellで実行
ROS2-Foxyのビルドは管理者権限のcmdで実行
2017
や2015
と書いてあっても恐れずにパスを通すパスはちゃんとメモっておくこと(開くの面倒なので)
ROS2-Foxyをビルド
管理者権限のCMDでビルドをします。かならず--merge-install
でビルドすること!
ソースコードの取得
CMDの場合
md \dev\ros2_foxy\src cd \dev\ros2_foxy curl -sk https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos -o ros2.repos vcs import src < ros2.repos
PowerShellの場合
md \dev\ros2_foxy\src cd \dev\ros2_foxy curl https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos -o ros2.repos vcs import --input ros2.repos src
ビルド
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 cd \dev\ros2\ colcon build --merge-install
簡単なデモ
インストールが終われば、あとはほとんどUbuntuと使い方はあまり変わりません。
環境をロードするときは次のコマンドを実行。
C:\dev\ros2\install\setup.ps1
- PowerShell(タブ1):
ros2 run demo_nodes_cpp talker
- PowerShell(タブ2):
ros2 run demo_nodes_py listener
- PowerShell(タブ3):
rqt_graph
ros2_wsを作成する
ros2_ws\src
以下にソースコードを配置してCMDでコンパイルしてください。(batってPowerShellでも通用するのかな?いまいち分かっていない…)
md ros2_ws\src cd ros2_ws (ROS2用のソースコードを配置) call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 colcon build --symlink-install
実行例(PowerShell)
C:\dev\ros2\install\setup.ps1 ros2_ws\install\local_setup.ps1 ros2 run <pkg-name> <executable>
CMDの場合はcall ...batで環境をロードしましょう。
質問事項など
この記事を読んでおそらくWindows10と同様に動くということはわかってもらえたと思います。もし、分からないところがあればTwitterなどで質問しに来てください。分かる範囲で追記したり、答えたりできると思います。
環境変数一覧
全て、「システムのプロパティ→環境変数→ユーザ環境変数→PATH」についてです。
C:\Program Files (x86)\GnuWin32\bin C:\Qt\Qt5.12.9\5.12.9\msvc2017_64 C:\opencv\build\x64\vc15\bin C:\opencv\build\bin