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でもインストールして遊ぼうかな。