Raspberry Pi 3 に ROS をインストールしてみた

Raspberry Pi 3 に ROS を入れる必要があり、やっとインストールできたのでここにまとめておきます。

環境
====
まず、本記事では Mac ユーザを対象にしています。Windows ユーザの方は適宜読み替えて対応してください。(ssh までできてしまえば、あとは同じようにできるはずです)

- OS X El Capitan (10.11.4)
- Raspberry Pi 3
- micro SD: 8GB

Raspbian Jessie のインストール
============================
Raspberry Pi 3 用の Ubuntu のイメージが見つからなかったので、Raspbian Jessie で妥協することにしました。こうすれば RasPi 3 に Ubuntu 14.04 が入るよ、という情報待ってます笑

SD カードのフォーマット
--------------------
Disk Utility を起動して、FAT でフォーマットします。名前をつけてもいいですが、イメージの書き込みが終わると BOOT という名前になるので、意味がないかもしれません。

イメージのダウンロードと書き込み
---------------------------
まず、[Raspberry Pi 公式](https://www.raspberrypi.org/downloads/raspbian/) から Raspbian Jessie のイメージが固められている ZIP ファイルをダウンロードします。以下、本記事では Jessie を対象にして説明します。

次に、その ZIP ファイルを解凍して、[公式のドキュメント](https://www.raspberrypi.org/documentation/installation/installing-images/mac.md)に沿って SD カードにイメージを書き込みます。

Raspberry Pi 3 を起動
====================
ここまで問題なく進めば、やっと Raspberry Pi を起動することができます。初期設定では、自動的に GUI が立ち上がるようになっています。

Wi-Fi をつなげておく
------------------
最初は、勝手に GUI が起動しますので、画面右上にある Wi-Fi マークをクリックしてパスワードなどを入力すれば、Wi-Fi につなげることができます。Raspberry Pi 3 は標準で Wi-Fi モジュールが載っているのでこれだけです。

初期起動を CLI にする
-------------------
CLI 起動にしておきます。まず、Terminal を開いて、`sudo raspi-config` というコマンドを叩きます。すると、青い画面になりますので、Boot の設定項目を選択して CLI に自動でログインする設定にしておきましょう。

SSH
---
Raspbian Jessie には、avahi-daemon というホスト名でのアクセスをすることができるようにしてくれるソフトウェアが標準で入っているようなのですが、とりあえず次のようにインストールしておきます。

```
sudo apt-get install avahi-daemon
```
これで、おそらく Mac 側で 

```
ssh pi@raspberrypi.local
```
とすると、ssh できるはず。もし、RSA 鍵関連でエラーが起きているようなら、Mac の `~/.ssh/known_hosts` に登録されている RSA 鍵と衝突していることが考えられるので、適宜削除するなどして対応すれば解決するでしょう。

locale の設定
------------
locale をとりあえず `en_US.UTF-8` に設定しておきましょう。まず、`/etc/locale.gen` の `en_US.UTF-8 UTF-8` の行だけコメントアウトを解除します。その後、以下のコマンドを打ちます。

```
sudo locale-gen
sudo update-locale LANG=en_US.UTF-8
```

そのあと、駄目押しで、`.bashrc` に次の 2 行を追加して終わりです。

```bash
export LANG=en_US.UTF-8
export LC_ALL=$LANG
```

ROS のインストール
================
基本的には、この記事([Installing ROS Indigo on the Raspberry Pi](http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi)) を読めば ROS comm に関してはうまくいきますが、ROS Desktop の場合は `collada-dom-dev` 周りでうまくいきませんでした。

まあ、結局 GUI 部分は要らないので、諦めて ROS comm を入れました。以下のような流れでインストールできます。(先ほどのリンク先とやっていることは同じです。)

```bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six
sudo pip install rosdep rosinstall_generator wstool rosinstall
sudo rosdep init
rosdep update
mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws
rosinstall_generator ros_comm --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-ros_comm-wet.rosinstall
wstool init src indigo-ros_comm-wet.rosinstall
rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2
source /opt/ros/indigo/setup.bash
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
```

最後に、`roscore` というコマンドを実行して問題なさそうであれば、インストール完了です。