# Tipping Over A Surface Edge

> Turn a body over on the surface it rests on instead of carrying it — pinch two opposite walls LOOSELY and off centre so the pads act as a pin joint, lift so the surface and gravity stand the body up on its own edge, then press it onto the surface and pull the pins toward you about whichever edge is grounded until it is just past balance, and let go. Use when a rigid grasp cannot transmit the torque a full roll needs (a parallel jaw rolling about its own closing axis), when the body is too big to turn over in hand, or when the arm's envelope cannot follow a held body through the roll.

- Skill: `graph-robots/tipping-over-a-surface-edge` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add graph-robots/tipping-over-a-surface-edge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/graph-robots/tipping-over-a-surface-edge/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: graph-robots (https://skillmd.com/u/graph-robots)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/graph-robots/tipping-over-a-surface-edge

---


# tipping-over-a-surface-edge

Turn a body over by letting the surface it rests on do the turning.

## Why this is its own skill

A parallel jaw transmits force well and torque about its own closing axis
badly: two pads on a 12.6 mm wall are a friction clutch a few millimetres
wide. A strategy that grasps rigidly and rolls asks the clutch to carry the
whole roll and stalls (63 degrees on the crate, measured, at every grip force
and arm gain tried). This strategy asks the pads for **force only** — a pin
joint — and gets the rotation from gravity and from the surface's edge.

## When to use

- The body is wide and flat, and the roll would be about the jaws' closing axis.
- The body's mass or size is beyond an in-hand roll, or the arm's envelope
  cannot follow the held body around.
- There is surface to tip onto: tipping over an edge carries the body one
  full width in the direction it falls.

## When NOT to use

- There is no room to land: the flip travels a body width across the surface.
- The body cannot stand on the edge it would pivot on (a round or very narrow
  section), or its centre of mass sits so far from that edge that the standing
  body is unstable the wrong way.

## Recommended subgraph state flow

```text
read_scene → approach → pinch → lift → press_pull → release → check → END
                                                      ↑              │ standing
                                                      └── re-grasp ──┘
```

1. **`read_scene`** — which hand is on which side, the body's pose, the
   declared features (`sim.query(atom="geometry", ...)` on the pinch box and
   the edges).
2. **`approach`** — both hands to a hover over their pinch points, wrist at the
   one roll the whole manoeuvre will hold, then straight down onto the wall
   with the wrist locked.
3. **`pinch`** — `robot.set_grip(object_width_m=<wall>, squeeze_m=0.0015,
   ramp_steps=40)`. Loose. 3 mm slid where 1.5 held.
4. **`lift`** — straight up, both hands together (`robot.stream_dual`), wrist
   still, until the near corner leaves the surface (read the edge's height).
5. **`press_pull`** — chords of 3 degrees about the grounded edge, read live
   each chord, hands commanded 8 mm below the rotated point, wrist following
   the measured attitude. Stop on the measured attitude a little past balance.
6. **`release`** — crack, out along the mouth, outboard past the ends, wait.
7. **`check`** — the body's attitude after settling routes the exit.

The numbers in `scripts/tipcommon.py` are the crate's (`crate_flip/flip` on
`yam_i2rt`) and each one carries its measurement; read a different body's from
its declared features and the packet's attitude facts rather than reusing them.

## Required end states

| End state | Meaning |
|---|---|
| `inverted` | Turned over and at rest on the surface. |
| `standing` | Rocked back onto its wall at the release. Re-grasp through the mouth and pull further. |
| `other` | Slipped out during the lift, or thrown by the release. Start over from `approach`. |

