3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】ROS2 の Windows開発環境を構築してみた

Last updated at Posted at 2024-08-11

やんごとなき理由により、Windows のROS2開発環境が必要になり Windows版のROS2開発環境を構築をしてみましたので、そのメモを置いておきます。

ROS2 開発環境のセットアップ

ROS2 のWindows版の開発環境のセットアップは正直めんどうくさいです。基本的には次のURLに詳細が記述されていますので、それに従います。今回は、humble を前提としています。iron も同じかと思いますが、Python のバージョンが違うかもしれないので注意してください。

簡単に手順を示しておきます

手順1. Chocolatery のインストール

Windows PowerShell の apt-get のようなプログラムです。ライブラリやプログラムのインストールは基本的にこのプログラムを使ってインストールします。PowerShell からは "choco" というコマンドで呼び出せます。

手順2. Python のインストール

PowerShell を管理者権限で開いて、Python 3.8.3 をインストールします。それより新しい Python がインストールされていたらアンインストールしてください。 私は Python 3.12 が入っていたので、この手順をスキップしたのですが、ros2 のプロセスが起動できないとエラーが出ます。

https://docs.ros.org/en/humble/Installation/Windows-Install-Binary.html

手順3. Visual Studio の再配布可能パッケージのインストール

管理者権限をもつPowerShell 上でインストールします。

choco install -y vcredist2013 vcredist140

手順4. OpenSSL のインストール

管理者権限をもつPowerShell 上でインストールし、環境変数をセットします。

choco install -y openssl --version 1.1.1.2100
setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"

Windowsの環境変数の"Path"に次のディレクトリを追加し、OpenSSLのコマンドが通じるようにします。

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

手順5. Visual Studio 2019 のインストール

次のURLから Visual Studio 2019 をダウンロードしてインストールします。

インストールすると Windows のメニューに、"Visual Studio Installer" というアプリケーションが追加されているので起動します。その中の【起動】ボタンを押すとメニューが現れます。「ワークロード」から”C++によるデスクトップ開発”を選択し、「インストールの詳細」から”Windows用C++ CMakeツール”のチェックを外します。

VS2.png

そのあと、「ダウンロードしながらインストールする」ボタンを押してインストールします。

手順6. OpenCV のインストール

次のURLからOpenCVをダウンロードし、ZIPファイルを、C:\opencvに展開します。展開先は任意のディレクトリで問題ありません。

次のコマンドで環境変数を追加します。

setx /m OpenCV_DIR C:\opencv

また環境変数のPathに C:\opnecv\x64\vc16\bin を追加します。

手順7. CMake のインストール

choco を使って CMake をインストールします。

choco install -y cmake

環境変数のPathに C:\Program Files\CMake\bin を追加します。

手順8. Python 関連パッケージのインストール

次のURLから、次のファイルをダウンロードします。

  • 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

手順9. 依存関係のインストール

pip と setuptools をインストールします。setuptools はバージョン指定をするようにしてください。あとでハマります。

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

手順10 Qtのインストール

これがなかなか面倒でした。オープンソースのQtは基本的に商用利用することはできません。商用利用する場合は商用利用版のQtをインストールしてください。オープンソース版は、試用や教育用、内部研究用、ホビー用に限られます。

Qt商用利用版のインストーラー
https://www.qt.io/download-dev

Qtオープンソース版のインストーラー
https://www.qt.io/ja-jp/download-open-source

インストールしたら、Qt をインストールしたフォルダ以下の Qt5.12.12\5.12.12 以下に msvc2017_64 フォルダがあることを確認します。C:\Qt がQtのインストールフォルダとしたら次のフォルダになります。

C:\Qt\Qt5.12.12\5.12.12\msvc2017_64

次のコマンドで環境変数を設定します。

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

手順11. Graphviz をインストール

必要に応じて Graphviz をインストールします。次のURLからダウンロードしてインストールしてください。

手順12. ROS2のインストール

ROS2のWindowsパッケージををダウンロードして展開します。

今回は、humble を使うので次のパッケージをダウンロードしました。 ros2-humble-20240807-windows-release-amd64.zip

ダウンロードしたZIPを例えば次のフォルダに展開します。

C:\dev\ros2_humble

手順12. DDSのインストール

ROSの通信を行うDDSをインストールします。公式ではオプションとなっていますが、いろいろ試行錯誤した結果、インストールしないと動かないような気がします(確信なし)。

手順13. 開発用のコンソールの設定

これで、だいたい環境設定が終わりました。ここからがハマりポイントです。公式では、コマンドプロンプトとなっていますが、私は「Visual Studio 2019」アプリの「Developer PowerShell for VS 2019」を管理者権限で開きます。管理者権限でないとビルド時にエラーがでますので注意してください。

********************************************************************
** Visual Studio 2019 Developer PowerShell v16.11.30
** Copyright (c) 2021 Microsoft Corporation
********************************************************************
PS C:\WINDOWS\system32>

コンソールで次のコマンドを打って、環境設定します。私は、setup_ros.ps1 というスクリプトファイルにして、PowerShellから起動します。

Start-Process "C:\Program Files\rti_connext_dds-5.3.1\resource\scripts\rtisetenv_x64Win64VS2017.bat"
& "C:\dev\ros2_humble\local_setup.ps1"

今後の開発は、「Developer PowerShell for VS 2019」を使います。

動作確認

ros2-examples のダウンロード

作業用のディレクトリを次のフォルダに作成 c:\dev\ros2_examplesし、ros2_examples をクローンする。

C:\dev\ros2_examples > mkdir src
C:\dev\ros2_examples > git clone https://github.com/ros2/examples.gt src/examples
C:\dev\ros2_examples > git clone https://github.com/ros2/example_interfaces.git src/example_interfaces

ros2-examples のブランチの切り替え

C:\dev\ros2_examples > cd src/examples
C:\dev\ros2_examples\src\examples > git checkout humble
C:\dev\ros2_examples > cd ../example_interfaces
C:\dev\ros2_examples\src\example_interfaces > git checkout humble

examples のビルド

colcon build で examples をビルドします。TypeErrorというエラーが出ますがあまり気にしなくてよさそうです。どうしても気に食わないという人は、ビルド時に次のオプションを設定してみてください。 --event-handlers desktop_notification-

C:\dev\ros2_examples\src\example_interfaces > cd ../../
C:\dev\ros2_examples > colcon build --symlink-install
Summary: 23 packages finished [1min 20s]
  1 package had stderr output: example_interfances
WNDPROC return value cannot be converted to LRESULT
TypeError: WPARAM is simple, so must be an int object (got NonType)

動作確認

Publisher と Subscriber で動作確認をします。まず、subscriber を立ち上げます。

C:\dev\ros2_examples > & .\installsetup.ps1
C:\dev\ros2_examples > ros2 run examples_rclpy_minimal_subscriber subscriber_member_function

もうひとつ、「Developer PowerShell for VS 2019」を管理者権限を開き、publisher を立ち上げます。

********************************************************************
** Visual Studio 2019 Developer PowerShell v16.11.30
** Copyright (c) 2021 Microsoft Corporation
********************************************************************
PS C:\WINDOWS\system32> cd C:\dev\ros2_examples
PS C:\dev\ros_examples > Start-Process "C:\Program Files\rti_connext_dds-5.3.1\resource\scripts\rtisetenv_x64Win64VS2017.bat"
PS C:\dev\ros_examples > & "C:\dev\ros2_humble\local_setup.ps1"
PS C:\dev\ros_examples > & .\install\setup.ps1
PS C:\dev\ros_examples > ros2 run examples_rclpy_minimal_publisher publisher_member_function

publisher 側、subscriber 側それぞれに次のようなメッセージが出てくれば環境構築成功です。

Publisher 側

[INFO] [1723365560.880453700] [minimal_publisher]: Publishing: "Hello World: 638"
[INFO] [1723365561.380387400] [minimal_publisher]: Publishing: "Hello World: 639"
...

Subscriber 側

[INFO] [1723365560.880366200] [minimal_subscriber]: I heard: "Hello World: 638"
[INFO] [1723365561.380721300] [minimal_subscriber]: I heard: "Hello World: 639"
...

所感

とんでもなく面倒くさい環境構築ですが、なんとかなりました。
いまや WSL2 があたり前になってきているので、この環境もそのうち廃れていくと思いますが、やんごとなき理由は結構発生したりするので、今しばらくは必要な人には必要な環境ですのでメンテナンスされていくことでしょう。

参考文献

https://qiita.com/mucot/items/3a679798598290e019fb
https://answers.ros.org/question/415532/wndproc-return-value-cannot-be-converted-to-lresult/
https://scrapbox.io/tygoto/Windows%E3%81%A7ROS_2_examples%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?