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!
Binary download of OpenSim libraries.
All of this compiling libraries and modifying configuration files sucks! Don't you have binaries for my Pi?
For those who want a snap-shot of the configuration files that I have altered above. you may download this file and unzip it into your /opensim/bin folder to replace the .config files and add the proper .so files into your /opensim/bin/lib/ folder. We will however give you the lecture that most in the linux community will do when it comes to binary files. Which is binary files are typically compiled for a specific environment (in our case that environment is Debian Jessie Raspberry Pi Armv7.) The results may be unstable and unpredictable if you attempt to install these binary libraries onto another Linux kernel. It should also be noted that you are trusting this website to provide the binaries instead of compiling from source yourself which could prove dangerous. Trust no one online and whenever possible always compile your own code.
+++END OF LINE