YARPとiCub_SIMをUbuntu 12.04 (presice) にインストール

YARPとiCubシミュレータをUbuntu 12.04にインストールしてみる

YARPを入れる

まず最初にみるべきはここ.
http://wiki.icub.org/wiki/Manual
iCubについて詳しい.

YARPはiCubで使われているミドルウエアで,通信や同期,データ形などのプログラミング用インターフェースを,プラットフォームに依存しない形でラッピングしてくれる.
だから,macだからとかwinだからとかで,コードをifdefで区切る必要はなくなる(はず).
そういうものがミドルウエアと考えてくれてかまわない.

んで,YARPについては,YARPの専用ページがあるんだが,iCubシミュレータを使うには,インストールするときは,ここは参考にならなかった.
http://wiki.icub.org/yarpdoc/index.html

たぶん,YARPやiCub_SIMは,Ubuntu 10.04くらいのバージョンで対応が止まってる.
たしかにリポジトリがあるんだけど,単純なバージョン間の依存関係の記述がミスっていて,一筋縄では入らなくなってる.
僕はソースコードから入れた.その方が,内部まで見通せるし,それが目的だったからね.

ソースからYARPを入れる

いちおう,ここにマニュアルがあるんだけど,情報が散在しているのがちょっと困る.
http://wiki.icub.org/wiki/Linux:Installation_from_sources
上から順にやっていけばいいはずなんだが...

まず,YARPが依存しているライブラリを全部入れるんだけど,ここで結構つまづく.
この辺の依存関係の記述がちゃんとなおってないからだ.

なので,ここはapt-getではなくaptitudeにして,いろいろ無理矢理なことを自動でやってもらうことにする.
依存関係の記述とかは,iCubのリポジトリを追加する方が早いので,そっちを使うことにする.

まず,以下のコマンドでリポジトリを追加する.

sudo sh -c 'echo "deb http://www.icub.org/ubuntu presice contrib/science" > /etc/apt/sources.list.d/icub.list'
sudo apt-get update

基本的なツールとか入れる.

sudo apt-get install cmake libace-dev git cmake-curses-gui subversion

んで,aptitudeを入れる

sudo apt-get install aptitude

んで,aptitudeでライブラリ群をインストールするんだけど,コンフリクションがおこる.

sudo aptitude install icub-common

ここでは,いくつかのパッケージをダウングレードするオプションを選ぶようにする.

んで,YARPを入れる.

cd /home/user/
 git clone git://github.com/robotology/yarp.git

userの部分は自分の名前にしてください.その辺のことがわからない人は,ググってください.それが面倒だと思う人は,この仕事は向いていないと思います.

んで,buildディレクトリを作ってcmake.

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCREATE_GUIS=ON -DCREATE_LIB_MATH=ON -DCREATE_OPTIONAL_CARRIERS=ON -DENABLE_yarpcar_bayer_carrier=ON ../
make
sudo make install
この面倒くさいオプションの話はYARPの最初のマニュアルには出てこない.あとで知ることになるが.

iCub入れる

次にiCubのコードを入れる.結構おおきなサイズになるので要注意.
cd /home/user/
svn co https://svn.code.sf.net/p/robotcub/code/trunk/iCub
<;/pre>
なぜこちらはgitは無いのか・・・

ここで作られるいくつかのディレクトリの中で,mainがiCubの本体
cd iCub/main
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_icubmod_cartesiancontrollerclient=ON -DENABLE_icubmod_cartesiancontrollerserver=ON -DENABLE_icubmod_gazecontrollerclient=ON -DENABLE_icubmod_debug_InterfaceClient=ON
make
sudo make install

これでビルドはできるはず.
依存関係が解決できてないと,なにもエラーを残さずにビルドして,必要なモジュールができていないというひどい仕様.REQUREをつけておいてほしい.

iCub_SIM起動

iCub_SIMと打てば起動するはずなのにしない.これもいろいろと理由が.

まず,ICUB_ROOTという環境変数の設定が必要になる.
僕は~/.bashrcに以下の行を追加.

export ICUB_ROOT=/home/user/iCub/main

再度設定を読み込むときは

source ~/.bashrc

設定ファイルがいろんなところに散在してるので,ソースツリーをしていするのが楽ではあるんだが,

次に,ICUB_ROOT.iniの場所を微修正

cp ${ICUB_ROOT}/app/ICUB_ROOT.init ${ICUB_ROOT}/

こういうので意外とはまるのではないだろうかね.

ほい.準備完了

$ yarp server

別のターミナルで

$ iCub_SIM

これでシミュレータ起動しました.

動作確認 (robotMotorGui)

各間接をちょこっとだけ動かせます.

$ robotMotorGui

出てくるウィンドウのエディットボックスを変更.icubからicubSimにします.
んで,「select Parts and Click」というボタンを押すと,GUIが変化してロボットを動かせます.