How to make grasping objects looks more natural?

I have a robotic arm (is shown in picture) that should grasp some game objects with regular colliders (not mesh collider). I program the robotic arm to move with Translate function and open and close its grasp with Rotate function and it works completely fine. After that, I add box colliders to the two sides of grasp. My problem is my code can detect collision but it is hard for me to grasp the game object naturally. When robotic arm collides to the game object, the game object jumps to random direction.
I tried the following methods:
• First, I increased drag and angular drag parameters of game object. The results get a little bit better but it is still hard to grasp.
• Then I tried to make the game object child of grasp after collision detection but it’s not natural at all.
Does anyone have other suggestions in order to improve grasping functionality? I need something like this 2 and don’t have clue how they do that? Thanks for the help.

The short answer is, oh boy . This is one of the hardest problems not only in simulation or game engines but also in robotics.

Personally I am still working on that two years on and my grasping algorithm is still not at the level I would like it to be.

The problem is, when we grasp objects in the real world, friction plays a major role, whereas in game engines like Unity friction is barely approximated, resulting in slippage when holding on to objects.

There are a lot of scientific research papers on this topic, but if I had to crunch it down in a short comment, what you need to do is the following:

  1. Add two hinge joints, one for each finger/digit of the gripper, anochored appropriately, as shown in the attached image and in line with the gripper’s finger motions. Make sure you deselect gravity on the accompanying ridig body component. Also add a value of >10 to the “Spring” parameter of the hinge joint component.
  2. Drive the “Target Position” parameter of the hinge joint from an animation or with whatever other means you see fit. This will move the fingers either in the close or open direction.
  3. Play with the other parameters of the hinge joint, such as the limits, force and velocity values. Perhaps driving the joints through another value for you case might be better.

Here is also one of my blog posts on the topic, which I keep updating with new info and methods as they come in. It’s very thin at the moment:


Hi, how is it going with your grasping research? any improvements? I’m trying to achieve exactly the same, but with a human hand in VR using hand tracking. I’m using articulation bodies and purely rely on friction, instead of hinge joint approach described in you blog post. I even managed to achieve some good results.