A DREAM Robotics Agent · v01

KIDA-01

Kinetic Interactive Drive Automaton

The flagship of the RIFT fleet. A Raspberry Pi 5 with a Hailo-8L accelerator runs neural vision at the edge, two cameras give her day and night sight, and a local LLM lets her talk, remember and decide without the cloud.

Python C++ Raspberry Pi 5 Hailo-8L Arduino MIT License
KIDA-01's avatar: a human representation of the robot
KIDA-01 · avatar
KIDA-01, the Raspberry Pi 5 tank robot
KIDA-01
KIDA-01 close up
Close up
KIDA-01 from another angle
Detail

Overview

Edge AI on tracks

Neural

13 TOPS at the edge

The Hailo-8L runs real-time object detection and tracking on the robot itself.

Vision

Hybrid dual cameras

A night-vision camera and the IMX500 AI camera work side by side for round-the-clock awareness.

Voice

Local LLM

Whisper listens, Ollama thinks and Piper speaks, all on-device and private.

Navigate

Autonomous driving

Obstacle avoidance, LIDAR sweeps stamped with her pose, person follow that detours around things, and going home.

People

Faces she knows

Say “remember my face” and she greets you by name next time. Only face fingerprints are stored, never pictures.

Routes

Record & patrol

Teach her a route, replay it or patrol it, and she'll tell you if something has changed along the way.

Inner life

Someone at home

KIDA has the same inner life as DREAM, ported from dream_mind and adapted to a robot body (without dreaming, which would cost the Pi too much). It's optional: if it can't load, KIDA runs exactly as before.

Mood

Mood & needs

Valence and arousal, a wandering good-day/bad-day temperament, and needs: loneliness, curiosity, feeling on edge and sleep pressure.

Memory

A memory graph

Every conversation becomes an episode. Recall is associative and mood-coloured, and memories fade unless they matter.

Body

Feeling her body

Bumps, near tip-overs, rough rides, her battery and her Pi's load and temperature all reach her mood. She says “ow”.

Eyes

Glances

About once a minute she glances through cam-1. Nothing is saved, only what she noticed.

Sleep

Dozing off

After a quiet spell she sleeps in IDLE mode and tidies her memories. Talking to her, driving her or a mode change wakes her.

Initiative

Speaking first

A reminder, a question, missing you, a bump. With restraint: never at 3 am, never to an empty room.

Care

Boundaries

She won't pretend to be human, says when something stings, and drops everything for anyone in danger.

Control

Your control

“Forget that”, “forget everything”, “stop talking on your own”. Stop, lock and quit are always honoured.

Day

Today

Distance driven, who she saw, bumps and her mood through the day, summarised on the web page and written into her journal after 9 pm.

The web dashboard has a Mind panel (/mind), and both PC controllers and the Pi HUD show her mood, needs and latest thought. Press T to type to her.

Controls

Two ways to drive

1 · Coordinated

WASD vectoring

W/S forward and back, A/D rotate.

2 · Independent

Tank-style banks

Q/A drive the left bank, W/S the right.

Keys

KeyAction
XSpeed control
TAB / UCycle modes / user control mode
C / VTake a photo / record video
K / LLight effects / lights on-off
HGo home
TType to KIDA
M / SpacePlay music / stop music

Network: SSID NORA, password 12345678. Connect through RIFT on port 5004.

Driven by NORA

NORA can drive KIDA-01 through her IR transmitter: Samsung-format IR at address 0x0DA4, with the fleet link’s commands 0x48–0x4F (drive, stop, obstacle, manual, speed). The IR Arduino (arduino01) prints each command as the IR line the Pi already reads (IRforward, IRrelease, IR3…), so nothing on the Pi changed. Driving switches her into IR Remote mode; she stops once the link has been quiet for 500 ms.

Talking, in Brainfuck

Every phrase is a Brainfuck program that prints its words — hello is ++++++++[>+++++++++++++<-]>.+. → hi — and a robot says it by beeping the program on its buzzer, one tone per symbol, in its own voice. RIFT runs the conversations and asks each robot to speak with GET /chirp?u=<0-13> (phrases 0–6, replies 7–13). KIDA’s voice is the brightest: server.py passes TALK:<u> to the motor Arduino, which beeps it on D8, only while she’s standing still (the buzzer shares a timer with the left motor).

Hardware

What she's built from

Compute
Main boardRaspberry Pi 5 (4 GB)
AI acceleratorHailo-8L (13 TOPS) on an NVMe + AI HAT
StorageNVMe SSD
MicrocontrollersRGBduino Jenny (DEV0), Arduino UNO (DEV1)
Drive & power
ChassisRobot tank chassis
Motors2× 12 V DC via L298N
Motor battery3S 21700 (12.6 V)
Compute battery3S 18650 via Pi UPS
RegulatorLM2596S (12 V → 11.5 V)
Senses
CamerasPi Night Vision + Pi AI Camera (IMX500)
Distance2× HC-SR04 (one on a servo), ToF laser
Ground3-channel line tracker
OtherBall switch, IR receiver, UV, LDR, PIR
Audio & control
OutputPi speakers
InputUSB microphone
ControllersPC, Android, iPhone, wireless keyboard, IR remote

Ground loop warning: all modules must share a common GND. Without it you get erratic motors and noisy sensors.

Pinout

DEV0 (drive)Pin
Right motor PWM / DIR1 / DIR2D6 / D7 / D9
Left motor PWM / DIR1 / DIR2D3 / D4 / D5
ServoD10
Ultrasonic fixed TRIG / ECHOA1 / A0
Ultrasonic servo TRIG / ECHOA2 / A3
NeoPixel strips 1 / 2D13 / D12
Button / buzzerD2 / D8
VL53L0X SDA / SCLA4 / A5
DEV1 (senses)Pin
IR receiverD5
Front / back lights (MOSFET)D2 / D3
Metal sensorA0
PhotoresistorA1
UV sensorA2
Ball switchA3
PIRD4
Line follower L / M / RD8 / D10 / D9

Setup

Bringing her up

Raspberry Pi OS (Bookworm) is recommended. The full guide in the README covers each piece; these are the essentials.

# AI camera models and Hailo runtime
$ sudo apt update && sudo apt full-upgrade
$ sudo apt install imx500-models hailo-all
$ hailortcli fw-control identify

# Local language model
$ sudo snap install ollama
$ ollama pull gemma3:4b-it-qat

# Python environment, speech in and out
$ python3 -m venv ~/kida-venv && source ~/kida-venv/bin/activate
$ pip install -r requirements.txt
$ pip install git+https://github.com/openai/whisper.git piper-tts

Then run her:

$ source venv/bin/activate
$ python scripts/main.py

Hailo not detected? A DKMS module may have failed to build. Pin back to 4.19, which has stable kernel module support, and hold the kernel packages. Also enable PCIe Gen 3 for the AI HAT with dtparam=pciex1_gen=3 in /boot/firmware/config.txt.

To start her on boot, the README has a ready-made systemd service (recommended), plus crontab and desktop autostart options.

Who's nearby

ESP-NOW + Bluetooth LE: the robots sense each other

Every robot sends a small "I'm here" beacon twice a second. The signal strength says roughly how close each one is, and how it changes says whether it's coming closer, steady or leaving. Coarse, for "who's around": the ultrasonic and ToF sensors still do the precise avoiding.

Zones

Very close to far

Above −45 dBm very close, −60 near, −75 medium, below that far.

Talk

In Brainfuck

Over ESP-NOW each beacon carries a program that prints park, go, wait or hand; the receiver runs it. RIFT decodes them too.

Manners

Who makes way

A parked robot isn't the one moving; a yielding one is making way; a human-driven one gets space; otherwise the alphabet decides, and everyone makes way for MILA.

A Pi can't speak ESP-NOW, so KIDA-01 uses the Pi's own Bluetooth LE to hear NORA, WHIP, KIDA-00 and RIFT and be heard. In autonomous mode the Pi steps in over her Arduino to give way, and slows her down near other robots. GET /near shows her list.

Screens

The controllers

Captured without a robot connected, so live values show their offline state.

KIDA-01's remote controller with camera panels and mind readout
Remote controller (pygame)
KIDA-01's web dashboard
Web dashboard

Music & voice

What KIDA-01 plays and says

Her music player's tracks from audio/music/, and her spoken mode announcements.

The DREAM Robotics ecosystem
Minds — DREAM companion · TINA engineer · NINA caretaker · RIFT fleet hub · LYCEA training school
Robots — NORA · MILA · WHIP · KIDA-00 · KIDA-01 · IDA · ARM
Tools — CRUSH compression · Image-Generator · GloriosaAI · SynthWomb · PyVitals