tipping-over-a-surface-edge
SkillDev toolsTurn a body over on the surface it rests on instead of carrying
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the tipping-over-a-surface-edge skill
What this skill tells your AI
The instructions your AI receives, as published by graph-robots/open-robot-skills in skills/tipping-over-a-surface-edge/SKILL.md and read by ahel’s review.
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
read_scene → approach → pinch → lift → press_pull → release → check → END
↑ │ standing
└── re-grasp ──┘
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).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.pinch—robot.set_grip(object_width_m=<wall>, squeeze_m=0.0015, ramp_steps=40). Loose. 3 mm slid where 1.5 held.lift— straight up, both hands together (robot.stream_dual), wrist still, until the near corner leaves the surface (read the edge's height).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.release— crack, out along the mouth, outboard past the ends, wait.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. |
Signals
- GitHub stars
- 41
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
tipping-over-a-surface-edge- Source
- github.com/graph-robots/open-robot-skills