[ODE] Re: quick ODE question

Russ Smith russ at q12.org
Fri Nov 2 11:23:45 MST 2001


hi,

> I am trying to use you physics engine to build some
> legged creatures for a game I am putting together in
> my spare time. So far it's been an excellent help. The
> only thing I can't seem to do is to put hard
> constraints and motor forces on ball and socket
> joints, their does not seem to be any
> dJointSetHingeParam equivalent for ball and socket
> joints. Can you do this , is their anyway of getting a
> multi-directional joint with hard constaints and
> actuators in ODE.

currently there is no ball-and-socket motor or joint limit. it's
near the top of my list of things to do before the v0.03 release.
currently you can 'fake' joint B&S joint limits using contact joints
between the two bodies.

> I have a physics background myself I would be
> ineterested in contributing to ODE, please send some
> more info.

look at the TODO file in the latest snapshot to get an idea of what is
needed. the biggest areas i need help in right now are:

  * multi-platform build environments - perhaps using GNU configure 
    on unix.
  * numerical optimization on various platforms. actually this is
    just a matter of running the scripts in the "fbuild" directory
    on various platforms, they will automatically spit out optimized
    matrix source code. those scripts should be automated some more
    and integrated with the build process.

some other things are:
  * more constraints: different kinds of vehicle suspensions and
    drivetrains (need these to model car, trucks, tanks, engines,
    etc etc). good math skills needed for this.
  * optimizations of various kinds. the big computational costs per
    time step in ODE are (1) factorizing a large matrix, which is
    O(n^3), and (2) multiply-accumulating a bunch of small (6xn)
    matrices. both of these things could use some SIMD optimization,
    i would like to do Intel XMM and AMD 3DNow.
  * more test cases. i know this doesn't sound interesting at all, but
    it's important to ensure that ODE is actually simulating somthing
    close to reality. trust me, it's easy to screw up - bugs in the
    physics modeling can go undetected virtually for ever. test cases
    are important to give people confidence in ODE for engineering
    work.
  * higher order integrators. the current integrator is 1st order
    semi-implicit, so it's stable but inaccurate. i'd like to get some
    semi-implicit runge-kutta integrators going. this is also necessary
    for any serious engineering work. math skills needed here too.
  * collision detection. this is computational geometry, not dynamics,
    but it is still very important. so we need for geometric classes,
    such as convex polyhedral objects, triangle soups, terrains, etc.

some notes about optimization: two things take up 80-90% of the time in
a "typical" system.
  1. filling in a "system matrix" using data from the rigid bodies and
     constraints.  this involves lots of relatively small matrix
     multiplications, with dimensions around 1..6. this operation is
     about O(n)+O(m), where n is the number of rigid bodies and m is
     the number of joints (constraints).
  2. factorizing that matrix. the matrix is symmetric positive definite
     so i use an L*D*L' factorization. this operation is O(m^3), so as
     m goes up this starts to dominate.
actually i have not done anything at all yet on assembly optimization,
this is a fresh area to work on.

russ.

--
Russell Smith
http://www.q12.org




More information about the ODE mailing list