えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

Windows11上にROS2をビルドしてみた

rclsharkの動作確認のためにROS2をインストールしたかったんだけど、よく見たら、「Only Windows 10 is supported.」と書いてあってあっとなってしまいました。

Windows11でROS2を使ったことがある人はまだあまりいないみたいですね(?)

そういえば、前回Windows10にROS2をインストールしたところRviz2のアイコンが反映されていなかったり不具合あったりしたなーーー。

せっかくなのでROS2をWindows11上でビルドすることにしてみたので、環境構築をした時のメモを残しておきます。(適宜修正していきます)

結論から先に言うと、Windows11でROS2は動きます。

f:id:Ray_ar:20210923232735j:plain

前提:ビルドが最適

正直言って、この記事はほとんどの人には役に立たないと思います。

なぜなら、ビルドって人やコンピュータ環境によって全然違うのであてにならない場合が多いからです。なんなら、この環境がInsider Buildなので。

たとえ公式がめっちゃ丁寧に書いたとしても、ビルド作業がある時点で一定数の躓きポイントはあります。なので、こんな感じにしたら動いたよ~的なあいまいな表現で示します。

分かりにくい場所や少し違ったよーという点があれば教えていただけると幸いです。


Windows上でビルドする方法は以下に載っていますが基本的にはビルド→エラー→ビルド→エラー→…を繰り返しながらデバッグしたほうが良いです。

結構根気がいる作業になりそうです。

自動インストールの手法が確立されていない現時点(2021/09/23)ではパスとかをいちいち確認したほうがよいでしょう。インストーラを早く実装しなさい。

ROS2のビルド以前

ここでは、以下をインストールします。どれかが欠けていたらそれっぽいエラーコマンドが出てくるので適宜対応していきましょう。

ビルド用

入っていないかもしれないもの(少なくとも私には入っていなかった…)

  • make(OpenCVのインストール確認をするときにあると便利)

    • Make for Windowsからダウンロードしてパスを通す。cmdでmakeを実行してコマンドが通ればOK
    • 通すパス: C:\Program Files (x86)\GnuWin32\bin\
  • patch

    • Patch for Windowsからダウンロードしてパスを通す。cmdでpatchを実行してコマンドが通ればOK
    • 通すパス: C:\Program Files (x86)\GnuWin32\bin\

ビルドを進めていくうちに分かってきたこと

  • ROS2-FoxyはVisual Studio 2019とcolconを使ってビルドする

  • ROS2関連ツールのインストールは基本的に管理者権限のPowerShellで実行

  • ROS2-Foxyのビルドは管理者権限のcmdで実行

  • 20172015と書いてあっても恐れずにパスを通す

  • パスはちゃんとメモっておくこと(開くの面倒なので)

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

f:id:Ray_ar:20210924005808j:plain

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

その他参考文献

answers.ros.org

www.kkaneko.jp