LoginSignup
2
1

More than 3 years have passed since last update.

ROS2 on Windows インストールメモ

Posted at

WindowsにROS2(foxy)をインストールしたときのメモ。
こちらをもとにインストールしたが、つまづいたことや、悩んだことを中心にまとめておく。
ただしインストールしただけで、本格的に使っていないので都度修正が必要かもしれない。

インスト-ル方針

下記の方針でいくことにした。

  • 現時点(2021.4)のLTSであるFoxyにする。ラズパイ4と連携させるつもりでそちらは Ubuntu20.04だから問題なさそう。
  • 極力chocolatelyを使わない(必要性を感じなかったし、コマンド引数のオプションがいっぱいありすぎて確認するのがめんどくさそう)
  • Python3はユーザ環境でインストールする。(ドキュメントはAdmin権限で C:\Python38 にインストールするが、普段づかいするとき pip --user がめんどくさいので)

chocolatelyのインストール

ドキュメントのリンク先にいき、右上のInstall Nowからたどる。Step1のメールアドレスの登録するようになっているが、無視してもStep2のインストールはできる。
個人利用なのでIndividualのタブの手順を実行する。

  • 管理者モードでPowerShellを起動する。
  • インストールディレクトリをデフォルトから変えたい場合は、事前に環境変数 ChocolatelyInstall を指定しておく。setx -m ChocolatelyInstall C:\Dev\インストールしたいディレクトリ> 自動的にディレクトリが作られないようなので事前につくっておかないといけないらしい。
  • 四角に囲まれたコマンドを管理者権限のPowershellで実行

Python 3.8のインストール

方針に示したように、ユーザ環境にインストールしたい。

  • choco でインストールする場合は管理者権限(全ユーザむけ)のインストールになるから使わない。ちなみにchocoでインストールするときはドキュメントにあるように --version 指定をしないと最新(3.9.2など)がインストールされるので必ず指定すること。C:\Python38にインストールされる。
  • ユーザ環境(C:\Users<yourname>\Python)にインストールは本家python.orgからダウンロードすればよい。3.8系の最新(3.8.9)をインストールしてみたが今のところ問題なさそう。
  • Ros2のバイナリパッケージに含まれるすべてのPythonスクリプトにはc:\Python38がハードコーディングされている。今回はユーザ環境にインストールしているのでリンクをはって対処する。管理者じゃないコマンドプロンプトでmklink /D C:\Python38 C:\Users\<username>\AppData\Local\Programs\Python\Python38を実行しシンボリックリンクをはる。LinuxやMacと違って、mklink /D リンク先 リンク元なのが注意点。

あとは"Enviroment Setup"までドキュメント通り実施する。
chocoをつかうと便利だった点は"Install dependencies"のところ。1行で終わり。
もちろんすべてnupkgなので実はVisualStudioがあるから重要でもないのかもしれないけど。PATHをchocoが追加してくれるのがありがたいということで。

環境変数の設定

call <インストールディレクトリ>\local_setup.batで終わりかと思いきやそうでもない。環境変数2つを手動で設定してやる必要があった。

QT_QPA_PLATFORM_PLUGIN_PATH

チュートリアルのturtlesim_nodeを起動しようとすると下記エラーがでて、そもそもwindowが開かない。

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "C:\Qt\5.15.0\msvc2019_64\plugins\platforms"
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

これの対処として環境変数QT_QPA_PLATFORM_PLUGIN_PATHをros_foxy\bin\platformsに指定してやる必要がある。

C:\Users\username> set QT_QPA_PLATFORM_PLUGIN_PATH=<インストールディレクトリ>\ros2-foxy\bin\platforms
C:\Users\username> setx QT_QPA_PLATFORM_PLUGIN_PATH <インストールディレクトリ>\ros2-foxy\bin\platforms

これで亀がでてくる。

ROS_DOMAIN_ID

ROS1から2への変更点で大きなものはmaster-slaveでなくなったこと。つまり母艦PCでmasterを起動したり、スレーブのロボットでslaveを起動しなくても node同士で通信できるということ。
母艦とロボット間を連携させるためには、ROSのドメインROS_DOMAIN_IDを合わせてやる必要がある。

set ROS_DOMAIN_ID=1

一セットしかROS2を使わないならsetxしてやるといい。

まとめ

とりあえずラズパイ、VMware上のUbuntuのROS2の間でturtulesimで相互にメッセージを交換できた。
これからあそんでいこう。

2
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
2
1