[ODE] move body and encapsulated objects in ODE
Sharad Gupta
sharadgupta at ariworld.com
Wed May 3 05:16:06 MST 2006
Hi,
Thanks a lot for the info, Jon. I am able to run my first integeration. I
placed 5-6 containers in the air and because of the ODE gravity, they came
down falling and then toppled after colliding with each other. just got
thrilled to see that happening.
However i am facing some problems like,
1. After falling, my containers are going inside each other quite a bit? I
changed the timestep (dWorldQuickStep (theWorld,0.1);) increased the ERP etc
but not much difference. This is how i am creating my world and object
void CreateODEObject()
{
body = dBodyCreate(theWorld);
dMass m;
dMassSetBox (&m,1,12.191,2.591,2.438); // these are the actual l,w,h of my
container
geom= dCreateBox (theSpace,12.191,2.591,2.438);
dBodySetMass (body,&m);
dBodySetData(body, (void*)odeObj->noOfGeoms);
dGeomSetBody( geom, body);
}
void InitODE()
{
theWorld=dWorldCreate(); theSpace=dHashSpaceCreate(0);
theJointGroup=dJointGroupCreate(0);
dWorldSetGravity(theWorld,0,-2,0);
dWorldSetCFM (theWorld,1e-5);
dWorldSetAutoDisableFlag (theWorld,1);
dWorldSetContactMaxCorrectingVel (theWorld,0.1);
dWorldSetContactSurfaceLayer (theWorld,0.001);
dCreatePlane (theSpace,0,1.0,0,0);
//dWorldSetERP(theWorld, 0.8);
}
and finally this is how i am setting my contact properties in callback. I
dont want my cargo containers to bounce.
dContact contact[MAX_CONTACTS];
for(i=0;i<MAX_CONTACTS;i++){
contact[i].surface.mode = dContactBounce; contact[i].surface.mu =
dInfinity;
contact[i].surface.mu2 = 0;
contact[i].surface.bounce = 0.05; contact[i].surface.bounce_vel = 0.1;
//contact[i].surface.soft_cfm = 0.01;
}
2. I could not understand what is the use of dMassRotate and dMassTranslate.
e.g. i have a body and a box geom. Now in this context how can i use
massrotate and mass translate functions.
3. Also please advise on how can i specify in ODE my container which is
partly loaded on one side i.e. its CG is not actually in the center but more
towards one side of it.
Regards,
/Sharad
----- Original Message -----
From: "Jon Watte (ODE)" <hplus-ode at mindcontrol.org>
To: "Sharad Gupta" <sharadgupta at ariworld.com>
Cc: <ode at q12.org>
Sent: Monday, May 01, 2006 11:02 PM
Subject: Re: [ODE] move body and encapsulated objects in ODE
>
>
> Sharad Gupta wrote:
>
>> 1) Cordinate system. Do i need to interchange my coordinates. I reason i
>
> The coordinate system in ODE is whatever you want it to be. If you set
> gravity to 0,-9.82,0, then it's Y up, with earth gravity, assuming SI
> units.
>
>> 2) Since i am using triangulated meshes, do i need to use
>> boxes/cylinders/spheres etc to build corresponding shape in ODE. My
>
> Proxy objects will always perform better (use less CPU) and be more
> stable. This is true for all physics APIs. Arbitrary, concave, triangle
> mesh geometries are typically only used for static objects so that you
> don't get trimesh/trimesh tests, only proxy/trimesh tests.
>
> This means you probably have to model a separate representation of your
> objects using proxy objects, and store that in the .X file, or a parallel
> data file. That's what most games do.
>
>> 3) How to do setposition of body and its many geoms's? Initially at the
>
> Anything that moves with relation to something else is its own body. You
> connect bodies with joints. The body is always positioned at the center of
> gravity for that component of the object. Geoms are positioned relative to
> a body, either using the new geom position functionality, or using the
> geomtransform geom.
>
> If a body moves, then the geoms that are attached to the body will move.
> However, you should not setposition on bodies, as that will introduce
> instability in the simulation (especially if there are joints or
> collisions involved). Instead, let ODE run the simulation, and get the
> position out of ODE.
>
>> 4) In the ODE text_boxstack example, i could not understand this bit for
>> composite objects under case 'x';
>
> The "offset" part of dMass is ignored by bodies; the body-local origin is
> always the center of gravity.
>
> Cheers,
>
> / h+
>
More information about the ODE
mailing list