ROS勉強記第3回は、少し閑話休題として、MacへのROSのインストールを取り上げたいと思います。環境はOSX Marverics、ROS Hydro、パッケージマネージャにはHomebrewを使うことを想定しています。最初は僕が元々使っていたMacPortsで試したのですが、かなり難儀したので、この際MacPortsの資産を全部アンインストールして、Homebrewへ移行しました。

Homebrewでのインストール手順は、公式Wikiに取り上げられているのですが、僕の環境では、何度か途中でパッケージインストールに失敗する箇所があったので、そこを中心にコメントを残しておきます。

HomebrewのFormula追加

ROSのパッケージ取得に必要なFormulaを追加します。

$ brew update
$ brew install cmake
$ brew tap ros/hydro
$ brew tap osrf/simulation
$ brew tap homebrew/versions
$ brew tap homebrew/science

PIPの設定

ROSのソースコンパイルに必要なツールはpythonのPIPを通してインストールできます。

$ sudo pip install -U setuptools
$ sudo pip install -U wstool rosdep rosinstall rosinstall_generator rospkg catkin-pkg Distribute sphinx
$ sudo rosdep init
$ rosdep update

catkinワークスペースの構築

ROSはGroovyになってから、ビルドシステムにcatkinと呼ばれるツールを利用するようになりました。まずはそのセットアップを行い、ソースコンパイルに必要な依存パッケージをインストールします。なお、今回はROSの通信に必要な最小限のパッケージしかインストールしません。GUIツールなどもインストールしようと頑張りましたが、かなり苦労しそうだったので、途中で諦めました。

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm --rosdistro hydro --deps --wet-only --tar > hydro-ros_comm-wet.rosinstall
$ wstool init -j8 src hydro-ros_comm-wet.rosinstall
$ rosdep install --from-paths src --ignore-src --rosdistro hydro -y

依存パッケージのインストールの途中で、僕の環境(あるいはタイミング)では、PILとTinyXMLのインストールに失敗しました。もし同様の問題が起きた場合に、僕が行なった解決策を参照ください。

PIL

sudo pip install ではインストール出来ないといわれます。このときは以下の手順に従ってください。freetypeのバージョンは適宜変更のこと。

$ brew install freetype
$ ln -s /usr/local/include/freetype2 /usr/local/include/freetype
$ sudo pip install PIL --allow-external PIL --allow-unverified PIL

TinyXML

TinyXMLをインストールする際に、パッチを当てているようなのですが、そのパッチを配布している patch-tracker.debian.org がどうもダウンしているようで、取得できずインストールに失敗してしまいます。同じ(らしき)ものを配布している github.com のアドレスに変更したdiffを以下に載せておきますので、適用して再度 brew install tinyxml してください。

catkinワークスペースのビルド

依存パッケージの解決さえ出来れば、あとはすんなり行くはずです。

$ cd ~/ros_catkin_ws
$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

環境変数の設定

bashユーザ

$ echo "source ~/ros_catkin_ws/install_isolated/setup.bash" >> ~./bashrc
$ source ~./bashrc

zshユーザ

$ echo "source ~/ros_catkin_ws/install_isolated/setup.zsh" >> ~./zshrc
$ source ~./zshrc

これで、roscore, rostopic, rosserviceなどの通信コマンドが使えるようになりました。GUIツールはインストールできていませんが、ROSノードのプログラミングをするのなら、これだけ揃えば、まずは十分です。

余談ですが、Homebrewのターミナル出力が面白いですね。パッケージをビールに見立てて、コンパイルを「醸造(brew)」に見立ててるんですね。ダウンロードが「注ぐ(pour)」とか、トンチが効いてて好きです笑