Cybernetic Garden · for whoever is minding the arm

Running the arm

Not for visitors. This is the page for the person standing next to the machine, and it assumes nothing except that the arm is switched on.

The thing that catches everybody

There are two different clicks, and they are not the same click. One starts a photograph. One starts a painting. The arm beeps and then waits for a left click on the mouse before either, every time, and it will wait all day. Nothing is stuck: it is waiting for you.

A portrait does not jump the queue. Somebody who has just been photographed is not about to watch their picture appear. It joins the same queue as the drawings and gets painted in turn, forty to ninety minutes a job. Tell them when to come back.

A portrait, start to finish

  1. Sit them in the chair, facing the arm, with the plain background behind them. The pose is taught once and is not redone per person.
  2. They press New person on the portrait page. That only asks. Nothing moves.
  3. The arm beeps. You click. That click means a person is in the chair and knows the machine is about to move.
  4. The arm turns to the taught pose and frames their face, panning and tilting until it sits on the mark, because everybody is a different height. A few seconds. If it cannot find a face in 45 seconds it gives up, parks, and the page says so. Have them sit up, look at the camera, and press it again.
  5. It takes one photograph, after it has stopped moving, and turns it into 1260 dabs in memory. The photograph is never saved to anything.
  6. They see the render and choose: Paint it, Another go (runs the whole thing again from the click), or No thanks (nothing is kept, because there is nothing left to keep).
  7. Paint it puts it in the queue. The arm parks at Home and stops.

Painting whatever is in the queue

  1. Put blank paper down on both sheets before you click. This is what the pause between jobs is for.
  2. The arm beeps. You click. It paints the oldest job first, both copies together, so the two sheets finish at the same time.
  3. It beeps when the job is done. Take both sheets off. One for the wall, one for whoever made it.
  4. Fresh paper down, click, next job.

Before any of it works

Two things have to be true, and both survive a reboot, so this is a once-per-setup check rather than a daily one.

  1. The portrait pose has been taught. If it has not, the page says the arm has not been told where to look, and no amount of pressing helps. Someone has to hand guide the arm onto the chair once.
  2. The camera service is running. Without it there is nothing to look through.
    systemctl is-active kinova-stream pointillism-pad pointillism-queue
    Three lines saying active is what you want.

When nothing is happening

Work down this list and stop as soon as something works. Most stops never get past the first line.

  1. Click the mouse. It is almost always this. The arm is waiting for a person, which is the design, not a fault.
  2. Read the page. If a portrait failed it says why, in words. If the arm is painting, New person is switched off on purpose and says how long is left.
  3. Hand guide it clear. Wrist button to go compliant, lift the tool up and back, let go, click.
  4. Ask what has the arm. Only one thing may drive it at a time.
    python3 ~/kinova/armlock.py
    It names what is holding it, or says nothing is.
  5. Power cycle the arm. There is a state where it reports itself perfectly healthy and refuses every move, and nothing but this clears it. If a five degree jog is refused, you are in it. Do not spend forty minutes first; somebody already did.

If somebody asks about the photograph

It is never stored. It exists inside the machine for about a second, becomes 1260 cells of colour, and is gone. There is no folder of faces and no setting that makes one. If they say no thanks, nothing is deleted, because nothing was ever written down. You can say all of that plainly.

The other pages

Setup is where the paper and pots are placed. The pad and the portrait page are the two visitor pages. The display is for a screen on the wall.

Studio setup

Anything this page does not cover is in README.md beside the code, which goes into a great deal more detail about why the arm refuses things.