[ODE] can"t get friction to lift an object with a robot arm

pastor pastor at duerer.usc.edu
Sun Sep 2 11:31:41 MST 2007

hey there,

I am currently working on making a robot arm grasp an object and place it
somewhere. I calculate the arm configuration externally and in order to get
some interaction between the robot and the boxes (modeled as bodies) I set
some geoms (dCappedCylinder) around the fingers and update their position
and orientation according to the current robot configuration. During
grasping everything seems to work.. the finger collide with the object an
pushes it into the right directions... after closing the gripper the
collision remains but I cannot lift this stupid box. I played with all the
parameters... what am I doing wrong ? Waht needs to be done to the amount of
force which allows me to lift an objet... the pase some code (which shows
the current set of parameters... I had a lot of different setttings...) so
that you have some idea what I really do... I hope this helps. I also
include a little movie which shows this behaviour...

http://manet.usc.edu/~pastor/miss_placing.avi miss_placing.avi 

hope you understand my problem... 

I really need some advice ! so... thanks for any help

peter.pastor at gmail.com

---------------------------- code
static void nearCallback (void *data, dGeomID o1, dGeomID o2) {
  dBodyID b1 = dGeomGetBody(o1);
  dBodyID b2 = dGeomGetBody(o2);

  dContact contact[MAX_CONTACTS];

  int i;
  for(i=0; i<MAX_CONTACTS; i++)
      /*       contact[i].fdir1[0] = 0.3; */
      /*       contact[i].fdir1[1] = 0.3; */
      /*       contact[i].fdir1[2] = 1.0; */
      /*       normalize3DArray(contact[i].fdir1); */
      /*       // contact[i].fdir1[3] = 0; */
      contact[i].surface.mode = /* dContactMotion1 | *//*  dContactApprox1 |
*/ dContactSoftERP /*| dContactSlip1 | dContactSlip2 */ /* |dContactFDir1 */
|/* dContactBounce | */ dContactSoftCFM  | dContactMu2;
      contact[i].surface.mu = dInfinity;
      //contact[i].surface.mu = 1;
      contact[i].surface.mu2 = dInfinity;
      // contact[i].surface.bounce = 0.005;
      // contact[i].surface.bounce = 0;
      // contact[i].surface.bounce_vel = 0.8;
      // contact[i].surface.soft_cfm = 1e-04;
      contact[i].surface.soft_cfm = 1e-05;
      contact[i].surface.soft_erp = 2; 

  int numc = dCollide(o1, o2, MAX_CONTACTS, &contact[0].geom,
  if(numc) {
    for(i=0; i<numc; i++) {
      dJointID c = dJointCreateContact(World, contactgroup, contact + i);
      dJointAttach(c, b1, b2);

View this message in context: http://www.nabble.com/can%22t-get-friction-to-lift-an-object-with-a-robot-arm-tf4363211.html#a12436406
Sent from the ODE mailing list archive at Nabble.com.

More information about the ODE mailing list