1. はじめに
「ROSやROS2を用いたロボット開発をする環境にはUbuntuが必須」とか「WSL2のUbuntuじゃなくて、普通にUbuntuの環境ないんじゃロボット開発は無理ですねえ」なんて言う言葉を先日約2名の方から言われました。まあ、そうでしょうね、、、言いたいことはわかります。。。
でもうちで用意できるPCはWindowsだけなんだよなあ。。Ubuntu入れるのは面倒な許可いるし、なんとかならないかなあとここ数日間思案に暮れていました。。
しかしROS2はWindowsに対応しているということはROSの公式サイトにも言われていることです。それに[1]、[2]、[3]の記事でもWindowsの環境にてROS2環境を構築している事例もありますから、できないことではないでしょう。
ただ、ROSの公式サイトでは「ROS2をWindowsにインストールする場合はWindows10のみをサポートしている」という記載があり、それに対して自分の環境はWindows11、、そして自分のレベルはROS/ROS2初心者。。そんな中で仮想環境も使わずにROS2の環境を構築できるのか?まずはやってみよう!!と試行したのが本記事の内容になります。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Window11 22H2
3.手順
手順は[2]の記事であるROS学習用資料にほぼ沿って行いました。しかし私の環境に合わせて変えたところもありますので、どのような手順を踏んだか記載していきたいと思います。
3.1 chocolateyのインストール
ROS学習用資料の記載の通り「管理者権限でwindows powershellを開き、以下を実行」しました。
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
3.2 Pythonのインストール
ROS学習用資料の記載の通り「Chocolateyを利用してPythonをインストール」しました。
choco install -y python --version 3.8.3
またROS学習用資料の記載の通り「C:\python38にインストールされていることを確認」もします。
3.3 Visual C ++再配布パッケージのインストール
ROS学習用資料の記載の通り「コマンドプロンプトで以下を入力してインストール」しました。私の方では管理者権限で開いたpowershellで以下を実行しました(特段理由はありません、本当にうっかりでやりました)。
choco install -y vcredist2013 vcredist140
3.4 OpenSSLのインストール
3.4.1 インストーラーのダウンロード
ROS学習用資料の記載の通り「以下のURLからWindows用のOpenSSLのインストーラーをダウンロードする。 サイト内でWin64 OpenSSL v1.1.1LのEXEを選択する。(2021年11月現在)」としたかったのですが、以下のサイトでWin64 OpenSSL v1.1.1Lがなかったため、Win64 OpenSSL v1.1.1wのEXEをダウンロードしました。そしてROS学習用資料の記載と同じように「インストーラーをすべてのオプションをデフォルトで実行し、インストール」しました。
ダウンロード先のURL:https://slproweb.com/products/Win32OpenSSL.html
3.4.2 環境変数の設定
ROS学習用資料の記載では「コマンドプロンプトを開き以下を実行する。」とあったのですが、私の方では管理者権限で開いたpowershellで以下を実行しました(これも特段理由はありません)。
setx -m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"
3.4.3 OpenSSLをPATH環境変数に追加する
ROS学習用資料の記載の通り、以下の手順で環境変数を追加しました。
- 1.設定を開き、「環境変数」で検索して「環境変数を編集」を選択する。
- 2.「Path」を選択し、編集をクリックする。
- 3.新規をクリックし、C:\Program Files\OpenSSL-Win64\bin\ を追加する。
3.5 Visual Studio 2019のインストール
ROS学習用資料の記載の通り、「以下のURLからMicrosoftのアカウントにログイン後Visual Studio Community 2019 をダウンロード」しました。
https://my.visualstudio.com/Downloads?q=visual%20studio%202019&wt.mc_id=o~msft~vscom~older-downloads
またROS学習用資料の「インストールの詳細が表示されるため、「C++によるデスクトップ開発」を選択し、インストールする。」という記述のところも踏襲してインストールしました。
3.6 OpenCVのインストール
3.6.1 ダウンロード
ROS学習用資料の記載の通り、「以下のURLからダウンロードして C:\opencv に解凍」しました。
https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip
3.6.2 環境変数の設定
ROS学習用資料の記載では「コマンドプロンプトを開き以下を実行する。」とあったのですが、私の方では管理者権限で開いたpowershellで以下を実行しました(これも特段理由はありません)。
setx -m OpenCV_DIR C:\opencv
3.6.3 OpenSSLをPATH環境変数に追加する
ROS学習用資料の記載の通り、以下の手順で環境変数を追加しました。
- 1.設定を開き、「環境変数」で検索して「環境変数を編集」を選択する。
- 2.「Path」を選択し、編集をクリックする。
- 3.新規をクリックし、C:\opencv\x64\vc16\bin を追加する。
3.7 依存関係のインストール
ROS学習用資料の記載の通り、以下の手順で依存関係のインストールをしました。
- 1. CMaKeのインストール
ROS学習用資料の記載の通り、以下のコマンドを実行し「CMaKeをインストールする。」します。管理者権限のwindows powershellchoco install -y cmake
- 2. 環境変数の追加
ROS学習用資料の記載の通り、「設定を開き、環境変数に以下のPATHを追加する。 C:\Program Files\CMake\bin」を実行します。
手順は上記と同じですが、示します。- 設定を開き、「環境変数」で検索して「環境変数を編集」を選択する。
- 「Path」を選択し、編集をクリックする。
- 新規をクリックし、C:\Program Files\CMake\bin を追加する
-
3. ファイルのダウンロードと保存
ROS学習用資料には「以下のURLから下記のファイルをダウンロードし、任意の箇所に置く。」とありますが、私はとりあえずCドライブ直下に適当な名前のファイルを作成しその中にダウンロードしたファイルをまとめて保存しました。
ダウンロード先のURL:https://github.com/ros2/choco-packages/releases/tag/2020-02-24ダウンロードしたファイル
・asio.1.12.1.nupkg
・bullet.2.89.0.nupkg
・cunit.2.1.3.nupkg
・eigen-3.3.4.nupkg
・tinyxml-usestl.2.6.2.nupkg
・tinyxml2.6.0.0.nupkg
・log4cxx.0.10.0.nupkg
- 4. ROS学習用資料には「管理者権限でコマンドプロンプトを開き、Path to downloadsをファイルを置いたディレクトリ名に変更して実行する。」とありますが、私は管理者権限で開いたpowershell上で以下のコマンドを実行しました。(もちろんの部分のディレクトリ名はファイル保存先に変更しています)
管理者権限のwindows powershell
choco install -y -s <PATH\TO\DOWNLOADS> asio cunit eigen tinyxml-usestl tinyxml2 log4cxx bullet
- 5. 必要パッケージのインストール
ROS学習用資料の記載の通り、以下のコマンドを実行しました。管理者権限のwindows powershellpython -m pip install -U catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-python pyparsing pyyaml setuptools rosdistro python -m pip install -U pydot PyQt5 choco install graphviz
- 6. 環境変数の追加
ROS学習用資料の記載の通り、「設定を開き、環境変数に以下のPATHを追加する。 C:\Program Files (x86)\GraphvizX.XX\bin」を実行します。
手順は上記と同じですが、示します。- 設定を開き、「環境変数」で検索して「環境変数を編集」を選択する。
- 「Path」を選択し、編集をクリックする。
- 新規をクリックし、C:\Program Files (x86)\GraphvizX.XX\bin を追加する。
3.8 ROS2のインストール
3.8.1 ダウンロード
ROS学習用資料の記載では「1.以下のURLからWindows用の最新パッケージをダウンロードする。(2021年11月現在はros2-foxy-20211013-windows-release-amd64.zip)」となっていましたが、私はros2-humble-20231122-windows-release-amd64.zipをダウンロードしました。
ダウンロード先のURL:https://github.com/ros2/ros2/releases
3.8.2 ファイルの解凍
ROS学習用資料の記載の通り、「C:\dev\ros2に解凍」しました。
3.8.3 環境変数の設定
ROS学習用資料の記載では「ros2_windowsという名前のファイルの中にlocal_setup.batが入っているため、ファイルを外に取り出すor下記のパスに\ros2-windowsを追加する作業が必要。」として以下のコマンドを実行すると記載されています。
call C:\dev\ros2\local_setup.bat
この部分について、私は以下のコマンドを実行しました
call C:\dev\ros2\ros2-windows\local_setup.bat
これを実行したところ以下の警告は出ましたが、次のステップに進むには特に問題ありませんでした。
"[rti_connext_dds_cmake_module][warning] RTI Connext DDS environment script not found (\resource\scripts\rtisetenv_x64Win64VS2017.bat). RTI Connext DDS will not be available at runtime, unless you already configured PATH manually."
3.8.4 動作確認
ROS学習用資料の記載の通り、「コマンドプロンプトを開いて以下を実行」をしてみたところ、
call C:\dev\ros2\local_setup.bat
ros2 run demo_nodes_cpp talker
ModuleNotFoundError: No module named 'packaging'というエラーが出ましたが、[4]の記事を参考にpowershellのコマンドを実行したら、エラーは出なくなりました。
pip install packaging
これが解消したら再度、ROS学習用資料の記載の通り、以下のコマンドを別々のターミナルで実行します。
call C:\dev\ros2\local_setup.bat
ros2 run demo_nodes_cpp talker
call C:\dev\ros2\local_setup.bat
ros2 run demo_nodes_py listener
そして実行した結果が以下になります。
左の画面でtalkerが出したメッセージを、右の画面のlistenerが受信している様子が確認できました。
まとめ
上記の手順にてWindows11 22H2の環境下においてROS2をインストールできたと考えられます。今後はここで構築した環境でロボットシミュレーションができるかなどの検証をやっていきたいと思います。
👆
この記事で構築した環境においてシミュレーション上のロボットを動かした件をWindows11環境下においてIsaac Sim+ROS2を試してみる ロボット回転編にてまとめました。
参考サイト
[1]Windows上でUnityとROS2を連携させる (1) ~環境構築編~
[2]ROS学習用資料
[3]ROS2.0をWindows10にインストールする
[4]【Selenium】急にModuleNotFoundError: No module named 'packaging'が起きた