ロボットシミュレーション on Mac

こんばんは、東京分室の雑用係、西田です。
雑用の中で、意外に多いのが、開発前の環境構築ですよね。

そんな環境構築の中でも、ロボットが手元にない人でも楽しめるのが、OpenDynamicsEngineではないでしょうか?
物理演算を行うオープンソースライブラリです。

たまにニコニコ動画やyoutubeでもODEを用いた動画がUPされていて、いろいろな現実にはできなさそうな実験を仮想環境のシミュレータの中で行われています。

 

今回は、そんなODEのインストールから動作確認までの流れをご説明していきます。

 

ODEのMacへのインストール

ODEサイトからode-0.13をダウンロード。( https://sourceforge.net/projects/opende/files/ODE/ )

そのあと、テキトーなところ(下は僕の場合)

$ ~/Mybuild/src

に展開して、

$ tar xvjf ~/Mybuild/src/ode-0.13.tar.bz2
$ cd ~/Mybuild/src/ode-0.13

このままでインストールすると、automakeがないとか、libtoolizeがないとか言われる。
(automakeはhomebrewでインストールしておく)

$ ./bootstrap
Please make sure that you use automake 1.11 or later
Warnings about underquoted definitions are harmless
On OSX, install latest libtool, as the OS provided glibtoolize will not work
Running aclocal
Running libtoolize
./bootstrap: line 10: libtoolize: command not found

これは、mac標準のlibtoolizeを利用せずにglibtoolizeを利用するため。
bootstrapの12行目から14行目までをコメントアウトされていた部分を復活。

$ vim bootstrap

10 # on Mac libtoolize is called glibtoolize
11 LIBTOOLIZE=libtoolize
12 #if [ uname -s = Darwin ]; then
13 # LIBTOOLIZE=glibtoolize
14 #fi

⬇️

10 # on Mac libtoolize is called glibtoolize
11 LIBTOOLIZE=libtoolize
12 if [ uname -s = Darwin ]; then
13 LIBTOOLIZE=glibtoolize
14 fi

インストールコマンドを実行。

aclocal, glibtoolがない場合は、

$brew instal automake
$brew install libtool

でautomake, libtoolをインストールすればよい。

$ ./bootstrap
Please make sure that you use automake 1.11 or later
Warnings about underquoted definitions are harmless
On OSX, install latest libtool, as the OS provided glibtoolize will not work
Running aclocal
Running glibtoolize
glibtoolize: ./config.guess’ is newer: use –force’ to overwrite
glibtoolize: ./config.sub’ is newer: use –force’ to overwrite
glibtoolize: ./install-sh’ is newer: use –force’ to overwrite
Running autoheader
Running automake
Running autoconf
Running bootstrap in ou directory
Running bootstrap in libccd directory
Now you are ready to run ./configure

コンフィグでインストールする。自分のインストール先を指定する。
権限なしと言われた場合はsudoをつけると通る。
XXXを自分のディレクトリ名に変更して実行すること。

$ ./configure -prefix=/Users/XXX/Mybuild/local/ -enable-double-precision -enable-debug
$ make
$ make install

ビルドが完了したのでデモを実行。

$ ode/demo/demo_dball

ここから先は、あとで動作を確認します。

drawstuffとtexturesを移動。

drawstuff:
R : ~/Software/src/ode-0.13 $ mkdir ~/Software/local/include/drawstuff
R : ~/Software/src/ode-0.13 $ cp include/drawstuff/*.h ~/Software/local/include/drawstuff/
R : ~/Software/src/ode-0.13 $ cp drawstuff//src/libdrawstuff.la ~/Software/local/lib/
R : ~/Software/src/ode-0.13 $ cp drawstuff/src/.libs/libdrawstuff.a ~/Software/local/lib/
R : ~/Software/src/ode-0.13 $ mkdir ~/Software/local/share/drawstuff

ビルドコマンド:
g++ hoge.cpp -I ~/Software/local/include/ ode-config --cflags --libs -ldrawstuff -framework GLUT -framework OpenGL

ode-configへのpathを追加→bash_profile

export PATH=$HOME/Software/local/bin:$PATH

これで、自分だけのロボットシミュレーション環境が完成です☆
ロボットのモデルは自分で作る必要がありますが、以下のような感じで関節モデルを設計して、肉付けをすればOKです。

まぁ、なんでgazebo使わないの?とか、Blenderに追加ライブラリ入れれば?とか、MATLAB買え!、とかいろいろ意見はあるのですが、軽量で追加ソフトなしで動くODEが僕は一番好きだというお話。
シミュレータはシミュレータで、実機とは必ず乖離があるので、シミュレーションだけでなく実機もうまく制御する必要がありますねー。
今日はここまでです。