ODE Physics OpenSim Install

ubODE / ODE physics installation for OpenSim:

Update 11/25/2015: ODE / OpenDyanamics engine instructions have been updated to reflect the following changes to OpenSim 9.0 after the merging of code. If you are still looking for the original instructions feel free to click here. as of 11/26/2015 a massive update to the ODE physics called ubODE was introduced to many of the OpenSim environments. Making it run better then bullet on slower machines such as the Pi.

Lets get started in compiling/installing the OpenDynamics libraries.

For those running Raspberry Pi v1 and/or want better collision detection for mesh objects or simply don’t want OpenSim to eat CPU all of the time like BulletXNA does. Continue reading onwards to OpenDynamics physics.

OpenSim System.DllNotFoundException Physics ODE errors!

You will get this error if you decide to not use bullet and go with the alternative OpenDynamics Physics by modifying your OpenSim.ini as follows at around line 241:

    ;; Choose one of the physics engines below
    ;# {physics} {} {Select physics engine} {BulletSim OpenDynamicsEngine basicphysics POS} BulletSim
    ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before.
    ;; It continues to provide a workable physics implementation.  ODE does not currently support varregions.
    ;; basicphysics effectively does not model physics at all, making all objects phantom.
    ;; Default is BulletSim
    physics = OpenDynamicsEngine
     ;physics = BulletSim
    ; physics = basicphysics
    ; physics = POS

Then upon running mono OpenSim.exe you get Physics ODE libraries not found errors!

Telling Mono where to go.

Oh no! It can’t find the /lib32/libode.so file! Well, that’s partially because we’re not on a x86 desktop here. But also partially because Ode.NET.dll.config (opensim 8.x) or OpenSim.Region.PhysicsModule.ubOde.dll.config and OpenSim.Region.PhysicsModule.ubOde.dll.config (two files in opensim 9.x) in the root of your ./opensim/bin folder is not pointed correctly! Here’s what the original file looks like:

<configuration>
  <dllmap os="osx" dll="ode" target="lib64/libode.dylib" />
  <dllmap os="!windows,osx" cpu="x86-64,ia64" dll="ode" target="lib64/libode-x86_64" />
  <dllmap os="!windows,osx" cpu="x86" dll="ode" target="lib32/libode" />
  <dllmap os="!windows,osx" cpu="ppc64" dll="ode" target="lib64/libode-ppc64" />
  <dllmap os="!windows,osx" cpu="s390x" dll="ode" target="lib64/libode-s390x" />
</configuration>

And here’s what mine looks like on my Raspberry Pi (You can run “nano Ode.NET.dll.config” to edit this file right on your Pi) :

<configuration>
  <dllmap dll="ode" target="lib32/libode.so" />
</configuration>

I don’t care about OS detection so I just removed that flag! I just want it to point to my libode.so in the root of my /opensim/bin/ folder!

The file name has now changed away from the ode.dll file but still CRASHES HORRIBLY in a different way because it’s not compiled for this processor.

Compiling the OpenDynamics Engine for OpenSim.

I should note that if you do a find / -name “libode.so” from installing the libode-dev package from apt-get you’ll probably find a libode.so file that you could copy into your OpenSim folder. Unfortunately when I tried that every time I logged in my avatar would crash OpenSim. So legitimately it’s better if you compile the library yourself on the Pi. Following OpenSim build instructions I do the following:

sudo apt-get install automake libtool gcc
git clone git://opensimulator.org/git/opensim-libs
cd opensim-libs/trunk/unmanaged/OpenDynamicsEngine-0.10.1
cp ./autogen.sh ../OpenDynamicsEngine-0.13.1mod/autogen.sh
cd ..
cd OpenDynamicsEngine-0.13.1mod
sudo chmod 777 autogen.sh
sh autogen.sh
./configure --with-trimesh=opcode --disable-asserts --enable-shared --disable-demos --without-x --disable-threading-intf
make
cp ./ode/src/.libs/libode.X.X.X.so /opensim/installation/directory/opensim/bin/lib32/libode.so

 

Once that is done. your ODE Physics should now work without crashing. YAY!

Click here to return back to the OpenSim tutorial for Raspberry Pi.

Archived and old ODE Physics Installation for OpenSIM:

Note: In light of the latest additions of code to OpenSim group a group “Avination” the ODE Physics library has new life brought to it. This leads to the old instructions ready to go into the archives for anyone who may want to compile the ODE Physics as described.Since OpenSim version 7.6. ODE Physics was initially going to go into the backburner as simply a backup copy in case Bullet failed. But now it’s being pushed up to the front again.

This is the old instructions to build ODE Physics for any version of OpenSim pre-dating 8.2.x . It is kept here simply for archival reasons.

OpenSim System.DllNotFoundException Physics ODE errors!

You will get this error if you decide to not use bullet and go with the alternative ODE Physics by modifying your OpenSim.ini as follows at around line 241:

    ;; Choose one of the physics engines below
    ;# {physics} {} {Select physics engine} {BulletSim OpenDynamicsEngine basicphysics POS} BulletSim
    ;; OpenDynamicsEngine was the previous default physics engine in OpenSimulator 0.7.6.1 and before.
    ;; It continues to provide a workable physics implementation.  ODE does not currently support varregions.
    ;; basicphysics effectively does not model physics at all, making all objects phantom.
    ;; Default is BulletSim
    physics = OpenDynamicsEngine
     ;physics = BulletSim
    ; physics = basicphysics
    ; physics = POS

Then upon running mono OpenSim.exe you get Physics ODE libraries not found errors!

Telling Mono where to go.

Oh no! It can’t find the /lib32/libode.so file! Well, that’s partially because we’re not on a x86 desktop here. But also partially because Ode.NET.dll.config in the root of your ./opensim-0.7.6/bin folder is not pointed correctly! Here’s what the original file looks like:

<configuration>
  <dllmap os="osx" dll="ode" target="lib64/libode.dylib" />
  <dllmap os="!windows,osx" cpu="x86-64,ia64" dll="ode" target="lib64/libode-x86_64" />
  <dllmap os="!windows,osx" cpu="x86" dll="ode" target="lib32/libode" />
  <dllmap os="!windows,osx" cpu="ppc64" dll="ode" target="lib64/libode-ppc64" />
  <dllmap os="!windows,osx" cpu="s390x" dll="ode" target="lib64/libode-s390x" />
</configuration>

And here’s what mine looks like on my Raspberry Pi (You can run “nano Ode.NET.dll.config” to edit this file right on your Pi) :

<configuration>
  <dllmap dll="ode" target="lib32/libode.so" />
</configuration>

I don’t care about OS detection so I just removed that flag! I just want it to point to my libode.so in the root of my /opensim/bin/ folder!

The file name has now changed away from the ode.dll file but still CRASHES HORRIBLY in a different way because it’s not compiled for this processor.

Compiling the OpenDynamics Engine for OpenSim.

I should note that if you do a find / -name “libode.so” from installing the libode-dev package from apt-get. You’ll probably find a libode.so file that you could copy into your OpenSim folder. Unfortunately when I tried that. Every time I logged in my avatar would crash OpenSim. So legitimately it’s better if you compile the library yourself on the Pi. Following OpenSim build instructions I do the following:

sudo apt-get install automake libtool gcc
git clone git://opensimulator.org/git/opensim-libs
cd opensim-libs/trunk/unmanaged/OpenDynamicsEngine-r1755
sh autogen.sh
./configure --enable-shared --enable-release --disable-demos --without-x --enable-old-trimesh
make
cp ./ode/src/.libs/libode.so /opensim/installation/directory/opensim/bin/lib32/libode.so

Once that is done. your ODE Physics should now work without crashing. YAY!

[quote]Can I just get the libode.so from you?[/quote]

Libode binary download.

Most people in the Linux community will give you the lecture of how pre-compiled binaries and slamming them into other linux environments can produce unstable results. They are right! But for those who do not want to go through all of the “fun” of compiling. We uploaded pre-compiled version is available right here. It was originally compiled on Raspbian with a Raspberry Pi v1 unit. It does work on the banana Pi which has a ARMv7 processor. It should work on the Pi v2 just fine. If you have a different processor other then ARM or running another flavor of Linux. The pre-compiled version may not work out for you.

Click here to return back to the OpenSim tutorial for Raspberry Pi.

Leave a Comment