UbuntuにODEをインストール

※Qrunchからの引っ越し記事です

はじめに

授業で使うためUbuntu 18.04.2 LTSにOpen Dynamics Engineを導入した。
基本的にこのサイトを参考にしたが、エラーが発生したので対処法をまとめた。

「ODE導入」hikaru149の日記
https://hikaru149.hatenablog.com/entry/20180402/1522639370

Open Dynamics Engineとは

ODE(Open Dynamics Engine、オープン・ダイナミクス・エンジン)とは、オープンソース方式で開発されている物理演算エンジンである。BSDライセンスLGPLの両ライセンスが適用されている。コンポーネントとして動力学演算部分と衝突検出演算部分から構成されている。流体シミュレーション・布シミュレーション・軟体の表現はサポートされていない。
wikipediaより引用(https://ja.wikipedia.org/wiki/Open_Dynamics_Engine)

導入手順

  1. ODEのダウンロード

ここからダウンロード
https://sourceforge.net/projects/opende/

ダウンロードしたらhomeに展開しておく

  1. インストール設定

cd ode-0.13
sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev
./bootstrap
./configure
./configure --with-trimesh=opcode --enable-new-trimesh --enable-shared --enable-release --with-x --enable-double-precision --with-libccd --enable-libccd
make

ここでエラーが発生

>`demo_jointPR.cpp:332:36: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]`  
>`                         argv[j] == '\0' ||  // We should have a path here`  

どうやらヌル文字ではなくヌルポインタを使わないと行けないらしい。

  1. ライブラリの書き換え

ode-0.13/ode/demo 内の
"demo_jointPR.cpp"332行目
"demo_jointPU.cpp"582行目
"demo_piston.cpp"の662行目
'\0'NULLに書き換える。(※2020/05/07追記、今回はなぜか(char*)0でうまくいきました)

 

 

f:id:negizoku:20200920224002p:plain

  1. 再度コマンド入力
    make
    sudo make install
    こんな画面が表示されたらだいたい成功

    残りのコマンドも打っておく

sudo cp -r include/drawstuff /usr/local/include/
sudo cp drawstuff/src/.libs/libdrawstuff.* /usr/local/lib
sudo ldconfig
sudo mkdir /usr/local/lib/drawstuff.textures
sudo cp drawstuff/textures/* /usr/local/lib/drawstuff.textures/

プログラムのコンパイル方法

ライブラリオプションとインクルードオプションを設定する必要がある。
下記コマンドを使えばOK
g++ ファイル名 -I/usr/local/include/ode -I/usr/local/include/drawstuff -DdTRIMESH_ENABLED -DdDOUBLE -lode -ldrawstuff -lGL -lGLU -lglut -lX11