[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