Skip to the content
PCBKitNew board
2 layers9.4 × 31.9 mmRobot mainboard, the printed circuit board in 3D

Robot mainboard

offmor/RoboTheater2

Code, hardware designs, and documentation for RoboTheater: A tabletop multi-robot platform that translates LLM-generated scripts into robot motion and multimedia output.

Size
9.4 × 31.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
24
Pads
86
Tracks, vias
194, 52
Pours
47
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
15 Jul 2026
Updated
15 Jul 2026

Overview

Robot mainboard is an open-source printed circuit board by offmor, from the offmor/RoboTheater repository on GitHub, published under the MIT licence. It is a 2-layer board of 9.4 × 31.9 mm with 23 parts on 24 nets, routed with 194 tracks and 52 vias.

It is built around the SN74LVC2G14DBV. Its parts include 5 capacitors, 4 ICs, 4 connectors and 1 switch. It belongs with the robots and motor control and computers and single-board computers boards of this library.

Main components

1

README

README.md

RoboTheater

paper license PlatformIO

Build your own desktop multi-robot storytelling theater.

RoboTheater turns LLM-generated scripts into embodied storytelling on a desktop scenario: multiple tabletop robots speak, move, and act out characters over a wireless network.

Robots in action Tabletop robots

Paper

RoboTheater: A Multi-Robot Storytelling Platform from LLM Scripts to Stage Performance

Yinghao Gao, Yongbo Yang, Chenwan Halley Zhong, Xinyi Zhang, Junrong Song, Lawrence H. Kim, Tengfei Chang, Xin Tong

TEI '26 · DOI: 10.1145/3731459.3779333

Repository layout

text
RoboTheater/
├── apps/
│   ├── authoring-tool/      # LLM story generation (Flask + web UI)
│   └── performance-runner/  # TTS playback + MQTT motion
├── firmware/
│   ├── robot-controller/    # Robot firmware (PlatformIO)
│   └── test/                # Motor / fidget hardware tests
├── electronics/
│   ├── kicad/               # Mainboard schematic & PCB
│   └── fabrication/         # Gerbers, BOM, positions
├── mechanical/              # 3D chassis & wheel models
├── example/                 # Sample story JSON scripts
├── assets/                  # Images for this README
├── .env.example             # Environment variable template
├── CITATION.cff
└── LICENSE

Start

1. Build the robots

Print / fabricate the chassis and assemble each robot:

  • Mechanical parts: mechanical/models/ (top, middle, bottom STEP; wheel STL)
  • Electronics: KiCad project + fab files in electronics/ (mainboard with TB6612FNG, Seeed Studio XIAO ESP32-S3)

See mechanical/README.md and the files under electronics/.

2. Flash the firmware

Install PlatformIO, then for each robot:

bash
cd firmware/robot-controller
cp include/config.example.h include/config.h

Edit include/config.h with your Wi-Fi SSID/password, MQTT broker IP, and a unique ROBOT_ID (e.g. robot1, robot2).

bash
pio run --target upload

Details: firmware/robot-controller/README.md.

3. Set up the software

Requirements: Python 3.10+, an MQTT broker on the same LAN as the robots, VLC, plus OpenAI and ElevenLabs API keys.

bash
cp .env.example .env
# Edit .env — fill in OPENAI_API_KEY, ELEVENLABS_API_KEY, MQTT_BROKER, MQTT_PORT

Load the variables into your shell before running the apps:

bash
set -a && source .env && set +a

Install dependencies:

bash
cd apps/authoring-tool/backend && pip install -r requirements.txt
cd ../../performance-runner && pip install -r requirements.txt
VariablePurpose
OPENAI_API_KEYStory generation / update
ELEVENLABS_API_KEYSpeech synthesis (cached after first run)
MQTT_BROKERBroker host (default localhost)
MQTT_PORTBroker port (default 1883)

4. Generate a story

bash
cd apps/authoring-tool/backend
python app.py

Open apps/authoring-tool/frontend/ in a browser (e.g. Live Server on port 5500). Set stage size, theme, robot count, and length, then click Submit.

5. Run speech and motion

With robots online and the MQTT broker running:

bash
cd apps/performance-runner
python run_performance.py ../authoring-tool/backend/story.json --audio-mode local

Or click Perform in the authoring UI. Speech plays locally via VLC; motion commands go to the robots over MQTT.

Try a sample script first (no robots required with --dry-run):

bash
cd apps/performance-runner
python run_performance.py ../../example/A\ Magical\ Christmas\ Conspiracy.json --dry-run

More detail: apps/README.md, example/README.md.

Hardware requirements

ItemNotes
Tabletop robotsSTEP/STL models in mechanical/models/
MCUSeeed Studio XIAO ESP32-S3
MainboardIncluding motor driver TB6612FNG; KiCad project + fab files in electronics/
SetupRuns on a table
OptionalExternal speaker / projector for narration and visuals

Citation

If you use RoboTheater in academic work, please cite:

bibtex
@inproceedings{10.1145/3731459.3779333,
  author    = {Gao, Yinghao and Yang, Yongbo and Zhong, Chenwan Halley and Zhang, Xinyi and Song, Junrong and Kim, Lawrence H and Chang, Tengfei and Tong, Xin},
  title     = {RoboTheater: A Multi-Robot Storytelling Platform from LLM Scripts to Stage Performance},
  year      = {2026},
  isbn      = {9798400718687},
  publisher = {Association for Computing Machinery},
  address   = {New York, NY, USA},
  url       = {https://doi.org/10.1145/3731459.3779333},
  doi       = {10.1145/3731459.3779333},
  booktitle = {Proceedings of the Twentieth International Conference on Tangible, Embedded, and Embodied Interaction},
  articleno = {73},
  numpages  = {7},
  keywords  = {Multi-Robot Systems; Human-Robot Interaction (HRI); Storytelling},
  series    = {TEI '26}
}

License

This project is released under the MIT License.

Parts

23
QtyValueFootprintReferences
9~TestPoint:TestPoint_Pad_1.5x1.5mm3V3, D4, D5, D6Tx, D7Rx, D8, D9, D10, GND
4100nFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C5
4~xiao ESP32S3_PCB:CONN-TH_2P-P1.25_XUNPU_WAFER-GH1.25-2PLBCN1, CN2, CN3, CN4
2~xiao ESP32S3_PCB:HDR-SMD_7P-P2.54-V-M-S4.8U1, U4
122uF/25VCapacitor_SMD:C_1206_3216MetricC4
1SN74LVC2G14DBVPackage_TO_SOT_SMD:SOT-23-6U3
1TB6612FNGPackage_SO:SSOP-24_5.3x8.2mm_P0.65mmU2
1~xiao ESP32S3_PCB:SW-SMD_MSK12CO2SW1

Questions

How big is the Robot mainboard PCB?

It measures 9.4 × 31.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Robot mainboard use?

23 parts, built around the SN74LVC2G14DBV. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Robot mainboard KiCad files?

From the offmor/RoboTheater repository on GitHub, at the commit this page was made from: the board is electronics/kicad/robot-mainboard.kicad_pcb and its schematic electronics/kicad/robot-mainboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Robot mainboard design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers70 × 73.1 mmNeopico hd, the printed circuit board in 3D

    Neopico hd

    fliperama86/neopico-hd

    Digital video and audio capture with HDMI output for Neo Geo MVS arcade hardware using Raspberry Pi Pico 2

    37 parts90Unlicense
  • 4 layers68.5 × 89.9 mmBeagle wire, the printed circuit board in 3D

    Beagle wire

    mwelling/beagle-wire

    ICE40 FPGA Cape for Beaglebone

    104 parts53
  • 2 layers37 × 70.9 mmOpendiag, the printed circuit board in 3D

    Opendiag

    maximus64/opendiag-hardware

    OpenDIAG - Open Source OBD2 Interface (Hardware)

    148 parts5CERN-OHL-S-2.0
  • 4 layers45 × 53 mmOpenTRV ESP, the printed circuit board in 3D

    OpenTRV ESP

    mpiraux/OpenTRV-ESP

    An open-source and open-hardware thermostatic radiator valve based on the ESP32C6 and the 28BYJ-48 stepper motor.

    64 parts2CERN-OHL-P-2.0
  • 2 layers40 × 70 mmKinetiCoreDC, the printed circuit board in 3D

    KinetiCoreDC

    axpaul/KinetiCoreDC

    Compact STM32G0-based DC motor controller board featuring TI DRV8874 H-bridge drivers, RS485 communication, optoisolated I/O, and hardware power protection.

    183 parts1CERN-OHL-S-2.0
  • 4 layers140.6 × 108.1 mmDrone, the printed circuit board in 3D

    Drone

    iridia-ulb/drone-pcb

    Printed circuit board for the drone

    228 parts1
  • 2 layers71.1 × 100.3 mmStepper, the printed circuit board in 3D

    Stepper

    pavel-ruban/TB6560AHQ-stepper-driver

    Stepper Driver, used to drive 1.6-7 A motors

    89 parts1
  • 2 layers87 × 79 mmKonar2, the printed circuit board in 3D

    Konar2

    balamutnypapcio/Wilus_MiniSumo

    56 parts