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が変化してロボットを動かせます.