[ODE] Modelling robotic arm grip

Antonio Tejada Lacaci wildfred at teleline.es
Wed May 14 22:06:02 2003


On Tue, 6 May 2003 18:09:18 -0500 (CDT), David Whittaker wrote:

Hi David, 

Thanks for your answers, you can see a video of my current
implementation at 
http://www.telefonica.net/web/atejadalacaci/pfc/pfc.html

>The way I understand it, you are trying to implement only the "hand" of
>your robot, with no forces in ODE's system to keep the hand closed over
>the object it is picking up.  So as soon as you touch the object, the hand
>would be relaxed and not have enough grip to counteract gravity, so you
>turn gravity off to counteract this effect.

Yes, you are right. Disabling gravity on grip contact was one of the
things I tried. Not very nice results, though.

What I've finally done is to keep it simple: I don't model the grip,
when an object is grabbed, I disable its body and detach it from the
geometry. While it's grabbed I update the geometry using my kinematics
(I use ODE's collision system) and when it's release I reattach it to
the body.

Maybe in the future, given enough time, I'll try other alternatives.

>Let me suggest an alternative: implement all of the hand as joints and
>motors in ODE.  The last body in the arm could also be implemented, and
>you could update its position/orientation from your kinematic calculations
>(a pure ODE joint motor solution would be more stable though).  

I thought about that, but I was afraid of complicating the dynamics
simulation, which at the end of the day is just an aesthetic part of
my project. Now that I've implemented the simple alternative, I'm
already having to use a 0.02 timestep because of problems with stacked
geometry (with bigger timesteps it begins to shake and crumble), so I
don't really want to complicate matters using joints.

>Another idea, maybe slightly simpler, would be to only model the
>fingertips of the hand.  Each step, set their velocity to the calculated
>velocity from the kinematics calculations (just divide the change in
>position by the timestep -- again, directly setting position, orientation,
>and velocities is known to cause instability in some systems).  You may
>also need to apply a force towards the center of the object being lifted
>to keep the fingers in contact with the object.

That was my original idea and one of the tests I did. My problem with
that test was that I was using a mu of 0.1 instead of dInfinity when
generating contacts from collisions against the grip geometry. Once I
changed mu, it sort of worked ok.

>
>Hope that helps,
>David
>


Cheers!

Antonio Tejada Lacaci