0%

Chapter 1 · Section 1 of 3

What changed: two helps taken away

9 min read1 of 22 in Clearing the Table
On this page

This book gives the arm the job from the pushing book: drag crowded glasses apart until every glass has room. Nothing is lifted, and "clearing" here means clearing the crowding, not emptying the table.

This book is for a reader who has read the pushing book. It covers only what is different, and how and why. When an idea is the same as before, this book gives it one sentence and a link to the page that explains it. Every number in this book comes from a result file that the project committed, at commit 851a30b of the robot-arm-projects repository. Each number links to its file on GitHub, or names it.

This page answers four questions. Which two helps were taken away, and why? What does a solution hand back now? What does "done" mean when nothing is racked? And how are the tables drawn?

Contents#

  1. Two helps taken away
  2. The camera rides on the wrist
  3. The run is open, and the solution says "done"
  4. Why the two changes go together
  5. The answer is a path, or "done"
  6. Nothing is racked
  7. The tables are smaller
  8. Six solutions, not seven

1. Two helps taken away#

This section names the two changes, so that the rest of the page can take them one at a time.

The project orders its problems by one rule. Each problem is the one before it with one assumption taken away. The task stays the same, and a help is removed. This shows which help the earlier answer was leaning on.

The pushing problem gave every solution two helps:

  • a camera fixed above the table, which showed the whole table for free;
  • a hand-over of one push at a time, where shared code counted the pushes and decided when a table was finished.

This problem takes both away. The pushing problem is not wrong. It holds everything still except one thing, so it is still the right test for the question "what did this one change do?". This problem asks a different question: what would the arm do with nobody helping it? The project's own page gives the full statement.

The first help to go is the camera, so the next section asks what the arm can see without it.

2. The camera rides on the wrist#

The camera above the table was the first help, and this section says what replaces it.

In the pushing book, a fixed camera looked straight down at the whole table. Here the camera is on the wrist, a hand's length behind the fingertips. It sees the patch of table that the jaw points at, and nothing else. The code is bench/wrist.py.

This has three effects.

  • To see a place, the arm must go there. No call hands over the whole table.
  • Looking costs arm time. Moving to see is moving, and the budget charges every movement.
  • A hidden glass is simply missing. Glasses stand in front of each other. A glass behind another one is not in the list, and nothing tells the solution that it is missing.

So the solution must now build up a picture of the table from many looks, and remember it. Looking, remembering and stopping explains how every solution does this.

Why make this change? A real cell has its camera on the arm. A camera fixed above the table stops working when somebody moves the table or stands in the way. The overhead view was a kindness of the simulator.

One thing did not change. Each reading of a glass has the same measurement error as before. So a difference between the two problems comes from the moving camera, and not from a worse camera.

The film below shows the simplest solution on five tables in a row. The small picture in the corner is what the wrist camera showed the solution.

Five tables in a row with the camera on the wrist, 107 seconds and no sound

Watch the corner picture. It changes each time the arm moves, and most of the film is the arm moving to see.

The second help to go is the push-by-push hand-over, so the next section asks who now decides when a table is finished.

3. The run is open, and the solution says "done"#

The camera was one help. This section takes away the other one.

In the pushing book, the bench asked for one push, carried it out, marked it and asked again. The shared loop also did three jobs for the solution:

  • it decided when a table was finished;
  • it threw away answers that aimed at a glass it had already refused;
  • it limited the pushes, to 4 per glass and 16 per table.

Here the loop does none of these. The solution looks, acts, and looks again, for as long as it likes. Then it says that it is done. Nothing counts its pushes. Nothing filters its answers. Every answer is carried out as given, unless the cell's one safety check stops it. The examiner describes that check.

Why make this change? On a real cell, nobody stands by to count the pushes or to say when the job is over. Knowing that a job is done is part of the skill. The filter also flattered some solutions. A solution that aimed badly looked safer than it was, because the shared code caught its mistakes.

The two changes were made together, so the next section asks why one of them would not work without the other.

4. Why the two changes go together#

The last two sections removed two helps. This section explains why they form one problem and not two.

A close view helps only if the solution can still change its mind after it. In the pushing book, a solution chose a whole path from its ready pose. At that moment the wrist was far from the glass it would touch. So a close view of that glass would come after the decision that needed it.

An open loop fixes this. The solution looks, acts a little, and looks again. A close view can then arrive in time to change the next answer. So a moving camera is only useful with an open run.

With the loop open, the next section asks what a solution may hand back on each turn.

5. The answer is a path, or "done"#

The open loop asks the solution for an answer on every turn. This section says what that answer can be.

An answer is one of exactly two things. It is either a path for the jaw, or the statement that the table needs nothing more. The two shapes are Chunk and Done in bench/contract.py.

A path is the same list of waypoints as in the pushing book. What must come out explains why a path is used. What is new is that moving to see and moving to push are the same kind of answer. The camera rides on the arm, so a look is just a path that takes the jaw somewhere to see from. There is no free look. One path can look on its way to a push.

"Done" may carry a reason. The reason is written into the record and never scored. It is there because a table left crowded on purpose and a table left crowded by mistake give the same numbers.

"Done" means every glass has room. But nothing is lifted, so the next section asks how the examiner can tell that a glass has room.

6. Nothing is racked#

"Done" is the solution's claim. This section says how the examiner checks it.

In the pushing book, a glass with room was lifted off the table and racked. Here no glass leaves the table. The run ends with every glass still standing where the arm left it.

So the examiner decides "pickable" by arithmetic at the end. A glass is pickable when three things hold:

The test uses the gripper's own numbers and the glass's real width in the simulator. It is in bench/scoring.py. No glass's size is written down anywhere, as before.

A finished table is therefore not an empty table. It is a table where every glass has room, and some glasses had room from the start. The next section asks how those tables are drawn.

7. The tables are smaller#

The examiner marks the arrangement on each table. This section says what that arrangement holds at the start, and why it changed.

The pushing book drew four to six glasses on a table. Here each table holds three to five glasses, drawn by bench/tables.py. Each table has three parts:

  • One touching group, of two or three glasses. "Touching" means closer than the room the open hand needs. One push can answer a pair. A group of three needs the pushes in a good order, because moving the middle glass can leave the outer two touching.
  • One or two glasses that already have room. These should be left alone. Without them, "push everything you see" would be a correct answer.
  • Two or three crowded glasses in all. The band is narrow, so that tables are about equally hard.

The mix changes from table to table. If every table were the same, a trained policy could memorise the shape instead of learning the task.

Every crowded glass is one that slides rather than tips when pushed low. The draw checks this with the slide-or-tip rule and draws again until it holds. So every table can be solved in principle.

The first draw could not be solved. It held four to seven glasses, with a touching pair and a touching group of three on every table. The project then tried perfect play on it: true positions, exact pushes, no clock and no limit on pushes. Even so, the ranked geometry separated 0 of 20 tables. It ran out of pushes worth trying after 31 pushes across all 20. The hand is 139 mm across and cannot come lower than 75 mm. On a zone of 320 by 360 mm, seven glasses leave it nowhere to stand. A test that nobody can pass ranks nothing, because every solution scores zero. So the draw was made smaller.

The same tables are given to every solution, so the last section asks which solutions were run on them.

8. Six solutions, not seven#

The tables are fixed, so this section names the solutions that were run on them.

The solutions are the pushing book's first six, in the same order. Each one was moved to the new problem, and each has its own chapter in this book. The seventh, the newer and larger borrowed model, is not here. The pushing problem fitted it three times, and it did not learn the task there. So there was nothing to move.

The six now face a new examiner, so the next page asks how a table is marked when nothing counts the pushes.

The examiner: marking the table, not the pushes →