An important part of our roadmap is focusing on making grasping trivial for the end user. We want to be able to point our robot at an object with the instruction of grasp it. Although from a human point of view it sounds trivial, this is actually complicated for a robot. A crucial step in that direction is to be able to quantify how well the robot is grasping the object; without that measurement, the robot will never be able to improve. In this post, we’ll focus on different methods used to assess grasp quality.

We’re adding a few constraints on the grasp quality measurement computation:

  • computes in “real time”. We want to be able to use that measurement throughout our grasping pipeline. We also want to display it live to be able to understand what our robot is thinking.
  • does not need accurate information about the object. We often do not have much knowledge about the object we want to grasp.
  • does not need fine tactile sensing. We want to be able to deploy this on any type of hands. The more tactile data we have the more precise the measurement. But good tactile sensors can be expensive and are not always robust.
  • we can use a different metrics to generate grasps.

Quality measures based on the position of the contact points

The measures we’ll explain below are all based on the same concept. They use the contact points — the points at which the robot is in contact with the object as shown in the figure below — to compute a quality measure for a given grasp.

The contact points are the points at which the robot is touching the object. A1, A2 and A3 in the figure.

Based on our previously defined criteria, here’s a selection of the three most interesting ways to measure the grasp quality for a multi-fingered hand.

Area of the grasp polygon

The grasp polygon is the area between the grasping points as can be seen in the figure below. To be able to compute this area, we simply need the points on the hand which are in contact with the object.

Area of the grasp polygon

This grasp quality measure can be computed with formula (1). The bigger the grasp polygon, the more stable the grasp. This measurement is quite intuitive: this area is big when the fingers are spread around the biggest part of the object.

The grasp quality is the volume of the polyhedron defined by the contact points.

It can also be generalised to hands with more than 3 fingers.

Shape of the grasp polyhedron

First, what is a polyhedron? It’s the equivalent of a polygone in 3D. So a pyramid, a cube… those are polyhedrons. To make it easier to visualise, we’ll keep using 2D figures — and polygones — in the illustrations below.

This is another approach used to measure the quality of a grasp. Instead of focusing on the volume, we focus on the shape of the polyhedron. Intuitively, we want the fingers to be spread uniformly around the object. Once more we only need the contact points information.

Shape of the grasp polyhedron

This measurement (2) is called the stability grasp index. We are computing the averaged error between the current polyhedron angles and the best configuration, which is the equivalent regular polyhedron. In the example above, our polyhedron — or rather polygone since we’re in 2D — is a triangle. The equivalent regular polyhedron is an equilateral triangle.

The grasp quality is function of the polyhedron angles.

where:

In this case, the better the grasp, the smaller the grasp measurement.

Distance between the centre of mass and the centre of grasp

This approach focuses on minimising the distance between the center of mass of the object and the center of the grasp polyhedron. It is similar to many algorithms used in legged robot control, where they focus on keeping the projection of the center of mass between the contact points. For this metric, we need to know where the center of mass of the object is. Which means we have to know the pose of the object, as well as some properties of its weight distribution.

CM is the center of mass, C is the center of grasp.

What we want here is the center of the grasp region to be as close as possible to the center of mass of the object — it’s its equilibrium point. So we want (5) to be as small as possible, the smaller the measure, the more stable the grasp.

The quality of the grasp is the distance between the center of mass and the center of the contact points area.

Taking limitations of the finger forces into account

The methods described above all share a common limitation. They do not take into account that the fingers can only apply a limited amount of force.

To solve this limitation, the largest ball criterion was developed. The largest ball criterion is a widely used grasp quality measurement.

The grasp wrench space is easier to represent for a 2D object. It’s a 3D space comprised of the force applied along the x axis, the one around the y axis and the torque around the z axis. As you can see below, you can push that object — in this 2D world — along the x or y axis, or rotate it around it’s z axis. In 3D, the grasp wrench space is a 6D space — translation in x,y,z or rotation around x,y and z.

left: grasp wrench space visualised on the object / right: largest ball criterion

We won’t go into the details of how to characterise the grasp wrench space here. But let’s agree that we’re able to compute how much force the hand can apply around the different axis. We just need to know:

  • the maximal force each finger can apply
  • the possible movements of each joints

So now we’ve drawn our Grasp Wrench Space. This means that we know which external perturbations the robot hand can cope with. If a force applied is outside of the Grasp Wrench Space, then the hand can’t keep the grasp stable. The concept here is that a grasp is only as good as the minimal amount of force applied to the object for the grasp to become unstable. So we want to find which direction of our Grasp Wrench Space is the most fragile. This is the same as finding the distance from the origin to the closest face of the Grasp Wrench Space.

We can solve this problem using geometry. We look for the largest ball centered around the origin of the Grasp Wrench Space while fully contained in that space. You can visualise this in the figure above — on the right.

So the bigger the measure, the more stable the grasp.

Quality measures based on the hand configuration

These measures rely on the configuration of the hand itself. To simplify, they’re making sure the robot is in as good a position to react as possible. In robotics you often want to avoid being close to singularities. To simplify, when at — or close to — a singularity, a robot can’t move anymore in a given direction.

left: minimum of the range / middle: maximum of the range / right: middle of the range

To measure this, you can check if each joint of the hand is close to the position in the middle of its range (6). For example for a joint that can go from 0 to 90 degrees, the middle of its range is 45 degrees. So the closer to 45 degrees it is in a given grasp, the easier it is to move it in any direction to counteract an external perturbation. The smaller the measurement, the better the grasp.

A quality measure based on the joints being as close as possible to the middle of their range.

Final words

We’ve been over a few methods that can be used to measure the quality of a grasp. An interesting approach could also be to combine different metrics into one weighted sum — evaluating different criteria. If you are working on grasp quality metrics or have some ideas to share let’s discuss on twitter @ugocupcic!