Elementary OSにROS indigoをインストールする

Elementary OSの調子がなかなか良いのでROSをインストールして継続的に使ってみることにした。

Elementary OSのウェブサイトからisoイメージをダウンロードする。ダウンロードの際には「Freyaをダウンロード」を押す前に「カスタム」をクリックして0と入力すれば無料で入手できる。もう少し使ってみないとわからないが数ドル払う価値はあるのではと思う。
今回はChromeBook(C720)にインストールして使ったが大きな問題なくインストールできた。

ROS indigoのインストール

OSのインストールが終わったらROSをインストールする。Elementary OS Freyaがubuntu 14.04ベースなので、ROSはindigoをインストールする。
ROS indigoのインストールページを参考に、インストールを進める。

Setup your sources.list

まずsource.listを作成する。画面左上のApplicationからTerminalを選んで起動し、以下を入力する。

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

これを実行すると/etc/apt/sources.list.dにros-latest.listが作られる。インストールページの指示に従ってapt-get updateまで実行すると、以下のようなエラーが発生する。

Err http://packages.ros.org freya/main amd64 Packages
  404  Not Found
Err http://packages.ros.org freya/main i386 Packages
  404  Not Found

/etc/apt/sources.list.d/ros-latest.listを見ると、以下のような内容になっている。

$ cat /etc/apt/sources.list.d/ros-latest.list 
deb http://packages.ros.org/ros/ubuntu freya main

trustyであるべき部分がfreyaになっているのでROSのパッケージを入手できないようだ。

そこで、この部分を書き換えて以下のようにする。

$ cat /etc/apt/sources.list.d/ros-latest.list 
deb http://packages.ros.org/ros/ubuntu trusty main

Set up your keys

以下を実行してkeyを設定する。

$ sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xB01FA116

Installation

後は通常どおりROSをインストールすればよい。今回はDesktop-Full Installとした。

$ sudo apt-get update
$ sudo apt-get install ros-indigo-desktop-full

Initialize rosdep

続いてrosdepを実行する。

$ sudo rosdep init
$ rosdep update

ところが2行目の実行後、以下のようなエラーが発生する。

$ rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index.yaml
Add distro "groovy"

ERROR: Rosdep experienced an error: Could not detect OS, tried ['windows', 'ubuntu', 'rhel', 'qnx', 'osx', 'opensuse', 'opensuse', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'debian', 'cygwin', 'centos', 'arch']
Please go to the rosdep page [1] and file a bug report with the stack trace below.
[1] : http://www.ros.org/wiki/rosdep

これもsources.listの時と同様にubuntuのコードネームがfreyaになっているのではないかと考えられるので、以下のようにOSの検出を上書きする。

$ export ROS_OS_OVERRIDE=ubuntu:14.04

再度rosdepを実行する。

$ rosdep update

Environment setup

ROSの設定を行うように.bashrcを変更する。

$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

これまたエラーが発生する。

bash: /home/itolab/.bashrc: line 168: syntax error near unexpected token `/opt/ros/indigo/setup.bash'
bash: /home/itolab/.bashrc: line 168: `esacsource /opt/ros/indigo/setup.bash'

もともと.bashrcの最終行に改行が入っておらず、echoの出力がつながってしまうことが原因である。適当なエディタで.bashrcを開き、esacとsourceの間に改行を入れる。

さらに先ほどのexportも追加しておく。

$ echo export ROS_OS_OVERRIDE=ubuntu:14.04 >> .bashrc 

Getting rosinstall

rosinstallをインストールする。

$ sudo apt-get install python-rosinstall

以上でElementary OSへのROS indigoインストールは完了する。