Week 10 — Grasping and Manipulation Day 3 of 7


Why This Matters

A grasp planner is the difference between a robot that picks up parts and one that crushes them, drops them, or misses them entirely. In a real bin-picking cell, the planner runs before every pick. It must find a finger placement that survives contact, acceleration, and sensor error — in under a second.

Here is what breaks without proper grasp planning. A parallel-jaw gripper approaches a 60 mm aluminum bracket at a nominal 30 mm opening. The part is 2 mm off its expected pose because a previous pick nudged it. The gripper closes on a corner instead of a face. Contact force concentrates on one edge, the part rotates out of the jaws, and the arm swings through empty air. Cycle time is lost, and the part lands on the floor.

Worse cases exist. An underactuated hand plans a grasp on a thin-walled cup. The planner never checked whether the contact normals span the wrench space. The cup deforms under 15 N of grip force. Or a planner picks a grasp that is force-closed but sits outside the gripper’s kinematic reach, so the fingers collide with the bin wall before touching the part.

These are planning failures, not control failures. The controller did exactly what it was told. The plan was wrong. Grasp planning is the discipline that prevents this class of error. It takes a known object model (or a point cloud), a known gripper geometry, and a set of task constraints, and returns finger poses that are stable, reachable, and collision-free.

Core Concepts

Grasp representation and the search space

A grasp is defined by the contact points between the robot’s end effector and the object. For a parallel-jaw gripper, a grasp is a pair of antipodal points on the object surface, plus the approach direction. For a multi-finger hand, it is a set of $n$ contact points with associated contact normals and friction cones.

The search space is large. Consider a simple 2D polygon with 40 sampled boundary points. The number of point pairs is $\binom{40}{2} = 780$. Add a discrete set of 36 approach angles and you have 28,080 candidate grasps. In 3D with a point cloud of 5,000 surface points, naive pairing gives over 12 million candidates. A planner that evaluates each one at 1 ms takes 3.4 hours. That is why real planners use pruning, ranking, and search heuristics instead of brute force.

Three named methods dominate industrial practice:

MethodWhat it doesTypical use
Antipodal pair searchFinds surface point pairs whose normals oppose within friction coneParallel-jaw bin picking
Ferrari-Canny quality metricRanks grasps by the radius of the largest inscribed ball in wrench spaceMulti-finger grasp ranking
RRT / RRT-ConnectPlans the arm trajectory to reach a chosen grasp poseReachability and collision checking

The planner pipeline usually runs in this order: sample candidate contacts, filter by force closure, rank by quality metric, check kinematic reach and collisions, then hand the best grasp to the motion planner. Each stage cuts the candidate set. A well-tuned pipeline evaluates under 200 grasps per pick.

Quality metrics: Ferrari-Canny and its limits

Force closure tells you a grasp can resist any external wrench. It does not tell you how well. The Ferrari-Canny metric measures the largest ball centered at the origin that fits inside the convex hull of the grasp wrench space. A larger radius means more margin against disturbance wrenches.

For a two-finger grasp with friction coefficient $\mu$, the wrench space is a 2D cone. The Ferrari-Canny radius simplifies to a function of the friction cone half-angle. With $\mu = 0.5$, the half-angle is $\arctan(0.5) = 26.6°$. The grasp resists tangential forces up to $0.5 \times F_n$ before slipping. If the gripper applies 40 N normal force, the maximum tangential load is 20 N per contact. A 1.2 kg part under 2 g acceleration needs about 24 N of tangential force. This grasp fails that check, and the planner must find a contact pair with higher normal force capacity or a better-aligned normal.

The metric also penalizes grasps near the object’s edge. A contact 2 mm from a corner has a smaller effective friction cone because the surface normal is uncertain. Real planners add a margin: reject contacts within 3 mm of a detected edge.

Mathematical Foundation

The core condition for a force-closed grasp is that the positive span of the contact wrenches covers the full wrench space $\mathbb{R}^6$.

Each contact $i$ produces a wrench:

$$\mathbf{w}_i = \begin{bmatrix} \mathbf{f}_i \ \boldsymbol{\tau}_i \end{bmatrix} = \begin{bmatrix} \mathbf{f}_i \ \mathbf{p}_i \times \mathbf{f}_i \end{bmatrix}$$

where:

The friction cone at each contact limits the force direction:

$$|\mathbf{f}_t| \le \mu , f_n$$

where $\mathbf{f}_t$ is the tangential force component, $f_n$ is the normal component, and $\mu$ is the friction coefficient.

For a grasp to be force-closed, the origin must lie in the interior of the convex hull of the primitive wrenches:

$$\mathbf{0} \in \text{int}\left( \text{conv}\left{ \mathbf{w}_{i,j} \right} \right)$$

where $\mathbf{w}_{i,j}$ are the wrench vectors generated by the edges of each friction cone.

The Ferrari-Canny quality is the radius of the largest ball in this hull:

$$\epsilon = \min_{|\mathbf{w}| = 1} \max_{\alpha} \left{ \alpha : \alpha \mathbf{w} \in \text{conv}(\mathcal{W}) \right}$$

where $\mathcal{W}$ is the set of primitive wrenches and $\alpha$ is the scaling factor.

Worked example. Take a 1 kg cube, side 0.1 m, grasped on two opposite faces at the face centers. Contact points: $\mathbf{p}_1 = (0.05, 0, 0)$, $\mathbf{p}_2 = (-0.05, 0, 0)$. Normal forces point inward: $\mathbf{f}_1 = (-f_n, 0, 0)$, $\mathbf{f}_2 = (f_n, 0, 0)$.

Torques: $\boldsymbol{\tau}_1 = \mathbf{p}_1 \times \mathbf{f}_1 = (0.05, 0, 0) \times (-f_n, 0, 0) = (0, 0, 0)$. Same for contact 2. The torques vanish because force and moment arm are collinear. Now add a tangential force at contact 1 of $0.5 f_n$ in $+y$. The torque becomes $\boldsymbol{\tau}_1 = (0.05, 0, 0) \times (-f_n, 0.5 f_n, 0) = (0, 0, 0.025 f_n)$.

With $f_n = 40$ N and $\mu = 0.5$, the tangential force is 20 N and the torque is 1.0 N·m. The weight is 9.81 N, producing a moment about the contact line of zero (force passes through the grasp axis). The grasp holds. Increase the part mass to 3 kg and the required normal force becomes $m g / \mu = 3 \times 9.81 / 0.5 = 58.9$ N. The planner must now select a gripper or contact pair that can deliver that force. This is the arithmetic the planner runs thousands of times per second.

Practical Example

Scenario. A UR5e arm with a Robotiq 2F-85 parallel-jaw gripper picks 45 mm steel shaft collars from a bin. Part mass is 0.35 kg. Grip force range is 20–235 N. The bin walls are 12 mm from the part center in the worst case. Required cycle time is 2.5 s per pick, so the grasp planner budget is 300 ms.

Step 1 — Sample candidates. A depth camera produces a 3,000-point cloud of the collar. The planner segments the top face and the inner bore. It samples boundary points at 4 mm spacing, giving about 120 candidate points.

Step 2 — Filter antipodal pairs. For each pair, the planner checks that the angle between contact normals is within the friction cone. With $\mu = 0.4$ (steel on rubber pad), the half-angle is $21.8°$. Pairs exceeding this are dropped. About 140 pairs survive.

Step 3 — Rank by Ferrari-Canny. The planner computes $\epsilon$ for each surviving pair. Grasps on the flat outer diameter score highest. Grasps crossing the bore score low because the inner surface normal points away from the grasp axis.

Step 4 — Check reach and collision. The UR5e must reach the grasp pose with the gripper fingers clear of the bin walls. The 12 mm clearance is tight. The planner inflates the gripper model by 5 mm and runs a collision check against the bin point cloud. About 60 grasps survive.

Step 5 — Force check. The collar weighs 3.43 N. With $\mu = 0.4$, the minimum normal force is $3.43 / 0.4 = 8.6$ N. The Robotiq minimum grip force of 20 N gives a 2.3× margin. All surviving grasps pass.

Step 6 — Select and plan. The planner picks the top-ranked grasp and passes the pose to an RRT-Connect motion planner. Total planning time: 180 ms. The pick succeeds.

Common Pitfalls

1. Planning on a stale object model. The part moved after the camera scan. The planner returns a grasp that misses by 5 mm. Why: Perception and planning run on different clocks, and the conveyor or previous pick shifts the part. Detect/fix: Timestamp every point cloud. Reject plans older than 200 ms. Add a wrist camera for a final 50 ms look before closing.

2. Ignoring finger geometry. The planner treats fingers as points, but they are 20 mm wide pads. The pad collides with a nearby part. Why: Point-contact models are simpler and faster, but they hide real collisions. Detect/fix: Inflate the contact point by the pad half-width during collision checking. Use a mesh-based gripper model, not a point model.

3. Trusting force closure without a friction margin. A grasp is force-closed at $\mu = 0.5$, but the actual pad is worn and delivers $\mu = 0.3$. Why: The planner uses nominal friction from the datasheet, not the worn value. Detect/fix: Apply a safety factor of 0.7 to $\mu$ in the planner. Re-measure pad friction every 50,000 cycles.

4. Overlooking acceleration loads. The planner checks static equilibrium but the arm accelerates at 3 m/s² during the transfer. Why: Static force balance ignores the inertial term $m a$. Detect/fix: Add the acceleration wrench to the disturbance set. For a 0.35 kg part at 3 m/s², that is an extra 1.05 N. Small, but it matters on long reaches.

5. Ranking by quality alone, ignoring cycle time. The planner picks the highest-$\epsilon$ grasp, but it requires a wrist flip that adds 1.8 s. Why: The quality metric does not know about motion cost. Detect/fix: Combine grasp quality and motion cost into one score: $S = \epsilon - \lambda t_{\text{motion}}$. Tune $\lambda$ to match your cycle-time target.

Key Takeaways

  1. Prune before you rank. Sample contacts, filter by friction cone, then rank. This cuts the candidate set by 10–100× and keeps planning under 300 ms.
  2. Force closure is necessary, not sufficient. Always apply a friction safety factor (0.7 is a good default) and check acceleration loads, not just static weight.
  3. Model the real gripper. Pad width, finger length, and approach clearance change which grasps are feasible. Point-contact models hide collisions.
  4. Use Ferrari-Canny to rank, RRT to reach. The quality metric picks the best grasp; the motion planner confirms the arm can get there without hitting the bin.
  5. Timestamp everything. A grasp plan on a 500 ms-old point cloud is a plan for a part that no longer exists.

Tomorrow

We move from picking a grasp to controlling the fingers through it — covering impedance control, slip detection, and in-hand reorientation in Dexterous Manipulation.