WindowsへのROS2(iron)をインストールしたときの実際の課題を中心にまとめています。
ROS2をインストールする
基本的には公式のInstallationを参考にインストールを実施した。
https://docs.ros.org/en/iron/Installation.html
ちなみに、コマンドの実行はコマンドプロンプト(cmd)を管理者権限で使用した。
Pythonのインストール
Chocolateyを使ってPythonをインストールした。しかしすでにより新しいVerが入っていたので強制インストールでを実施
choco install -y python --version 3.8.3 --force
Visual C++再頒布パッケージのインストール
Chocolateyで以下を実行
choco install -y vcredist2013 vcredist140
OpenSSLをインストール
Win64 OpenSSL v1.1.1n OpenSSLインストーラをダウンロードしてインストール
環境変数にOPENSSL_CONFを追加
setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"
環境変数のPathに以下を追加
C:\Program Files\OpenSSL-Win64\bin\
Visual Studio2019のインストール
リンクからインストーラをダウンロードしてDesktop development with C++
をインストール。更新パッケージもインストール。
OpenCVをインストール
リンクからzipダウンロードしてC:¥opencv
として展開。
環境変数を以下で追加
setx /m OpenCV_DIR C:\opencv
環境変数PathにもC:\opencv\x64\vc16\bin
を追加。zipの展開の階層が間違っていたので、上記のパスにbinがくるように注意する。
依存関係のインストール
CMake
choco install -y cmake
とPathへC:\Program Files\CMake\bin
追加
Python関連パッケージ
リンクから以下をダウンロード
- 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 C:\Users\<UserName>\Downloads asio cunit eigen tinyxml-usestl tinyxml2 bullet
pipとsetuptoolsをアップデート
choco install -y -s C:\Users\<UserName>\Downloads asio cunit eigen tinyxml-usestl tinyxml2 bullet
パッケージを追加インストール
python -m pip install -U catkin_pkg cryptography empy importlib-metadata jsonschema lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro
その他
libxml2,iconv,zlibの3点セットをダウンロード
7zが入ってなかったので64bit版をダウンロードしてインストール
全部をc:\xmllint
に展開(この時xmllint直下にbinフォルダすべてを上書き保存
環境変数PathにC:\xmllint\bin
を追加
Qt5のインストール
Qt公式から5.12.Xの最新版オフラインインストーラをダウンロードしインストール。
Qt5は商用利用不可なので要注意。
最後に以下を実行
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
Graphvizをインストール
ここからGranphvizのWindows最新EXE Installerをダウンロードしてインストール。インストーラの最後に環境変数登録をするか聞かれたのでcurrent userの環境変数を登録にチェックをいれた。
ROS2のインストール
ここまできてようやくROS2を公式からダウンロード
今回はIronのWindows-releaseパッケージros2-iron-20230912-windows-release-amd64.zip
を選択
公式に従ってC:\dev\ros2_iron
にzipを展開
DDSのインストール
通信ミドルウェアDDSをインストール。RTI Connext DDS 5.3.1をインストール。
環境設定
これはコマンドプロンプト開きなおす度に必要。
DDSとROS2の両方を動作準備するため以下の2行のコマンドの実行が必要
call "C:\Program Files\rti_connext_dds-5.3.1\resource\scripts\rtisetenv_x64Win64VS2017.bat"
call C:\dev\ros2_iron\local_setup.bat
サンプルを実行
これで晴れて動作確認。2つのコマンド画面を開いて以下の2つのコマンドをそれぞれ実施
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener
talker側のPublishメッセージをlistener側で受け取れていればOK。
トラブルシュート
- Packagingの参照切れ
ModuleNotFoundError: No module named 'packaging'
解決法1:Packagingを再入手してみる
pip install packaging
Requirement already satisfied: packaging in c:\python38\lib\site-packages (23.2)
上記の表示がでて問題ないことを確認
解決法2:パスの確認
ROS2のインストールフォルダC:\dev\ros2_iron\Lib\site-packages
を見てみるとpackagingが存在しない
where python
でpython.exeの場所を確認すると、
where python
C:\Python311\Scripts\python.exe
ここから..\Lib\site-packages
をたどっていくとpackagingがあることを確認。
xcopy c:\Python311\Lib\site-packages\packaging c:\dev\ros2_iron\Lib\site-packages\. /E /H /C /I
- その他のPythonライブラリ参照切れ
いずれも以下を実行して解決
pip install <ライブラリ名>