Unscrewing a tube cap by feel
Before anything can be poured, the cap has to come off. One UR5e holds the tube steady while the other unscrews the cap a quarter turn at a time, and uses its wrist force sensor, not a turn count, to know when the cap is free.
- Robots
- Two UR5e arms with Robotiq 2F-85 grippers
- Simulation
- MuJoCo, with a 24-410 screw thread built to the real cap’s pitch and turns
- Sensing
- Overhead and wrist cameras, wrist force and torque
- Learned parts
- Optional: the unscrewing itself, learned from touch alone
Why it is hard
A screw cap is one of the most common things in a lab, and one of the hardest for a robot to be sure about.
A thread only lets go by turning
Pulling a screw cap straight up does nothing. It has to turn about one and a half times, rising a little with each turn.
Fingers slip
Each quarter turn of the wrist turns the cap a little less than a quarter, so counting turns does not tell you when it is off.
The last turn feels like the others
Once the seal breaks, every quarter turn takes the same small twist, including the one where the cap comes free. Twist alone cannot tell.
The tube must not spin
Breaking the seal takes far more twist than an ordinary grip on a glass tube can resist, so the holding arm needs a grip built for it.
How it works
The same steps you see in the video, in order.
Step 1: Find and lift a capped tube
The overhead camera finds the capped tubes. Arm A picks one from the side and holds it up above the middle of the table.
Step 2: Lock the grip
Arm A grips tighter, with the tube centred between its finger pads, and locks its fingers.
Step 3: Grip the cap
Arm B looks down with its wrist camera, comes down over the cap and grips it from above.
Step 4: Quarter turn, then a lift test
Turn the wrist 90°, then pull up a few millimetres. If the cap pulls back, it is still on: let go, turn back, grip again and repeat.
Step 5: Cap off, tube to the rack
When the pull is gone and the arm feels only the cap’s weight, Arm B carries the cap to its holder and Arm A puts the open tube in the rack.
Model or no model
Does unscrewing need a learned model?
Learned
- An ACT policy that unscrews using only what the arm feels: force, torque and joint angles, no camera
- Learned by watching the programmed version do the task
- Trained with realistic sensor noise, so it never relies on readings a real sensor could not give
Programmed
- The whole loop, written by hand: turn, lift test, grip again
- Picking, holding and putting back the tube
- A collision check before every move, including against the other arm
How we chose
We built the programmed loop first, as the baseline and as the teacher. The learned policy copies it using touch alone. It earns its extra cost on harder cases, such as caps screwed on by different amounts, where a fixed loop starts to struggle.
How we decide in generalDecisions that made it work
“Off” is felt, not counted
A lift test after each quarter turn decides. Counting a fixed number of turns fails as soon as the fingers slip or the thread runs a little longer.
A second check before carrying
Once the pull is gone, Arm B checks it is carrying only the cap’s weight. More would mean the tube is coming up with it, and the run stops safely instead.
A grip built for twist
Arm A holds the tube centred between the pads, squeezes within the real gripper’s force range, and locks, as the real gripper does.
Physics checked against the hardware
The seal, friction and thread follow published figures for 24 mm caps. A trial with the UR5e and 2F-85 models showed the lift test tells “on” from “off” with room to spare over a real wrist sensor’s error.
Tools we used
- MuJoCo
- UR5e
- Robotiq 2F-85
- Force/torque sensing
- ACT
- PyTorch
- Python
Capabilities this draws on
Where it goes next
- Caps screwed on by different amounts, where a learned policy can beat the fixed loop
- Caps on the full source tubes, opened without spilling
- Screwing caps back on to a set torque, as capping machines do
More use cases
Lab automation
Pouring between test tubes
Two arms find the tubes, pour one into another until it is exactly half full, and put both back.
See the full runGlassware handling
Racking drinking glasses
One arm measures a glass it has never seen, weighs it, turns it over and stands it on a drying rack.
See the full run

