GarretCafe

- Gadget Camera Camp Leather -

こんなご時世こそ、自分の考えを書いてみよう

RaspberryPi2のjessieにROSのindigoをインストールする最新版

      2016/05/12

題名通り、RaspberryPi2のjessieにROSのindigoをインストールします。
前回は間違えて、Hydroをインストールしてしまいましたが、今回はインストールしたものもあってれば、ちゃんと最後までインストールできました。

https://garretcafe.com/blog/3166

どっちをインストールしようかね。

いろいろあるんですよね。とりあえず参考にしたサイトを上げておきます。

raspbianバージョン

http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi

こちらのサイト

http://oohito.com/nqthm/archives/2778

こちらのサイトも併せて。

ubuntuバージョン

http://karaage.hatenadiary.jp/entry/2015/09/25/073000

こちらのサイト

http://qiita.com/sayonari/items/a9721afd92e2bfb34964

こちらも併せて。

あとでUbuntuバージョンはやってみるけど、今回はraspbianについて。

やり方

基本的にはこちらの公式サイトに従ってやっていく。

ROSberryPi/Installing ROS Indigo on Raspberry Pi - ROS Wiki
目次This tutorial explains how to install ROS Indigo from source on the Raspberry Pi. The instructions follow roughly the source ins...

ただ、パソコン初心者の方とかコマンドライン恐怖症、英語恐怖症の方にはきついものがあるので、以下を全部順番にコピペしていってください。
また、エラーが出たらすぐにそこで対処するようにしてください。
続けてやっていってもどうせ上手くいかないです。時間の無駄です。

リポジトリ関係の設定

ここからがスタートです。
先ほども言いましたが、一つずつ、丁寧に。

$ 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 -

プロキシエラーが出る人は注意です

Proxy的な文字が出てエラーが出る人は、会社や学校でこの作業をしている人でしょう。
なぜこんなエラーが出るのかわからない人は、正直一つ一つのエラーを対処しきれる余裕がなくなると思うので、自宅かなんかに持って行って、プロキシ環境がないところでセッティングをするようにしてください。
もちろんそのままでもオプションとかいろいろ頑張ればできなくもないですが、めっちゃくちゃめんどいです。

パッケージのアップデートも同時にやっておく

$ 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

rosdepの初期化

$ sudo rosdep init
$ rosdep update

catkinにworkspaceを制作

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

ross_commのインストール

$ 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

ビルドに必要だけど初期では有効になっていないパッケージをインストールする

サイトに沿ってやっていくとここを忘れがち。
$ mkdir ~/ros_catkin_ws/external_src
$ sudo apt-get install checkinstall cmake
$ sudo sh -c 'echo "deb-src http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi" >> /etc/apt/sources.list'
$ sudo apt-get update

collada-dom-devのインストール

wheezy組の人がここを見ていることはないと思うけれど、そっち系の人はこの前にまだ手順があります。
普通の人は関係ないです。

$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-filesystem-dev libxml2-dev
$ wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz
$ tar -xzf collada-dom-2.4.0.tgz
$ cd collada-dom-2.4.0
$ cmake .
$ sudo checkinstall make install

なんか入力を求められるので、Enterを押した後、2を押してcollada-dom-devと入力する。その後またEnterを押す。

さてここでパッチの問題が出てくる

http://www.garunimo.com/program/linux/linux23.xhtml
ホームディレクトリへコピーして、パッチを当てる。
$ cd ~/ros_catkin_ws/src/robot_model/collada_urdf/
$ patch -p1 < ~/0001-fixed-arm-build.patch[/javascript]

collada_urdfのファイルがない?

パッチを当てようとしたものの、なぜかこんなファイルが存在しない。
アップデートでなくなったか?と思ったが、改めて考えてみたらそうでもなさそうだ。

こちらはjessie向けのインストール作業のメモだが、wheezyではこの手順の前に2つパッケージをインストールすることになっている。
たぶんそいつらが悪さをしているんだろう。
結局最後までやってみて、上手くいったから、今回は無視をすることにする。

依存関係を元に戻す

$ cd ~/ros_catkin_ws
$ 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

ここでのエラーについて

尋常じゃない時間がかかった挙句、多分失敗します。
この理由はどうやらメモリー不足のようなので、以下の方法を使って解決します。

Swapファイルの容量を変更

ひどいエラーだ。
気づいてはいたが、参考サイトが少なくて何もできずに1日ダメにした。
エラー内容は以下

<== Failed to process package 'roscpp': Command '['/opt/ros/indigo/env.sh', 'make', '-j2']' returned non-zero exit status 2Reproduce this error by running:==> cd /home/pi/ros_catkin_ws/build_isolated/roscpp && /opt/ros/indigo/env.sh make -j2

Swapの作り方は以下を参考にしました。
http://tai1-mo.blogspot.jp/2013/06/raspberry-piswap.html

現在の容量はこれで見られます。

$ swapon -s

こちらを使って正常にメモリーが操作できたか確認してください。

$ sudo service dphys-swapfile stop
$ sudo leafpad /etc/dphys-swapfile

CONF_SWAPSIZE=100となっているところをCONF_SWAPSIZE=1024に変えて保存。

$ sudo service dphys-swapfile start

この後メモリーが増えているか確認してください。

また、SD寿命とかの関係で、SWAPサイズは戻したほうがいいような気がするんだけど、リビルドするときにいちいち帰るの面倒臭いからなぁ。

ここまできたらもう一度ビルドし直す。

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

多分できる。
できなかったらオプションを足してやってみる。

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2

ここが通ればもう少し!

通った時はめっちゃ嬉しかった。泣きそうになるくらい疲れてた。

動作開始確認作業

呪いみたいのもん。

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

追加パッケージの補強

アップデートで追加された奴らのインストール。

$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall

このあと

$ wstool merge -t src indigo-custom_ros.rosinstall
$ wstool update -t src

ここまででアップデートが完了。

$ 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

お疲れ様でした!!!!!

動作確認

$ roscore

上手く動いたらcntrl+cで終了。

最後まで上手く行った時はめっちゃ嬉しかった!!!!!!なんというか開放された感が満載でした。

本当に長かった。4日間、貴重なゴールデンウィークをぶっ潰してのインストールでした。天気がいいのにもかかわらず家、というかパソコンの前に座り続けるのはとてもつらいことでした。

そもそもインストールして何すんだって話ですけど、なんかこれが目標みたいになってしまっていて、何すればいいかわかんなくなってきた。

しばらくはUbuntuでもインストールして遊ぼうかな。

Ubuntu、インストールしてみました。