ROSのインストール(Ubuntu・ArchLinux)

目的

Robot Operating SystemをUbuntuにインストールします。

2015/8/7 追記
ArchLinuxでのインストール方法を追記しました。

準備

まずは下記のものを用意してください

  1. Ubuntu14.04マシン or ArchLinuxマシン
  2. インターネット環境

(1) Ubuntuは15.04で試したのですが、依存関係がうまくいかないため14.04で行います。
indigoの対応バージョンは13.10と14.04のみのようです。 Ubuntu14.10と15.04を使用したい場合は、indigoではなくjadeをインストールしてください。

ArchLinuxは2015/8/7時点での最新のものです。

今回は(Ubuntu14.04 or ArchLinux)とindigoを使用します。

Ubuntu14.04

Ubuntu14.04の場合です。

sources.listのセットアップ

デフォルトではpackages.ros.orgのパッケージを登録していないため、登録を行います。

                        $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
                    

鍵の設定

鍵の設定を行います。

                        $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
                    

アップデート

パッケージインデックスを更新します。

                        $ sudo apt-get update
                    

インストール

インストールを行います。最小から最大までパッケージがありますが、今回はすべてインストールします。

                        $ sudo apt-get install ros-indigo-desktop-full
                        $ sudo apt-get install python-rosinstall
                    

ArchLinux

ArchLinuxの場合です。

まずは、yaourtをインストールしておいてください。

インストール

インストールします。

                        $ yaourt -S ros-indigo-desktop-full --needed --noconfirm
                    

ただし現在(2015/8/7)、このまま実行すると下記のようなエラーがでます。

                        ==> ERROR: A failure occurred in build().
                        Abortin...
                        ==> ERROR: Makepkg was unable to build ros-indigo-catkin.
                    

遡って読んでみると、

                        ImportError: "from catkin_pkg.package import parse_package" failed: No module named catkin_pkg.package
                        Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
                    

ros-indigo-catkinのインストール中に/tmp/yaourt-tmp-username/aur-ros-indigo-catkin/src/catkin/cmake/parse_package_xml.pyのファイルがcatkin_pkg.packageをimportできなく怒ってるようです。

まずは、catkin-pkgをインストールしましょう。

                        $ yaourt -S python-catkin-pkg --noconfirm --needed
                    

というわけで、catkin_pkgがどこにあるのか検索すると、

                        $ sudo find / -name "catkin_pkg"
                        /usr/lib/python3.4/site-packages/catkin_pkg
                    

検索結果のフォルダをPYTHONPATHへ登録します。 PYTHONPATHへ登録すると、pythonスクリプトのインクルードディレクトリに登録されます。

                        PYTHONPATH=/usr/lib/python3.4/site-packages/
                    

登録したので、catkinがインストールできるか試してみましょう。

                        $ yaourt -S ros-indigo-catkin --noconfirm --needed
                    

うまくいきましたか?それでは、もとのインストールに戻りましょう。

                        $ yaourt -S ros-indigo-desktop-full --needed --noconfirm
                    

catkin-pkgの競合

最後に、インストール途中でcatkin_pkgが競合して、python-catkin-pkgが削除されてpython2-catkin-pkgがインストールされます。

ArchLinuxで後にcatkin_makeをした時にうまくできない場合は、ROSシステムがpython-catkin-pkgのpython3バージョンpython2バージョン両方に依存しているにもかかわらず、python2-catkin-pkgのみしか入っていないためだと考えられます。

                        $ # catkinワークスペースで
                        $ catkin_mae
                        # 〜略〜
                        ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
                        Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
                        CMake Error at /opt/ros/indigo/share/catkin/cmake/safe_execute_process.cmake:11 (message):
                        # 〜略〜
                    

ここでyaourtを使ってpython3のバージョンをインストールしようとすると、競合を怒られてインストールできません。

                        $ yaourt -S python-catkin-pkg
                        # 〜略〜
                        looking for conflicting packages...
                        :: python-catkin-pkg and python2-catkin-pkg are in conflict (python2-catkin_pkg). Remove python2-catkin-pkg? [y/N] y
                        error: failed to prepare transaction (could not satisfy dependencies)
                        :: python2-rosdep: requires python2-catkin-pkg
                        :: ros-indigo-catkin: requires python2-catkin-pkg
                        :: ros-indigo-rospack: requires python2-catkin-pkg
                        # 〜略〜
                    

そのため、pipを使ってアップデートしてます。

                        $ sudo pip install -U catkin_pkg
                    

findで確認してみると、3.4にも2.7にもあることが確認できます。

                        $ sudo find / -name "catkin_pkg"
                        $ catkin_make
                    

これでcatkin_makeも実行できるようになりました。

共通手順

rosdepの初期化

rosdepを初期化します。

                        $ sudo rosdep init
                        $ rosdep update
                    

おわりに

いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。

2015/7/25

2015/8/ 7 追記
2015/8/11 追記