# [ODE] Kinematic objects

Jaroslav Sinecky jsinecky at tiscali.cz
Fri Oct 28 09:03:36 MST 2005

```Good point, the friction. If you just move static geoms around in each step,
you don't get correct friction on them. Fortunately what you call "moving
ground point" - don't we have the dContactMotion flag in ODE? (feature that
I have seen no use so far) Seems like perfect solution waiting for this
problem.

Jason, what happens if kinematic object hits the wall ... sounds to me like
the problem of "What happens if all-penetrating ball hits unpenetratable
armour ..."
If the object has prescribed motion and it hits a wall, then there must be
problem in your kinematic data. You could also ask what happens if it hits a
very very heavy object. I.E. where is the limit for forces that the
kinematic object generates pushing other objects out of it's way?

Jaroslav

> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org]On Behalf
> Of Erin Catto
> Sent: Friday, October 28, 2005 7:23 AM
> To: jason at sim8.com; 'ode-list'
> Subject: RE: [ODE] Kinematic objects
>
>
> I have implemented kinematic bodies in my engine. The requirement is that
> the engine has a notion of the kinematic body's velocity.
>
> For example, say you have a platform that moves from
> side-to-side. It might
> be convenient to make this platform kinematic so it's motion can be
> prescribed by an animation. Now put a physical box on top of the platform.
> Physical intuition says that friction coupling between the
> platform and box
> should cause the box to move with the platform. However, if the engine has
> no concept of the platform's velocity, the box will simply remain in place
> until the platform moves out from under the box.
>
> So getting an approximation of a kinematic body's velocity is
> easy enough. A
> finite difference of the position will work reasonably well. But there's a
> catch ...
>
> The difficulty is that the contact constraints and all joints must be
> modeled to handle a moving ground point. I found this to be too
> tedious and
> moved to a system that provides a 6dof constraint to move bodies
> around on a
> spline.
>
> Erin
>
> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org] On Behalf Of J.
> Perkins
> Sent: Thursday, October 27, 2005 12:45 PM
> To: ode-list
> Subject: [ODE] Kinematic objects
>
> Has anyone tried implementing something like Novodex's "kinematic"
> objects in ODE? A kinematic object is a dynamics body that is
> controlled by
> the host application, rather than the simulation. Each timestep, the app
> must call setPosition() on the body to move it around, external
> forces have
> no effect. Internally, Novodex computes a force to move the body
> to the new
> position. Any dynamics objects that are in the path of the object
> get pushed
> out of the way.
>
> I was thinking that I might be able to handle this by putting kinematic
> objects in their own ODE world. I use a separate world so I can have zero
> gravity for kinematic objects, while regular dynamic objects have
> a non-zero
> gravity. All of the collision shapes would go into one space, but
> if a body
> is flagged kinematic it is treated as static world geometry for
> the sake of
> the collision (I would pass NULL into dJointAttach() instead of the body
> handle).
>
> Does this sound reasonable? Am I missing anything obvious?
>
> Thanks!
>
> Jason
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode

```