Overseer - a take on surveillance

Overseer is a robotic art piece inspired by George Orwell’s novel 1984. The idea was to make surveillance physical: a camera on a motorized arm that finds the closest face and follows it.

Conceptual design drafts for the enclosure.
Conceptual design drafts for the enclosure.

The face tracking runs in real time, in a simple control loop that keeps the arm pointed at the closest face.

software driver

The control loop:

  1. Capture a frame from the camera.
  2. Detect all faces in the frame.
  3. Select the closest face.
  4. Compute the required rotation and update the arm position.

setbacks

The main difficulty was converting a target’s position in the frame into servo angles. The image gives the angle the camera has to turn, but that is not enough to compute the motor rotation directly.

Initial sketches of servo motor motion and arm movement calculations.
Initial sketches of servo motor motion and arm movement calculations.

The problem is geometric. The triangle formed by the camera, the target, and the joint has only one known angle and one known side, so it is underdetermined.

We solved it mechanically by aligning the motor axis with the camera’s rotation axis so that they intersect at the lens. The camera then rotates in place, and the angle measured in the image is the angle the servo has to turn. This made the calculations simple but the mechanical design considerably more complex.

Initial drafts of the casing design.
Initial drafts of the casing design.

Later we added an adjustable target tolerance, bounding boxes around detected faces, and an auto-centering routine that runs after the arm has been idle for a while.

Final concept with dimension calculations and assembly planning.
Final concept with dimension calculations and assembly planning.

CPU compatibility

The original plan was a Raspberry Pi Zero W, small enough to fit inside the main enclosure. Face detection used OpenCV 4 (v4.3.0), which requires an ARMv7 or newer CPU, and the Zero W has an ARMv6 core. We switched to the Raspberry Pi 3B+ with an ARMv8 CPU.

The larger board needed a second enclosure, so the design was no longer a single self-contained wall-mounted unit.

assembly

Hand-cutting particleboard and cardboard for the arms and casing.
Hand-cutting particleboard and cardboard for the arms and casing.

The frame is made of lightweight particleboard to keep the arm’s inertia low, so the servos can move it quickly. The board turned out weaker than expected and needed reinforcement in a few places.

The electronics housings are cardboard, and the main enclosures are thin laminated board. The colors are deliberately muted.

Assembling the main components of the arm.
Assembling the main components of the arm.

Loose cables kept catching in the arms and joints, so we zip-tied them along the frame.

The completed Overseer assembly.
The completed Overseer assembly.

testing and refinement

In the last phase we tuned parameters, reduced the frame rate and image quality to keep processing smooth, and added a fan to prevent the CPU from overheating during long runs.

The completed Overseer project.
The completed Overseer project.

The final version detects the closest face, follows it with the arm, and re-centers when nobody is in view.

components used

2x servo motor Waveshare MG996R

Raspberry Pi 3 Model B+

Raspberry Pi Camera V2

Raspberry Pi fan with 30cm cable

power supply 5.1V⎓3A