ROS2 foxyがリリースされました。LTSですね!
基本的には公式wikiのとおりにインストールすればいいのですが、ハマりポイントをメモしておきます。
Python 3.8まわり
Ubuntu 20.04の都合なのか、Python 3.8をシステムのデフォルトにする必要があります。
Homebrewのデフォルトは現在のところ3.7なので、公式wiki記載の通り、以下コマンドで対応する必要があります。
brew unlink python brew link --force python@3.8
ここで注意しないといけないのは、DashingやEloquentをインストールしていた場合、以前pipでインストールしたパッケージはPython 3.7に紐ついています。
私の環境では、モジュールを一度アンインストールしないとうまく動作しませんでした。(colconがPython 3.7を参照したり、numpyのバージョンエラーが出たりしました)
# Python 3.7でインストールしたモジュール一覧を作成し、全て削除 python3 -m pip freeze > list.txt python3 -m pip uninstall -y -r list.txt # ROS2で必要なモジュールのインストール python3 -m pip install pygraphviz pydot python3 -m pip install lxml python3 -m pip install catkin_pkg empy ifcfg lark-parser lxml netifaces numpy pyparsing pyyaml setuptools argcomplete # colconを使えるように python3 -m pip install colcon-common-extensions
尚、pyenv-virtualenvでROS2 foxy環境を作ろうと思ったのですが、提供されているバイナリパッケージは/usr/local/bin/pythonに依存しているらしく動作しませんでした。
ソースビルドすればうまくいくかもしれませんが…面倒
brew pin
ROS2のバイナリパッケージはHomebrewでインストールしたパッケージのバージョンに依存してしまっています。
brew upgradeしたときに勝手にバージョンアップしないように設定します。
brew pin asio tinyxml2 brew pin tinyxml eigen pcre poco brew pin openssl brew pin qt freetype assimp brew pin console_bridge brew pin log4cxx spdlog brew pin cunit brew pin sip pyqt5 brew pin cmake
既にバージョンの不整合が起こってしまっている場合、古いパッケージをインストールするように頑張る必要があります。
Homebrew Coreを2020/6/5日時点に戻してインストール、brew pinした後にbrew update、といった手順が良さそうです。
export HOMEBREW_NO_AUTO_UPDATE=1 cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core git checkout 77f3f9cda89c72548cc9c25d8b4b12168c426b0f
過去記事に記載している様に、パッケージを一つづつ確認して、git logを見ながらほしいバージョンをインストールすることも可能ですが、かなり面倒です。
以下、筆者がインストールした各パッケージのバージョンを記載しておきます。 ※2020年6月9日時点
今後Patch Releaseで新たなバイナリが配布された場合、unpin→upgrade→pinの作業が必要になるかもしれません。
asio 1.16.1 tinyxml2 8.0.0 tinyxml 2.6.2 eigen 3.3.7 pcre 8.44 poco 1.10.1 openssl@1.0.2t 1.0.2t qt 5.14.2 freetype 2.10.1 assimp 5.0.1 console_bridge 1.0.0 log4cxx 0.10.0_1 spdlog 1.6.1 cunit 2.1-3 cmake 3.17.3
ロボットと電子工作とプログラミング!
女の子は甘いもので出来てる?