[ODE] Modelling robotic arm grip
David Whittaker
david at csworkbench.com
Tue May 6 16:11:02 2003
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.
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). If you set
the axis of the hinges in the hand correctly, you could make it so setting
a positive velocity on all the joint motors closed the hand, and a
negative velocity opened it. Then the fmax of the joints would apply a
force between the hand and the object, which in turn would cause the
lateral friction to keep the hand from dropping the object.
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.
Hope that helps,
David
> Hi ODErs,
>
> I want to use ODE for Roburgger, my robotic arm IDE
> (http://www.telefonica.net/web/atejadalacaci/pfc/pfc.html).
>
> Right now I use a "needle" approach to grab pieces from the world:
> whenever the grip closes, I find the first object enclosing the TCP (the
> tip of the grip) and I attach that object to the robot, as if the TCP
> was a needle punching the object.
> When the grip opens, if it has an object attached, I release that
> object in its current position and coordinate frame (the attached
> object coordinate frame is modified everytime the grip moves).
> You can see a video of this behaviour at
> http://www.telefonica.net/web/atejadalacaci/pfc/grabanddrop.avi
>
> This simplistic method works, but I thought that if I'm going to add ODE
> to handle collisions and world object dynamics, there should be a way
> ODE could handle grabbing for me (otherwise I'd just stick to
> needling the object and removing it from ODE list of bodies).
>
> I do the kinematics myself, so I don't plan to model the robot at all
> using ODE (no joints nor motors). So what I've been trying without any
> luck is to model just the grip and the world objects using ODE and hope
> that when I close the grip, the friction will make pieces to be lifted.
>
> From my kinematics system, the only information I have from the grip is
> the current and previous grip position.
>
> In my ODE tests I have two vertical geom-only pieces side by side with a
> gap in the middle (the grip).
> When I "close" the grip, the two pieces come closer and collide
> against whatever body is in the middle, so far so good.
>
> Then, I've tried several things to model the grip lifting behaviour but
> none worked:
> - Apply a vertical mass*gravity "up" force to the colliding
> object in order to cancel gravity. This normally makes the object
> bounce high, which is not exactly what I meant (I apply the force for
> every collision point and during all the time there's a collision with
> the grip).
> - Disabling gravity on the object colliding with the grip.
> This makes the object float, but on its own it doesn't lift the
> object.
> - Using the difference of grip height from one iteration to
> the next, I apply an impulse when the difference is not zero. This is
> the only way I get something close to what I want: the object lifts a
> bit, but the bit it lifts doesn't always match the bit the grip
> lifted, and it requires a lot of tweaking to make it match. I think that
> the fudge factor I use should be mass & gravity dependent as well (none
> of which I currently factor).
> - Same as before, but I modify the friction in the contact
> point to friction "up". This doesn't produce any visible results.
>
> Has anybody tried to model a grip using ODE?
>
> Am I trying to abuse my physics system?
>
> Thanks for reading!
>
>
> Cheers!
>
> Antonio Tejada Lacaci
> _______________________________________________
> ODE mailing list
> ODE@q12.org
> http://q12.org/mailman/listinfo/ode