BUD: a Monty and CARFAC robotics implementation

hey there! been heads-down building a body for this stuff and she finally moves, so here’s BUD (Bryan’s Ultimate Droid).

the question is basically: how little brain does it take to get a thing looking at and moving around the world, if you build it the TBP way? every sensor is its own column, they vote, nobody’s the boss.

she’s cheap as hell: an Uno + motor shield on mecanum wheels (with a sonar and a deadman stop so she halts if the link dies), an ESP32 as a little brainstem streaming two electret mics through a WM8731 codec over WiFi, and a Pi 4 as the host.

biggest lesson so far: columns need three answers, not two. “here’s a value”, “something’s here”, and “i dunno.” letting the unsure ones sit out is what made voting work. in a sonar-federation sim that got 4884/5000 right with 23 crashes, and a two-column letter vote went 54 right / 7 wrong / 3 abstain out of 64.

live right now she roams (turned away from a wall at 16cm on her own, every belief logged with where it came from), follows my hand over wifi, and hears through CARFAC, with both ears running through a compiled cochlea. pic of her hearing me yell “hey over here” attached lol

the ears are noisy though. funniest bug: her own wifi was leaking into the mics at exactly 48000/256 = 187.5 Hz, her packet rate. she could hear herself talking to the Pi. subtracting that pattern dropped it from 30% of the signal to 2%. the rest is at the mic amps, fighting that in hardware. left-side calls do hit her left ear ~210µs early, consistently, but at this noise level her ear column mostly says “sound, not sure where”, which honestly is the right answer.

to be straight: real tbp.monty isn’t on the wheels yet, the live body is lean monty-style columns. the monty work is FrankenMonty: i numba-JIT’d monty’s hot evidence paths with a hard rule that output stays identical. 14/14 benchmarks identical at 2x faster, letters went 220 → 44 ms each, and YCB 20/20 identical.

next up is cleaner ears, more distance sensors so she can steer, and getting the vote onto the body. then a bigger chassis, because she proved the idea on like $50 of parts

i’ll give code and videos once i have tbp implemented and BUD recognizing people by voice and following in a room. In sims it works, in the real world, it’s time consuming

3 Likes

update:

tbp.monty runs on the Pi, CPU only: 414 ms per letter stock, 218 ms with FrankenMonty, both 8/8.

The ears were hiss at first. I fixed it by subtracting the WiFi noise and moving the mics to clean power, which dropped the noise floor about 4×. CARFAC finally shows MY voice in real time:

Timing between the ears failed, but loudness worked. In a blind test I drew the answers into my desk first, and she got 8/8 on which side I called from.

Next: hear, turn, come. Then timbre as objects, starting with my voice

also, to be clear: on a rasp pie

3 Likes