# [ODE] Kinematic objects

Jaroslav Sinecky jsinecky at tiscali.cz
Fri Oct 28 15:06:05 MST 2005

```> 2) Calculate the needed physical parameters (linear velocity, ...) from
> data given in the kinetic body (mass, ...) and from the velocity (delta
> of positions)

Hi,
really the step 2 seems a problem. I don't understand it very well, you
should compute needed velocity from given kinematic body mass...? What more
is there where the 3 points in the brackets?
If you want the racket to follow prescribed way and you would simulate it as
a body with normal racket mass, you would have to figure out forces powering
the racket against the ball to move it to desired position during next ODE
step, which I see as a difficult inverse dynamics task (at least in general
case). And I suppose you don't want to model the skeleto-muscular system of
tennis player.

If we talk about the same - kinematic body with given authoritative motion,
smashing everything out of its way - I still think the simple concept of
moving geoms around could possibly work: you're right that you will miss
notion of velocity in normal direction at contact point (let's suppose
dContactMotion can do for tangent directions) but we could hope that contact
depth depenetration in each step will do the job, although... yeah...
probably less stable than with contact between 2 moving bodies. I imagine
the racket pushing the ball in front of it by means of depenetration,
abandoning it at some point and the ball continuing with the inertia given
to it during contact. You would need really small time step probably here.
You can even have feedback information from contact joint feedbacks.

Another way could be to model the racket as a body with really big mass, so
it just moves as a tank and correcting it's position/velocity at each step.
Or more precisly adding external force+torque so the body approaches the
desired state for the next step itself.
Then maybe once the ODE step is done, and you know all joint forces, you
could do some calculation to figure out more realistic feedback for the
kinematic body ie. what forces had the tennis player apply to racket (with
real racket mass) to make it follow its way. Ehm, I'm not sure, that's to
much to think for me at the moment.

BTW. Really heavy object meeting a light tennis ball at high velocity is not
like an ODE-friendly case, right?

Jaroslav

> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org]On Behalf
> Of Michael Lacher
> Sent: Friday, October 28, 2005 10:30 AM
> To: ode-list
> Subject: Re: [ODE] Kinematic objects
>
>
> Simply using a collider that is moved to reflect the kinematic objects
> position is not enough to correctly model the behavior of affected ODE
> bodies. ODE will need some notion of the kinematic objects velocity
> (linear and angular), mass and probably some other things to produce the
> correct forces if a contact occurs.
>
> The problem with ODE bodies resting on top of a moving kinetic body was
> already mentioned. But consider also the case where an ODE body is hit
> by a moving kinetic body (for example a ODE controlled tennis ball,
> beeing hit by a tennis racket that is attached to an animated player
> model). A big force should be applied to the ball, proleling it away
> from the racket, but instead ODE will just compute a force to remobve
> the collision and have the ball stick to the racket. Not the result we
> wanted at all.
>
> Conversely ODE should in the ideal case be able to provide some feedback
> to the kinematic body (accumulated incoming forces/torques) so that the
> simulation of the kinematic object can react to that if so desired.
>
> What would be needed is for ODE to roughly the following:
> 1) create a temporary body for the simulation
> 2) Calculate the needed physical parameters (linear velocity, ...) from
> data given in the kinetic body (mass, ...) and from the velocity (delta
> of positions)
> 3) Perform a normal physics update
> 4) Optionally call callbacks on the kinematic body reporting the state
> of the force and torque accumulators
> 5) delete the temporary body
>
> Of course all those steps could be done using what the ODE currently has
> to offer, but it might prove difficult for many of the users to actually
> calculate the numbers in step 2 by hand so it might be a good addition
> to have ODE do this internally.
>
> --
> Michael Lacher
>
> Gryps Engine: http://engine.hlw.co.at
> ODE commercial support: http://engine.hlw.co.at/odesupport.htm
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode

```