Page 1 of 1

Making an object stick in a grasp

Posted: 08 Jul 2013, 13:48
by MattDerry

I'm trying to control an arm using the kinect and grasp a handle on a crank. The kinect has a fair amount of jitter in it making it difficult to be precise, so to accommodate that, I was hoping to do something like:

if distance from gripper to handle < some_threshold and task_is_active
programmatically make handle stick to end-effector dummy in the palm of the gripper
remove link between handle and gripper

Part of the difficulty is that the handle and the gripper are both the leaf nodes in two different objects (crank is passive and consists of 3 links and 2 joints) and I'm not sure if I can link them the way I am thinking about. Ultimately, I will try to smooth out the skeleton tracking from the kinect, but I need a workaround for the time being. I'm also open to other approaches as well.


Re: Making an object stick in a grasp

Posted: 08 Jul 2013, 14:03
by coppelia
Hello Matt,

before going more into details: do you need a rigid connection similar to what does the suction pad that you can find at Models/components/grippers/suction pad.ttm? The same suction pad is operational in the demo scene robotLanguageControl.ttt (the right-hand robot).


Re: Making an object stick in a grasp

Posted: 08 Jul 2013, 14:54
by MattDerry
Thanks for the fast response!!! A rigid connection would probably be best. I'll take a look at the suction pad example and see what that looks like. The main difference I can see right now is that in that example the shapes are free, in my case the handle is attached to a crank. Would this be a problem?

As an aside, how long is the delay before I can post a follow up? I've been trying to reply for 15 minutes.

Re: Making an object stick in a grasp

Posted: 08 Jul 2013, 15:28
by coppelia
A rigid connection like the suction pad works for dynamic items (so basically it can connect any item you can see when you click the Dynamic content visualization and verification toolbar button (works only during simulation)). So if your handle is attached to a crank shouldn't be a problem. How the suction pad operates:

It will create an artifical rigid connection via a force sensor, in a loop-closure configuration as can be seen here.

The easiest in your case is to have following on your gripper:

gripper pad (dynamically enabled shape)
-->force sensor

Make sure the 2 dummies are linked via a link type Dynamics, overlap constraint. Do it in the dummy dialog.
When simulating it like in above situation, the force sensor will not be dynamically enabled since the construction is faulty. But if you attach dummy2 to the handle (which also needs to be dynamically enabled), then the construction will be ok and you will have a rigid link (i.e. the 2 dummies will try to have a same position/orientation). So by simply changing the parent of dummy2 (e.g. with simSetObjectParent) you can create and break a dynamic rigid connection. If the 2 objects that are linked together via that connection are interfering and have also overlapping global collision masks, you might experience shacking.

The reply delay was 60 minutes, now I lowered it to 30 minutes. To avoid too much spam ;)


Re: Making an object stick in a grasp

Posted: 08 Jul 2013, 16:21
by MattDerry
I wanted to thank you again. I was able to incorporate an invisible suction pad in to my model and it worked pretty much perfectly for my needs. And with your last post, I have a better understanding of how it works. Thanks again, you've built an awesome simulator here.