Home Buddy — Concept-1

A compact robotic cell for a home desktop: two 6-axis arms on a shared rail, a central vertical lift, and automated storage. Everything here — the mechanics, kinematics, animation rig, and procedural sound — is generated entirely with Python in Blender.

In Progress

I wanted to see what an automated assembly cell would look like if it were built for a home workshop rather than a factory floor. It had to be compact, quiet, and self-contained: pick parts from its own storage, assemble a small device on the desktop, and file it away into an output tray.

The design combines calm, clean enclosures with visible mechanics — exposed DIN socket heads, crossed-roller bearings, and warm tactile accents where mechanisms interact.

Two arms on a shared rail

Both six-axis arms ride along a single linear rail across the back of the cell. Sharing the rail lets them divide the work naturally: one arm pulls raw components from storage and holds the fixture, while the other places circuit boards and presses enclosures together.

The kinematics are solved analytically for each joint, keeping arm paths smooth and repeatable without hunting or jitter.

The whole cell from three quarters: the white rounded frame, both arms on the shared rail, drawers behind smart glass below the worktop
Both grippers over the worktop: one carrying a bottom shell to the work zone, the other waiting beside it
The whole cell from three quarters · and both grippers over the worktop

Picking from loose storage

Under the work surface, three motorized drawers hold stock. In real small-batch assembly, parts rarely come in custom-molded trays, so these drawers store components loose in shallow bins — circuit modules, knurled dials, and housing halves in a jumble.

A wrist-mounted camera scans the bin, identifies the top piece in the pile, and rotates the gripper to match its orientation before picking it up.

Looking down into the pulled-out C-01 drawer: a heap of loose boards and the arm reaching into it An arm picking a red knurled knob from the K-01 drawer, finished units in the output drawer beside it Finished units in two neat rows in the pulled-out output drawer U-01
Three drawer stages: loose microcontroller boards, red knurled dials, and finished controllers filed in order

The central lift mechanism

The centre tower is a vertical lift module holding seven component trays behind the fascia. In my first prototype, I tried pulling trays forward with a classic telescopic fork. It looked great, but in a compact 380 mm shaft it jammed immediately: a fork long enough to reach the rack had its tines stuck under the tray, unable to retract once delivered.

To solve this, I replaced the fork with a belt-driven shuttle running under the deck. Each tray has a notched tongue on the front face. Two pusher dogs pop up through deck slots, latch onto the tongue, and draw the tray forward. To release, the whole carriage simply drops 12 mm — letting the dogs slip out from the notch without needing a separate release actuator.

The lift's rack of trays behind the glass, one drawn out onto the shuttle
The rack of trays behind the glass, one drawn out onto the shuttle by the pusher dogs

Assembling the controller

Tardigrade sticker: Soldering

The cell builds a small handheld controller in four steps: the lift presents the bottom shell, the arm picks a circuit module from the drawer and seats it inside, the lift delivers the top lid to close the housing, and the second arm presses a knurled red dial onto the encoder shaft.

Once the enclosure clicks together, the arm picks up the completed device and files it neatly into the front output tray.

A gripper lowering a controller module into a bottom shell on the work surface
The red knob pressed onto a finished unit on the orange work-zone ring, the gripper lifting away
Lowering the module into the bottom shell · and the knob pressed on, the unit finished

An e-ink status wall

An e-ink dot-matrix panel is integrated directly into the cabinet's back wall. It stays dark while the arms are running — avoiding distracting animations while work is in progress — and lights up with a single «HELLO» only once the finished controller is safely stored away.

HELLO on the e-ink back wall, straight on, in its own dot-matrix pixels
HELLO on the back wall, straight on, in the wall's own dot-matrix pixels

A screen that speaks human

The cell needed a terminal, and every state it can be in needed a screen: waiting, counting, building, paused, stuck, done. My first drafts were full of state words — Free, Open, 11:38 — that meant something to me and nothing to someone standing at the worktop with a box of parts.

So every headline became either what you get or what to do next: 6 controllers by 11:20, Close U-01 and I count, Help me with controller 5. The details moved behind a pull-down shade, the way notifications live on a phone, and the rest of the screen went to a picture of the cell itself.

That picture is not a drawing. To keep the screens honest — and the language simple — I render them from the same 3D model as the film: a front view, a three-quarter view, the arms as separate layers. The state goes on top in a thin layer of its own: the drawer you need, the zone you are standing in, the lift that jammed. The screen cannot show a drawer the machine does not have, and when a batch is done the e-ink back wall draws a smile in its own dots.

The terminal on its bracket at the right post of the cell, showing 6 controllers by 11:20, an arm over the worktop beside it
The terminal sits on a bracket at the right post, at eye level beside the worktop. Every screen below lives here

Onboarding, from Wi‑Fi to the first part

The 3D layers paid off most in onboarding, where someone who has never met a robot sets one up alone. It starts with Wi‑Fi, so the cell runs the current firmware before anything moves. Then comes levelling — the cell measures its own floor and names the foot to turn — followed by calibration and a round of self-checks, each a number the cell measured rather than a question it asks.

Only then does it show where its hands will reach, ask for parts one drawer at a time, and build its first controller while you watch.

Connect and levelsteps 1–4

The terminal close up, showing the first onboarding screen: Connect me for updates
1Wi‑FiConnect me for updates — Wi-Fi comes first
2HelloHi! Let's set me up — what arrived and how long setup takes
3LevelLet's stand me level — a spanner on the nut of the front left foot
4ThanksI stand level now. Thank you! — a soft smile on the wall

Meet the stop, and the limitssteps 5–8

5StopPress my red stop now — the console with the mushroom ringed
6ReleaseI stopped. Well done! — twist it to release
The red stop on its own console, beside the cell — hardware, not a button on the screen
7ChecksAll six checks passed — level, zeros, reach, hands apart, clearance, air
8ZonesWhere my hands go — the work volume and the floor strip

Parts, and the first buildsteps 9–12

Looking down into the pulled-out output drawer as the arm files a finished controller
9PartsPut the boards in C-01 — one drawer slid out and lit
10LabelsI have written my own labels — a wink on the wall
11First buildNow the fun part — a gift, the first controller
12DoneDone! My first one — the back wall smiling
Onboarding in three short acts, each next to the hardware it is about: the screen itself, the red stop, the output drawer

Then, every day

Once it is set up, every screen is built the same way: a headline that says what you get or what to do, a line or two of why, the cell itself with only the thing that matters lit, and one button. Step closer and the arms slow down; reach in and they stop; if a part jams, the screen names the part and says whether it is safe to open the lift.

The red stop is not one of the screens: it is hardware, on the console beside the terminal, and onboarding has you press it with your own hand before the first real move.

Making thingsready, building, done

6 controllers by 11:20 — the ready screen, the cell drawn from the 3D model
Ready at 11:38 — taking a board from C-01, making unit 4 of 8
Done! 8 controllers — the back wall smiling
The pull-down shade: jobs, bins, checks, language and network as stacked cards
Close U-01 and I count — the output drawer pulled out and lit

Around peoplethe zones, and what happens when you come close

Slower while you are near — the floor strip in front of the cell lit
Stand clear, three — both zones pulse with the countdown
Stopped for your hand — the work volume over the worktop lit
Paused. Arms still — safe to reach in, a calm face on the wall
Help me with controller 5 — the jammed lift filled red, the four finished ones safe

A new modulea fridge in the right bays

Is this a fridge? — a new module in the right bays
6 fridge recipes — what the new module opened up
Two lunches by 12:19 — the parts drawers locked while it cooks
Lunch at 12:19 — the same screen as a build, taking rice from the fridge
Everyday states in three groups, from the ready screen to a new module

Generated entirely with Python

Every element in this scene was generated procedurally with Python in Blender. Every bracket, bearing housing, and cable gland is defined mathematically with real millimetre dimensions. Parametric properties drive the entire animation rig — from arm kinematics to drawer slides.

Even the soundtrack is synthesised directly from the animation: the script reads joint rotational speeds frame by frame to drive physical audio models, creating authentic servo whines, gear hums, and mechanism clicks without audio samples.

The cell in the dark as its lights come up, before the first move
A gripper lifting a top shell from the tray at the worktop window
The lights coming up on the cell · and a gripper lifting a top shell from the lift

More projects