OttoBot v2.1: an ESP32-S3 body with reflex behaviors, a browser-ROS bridge, and an LLM brain powered by an OpenClaw agent. Audio streaming confirmed June 25.
Architecture
LLM decides โ MCP tool call โ browser bridge โ ESP32 executes โ sensor data back via MCP
Hardware
| Processor | ESP32-S3-WROOM-1 (Xtensa LX7, 240MHz) |
| Camera | OV5640 (5MP) โ /jpg endpoint active |
| Microphone | INMP441 (I2S) โ mic streaming WIP |
| Speaker | MAX98357A (I2S) โ audio out confirmed |
| Servos | 6-channel biped โ calibration complete |
| Connectivity | WiFi 802.11b/g/n โ 8 networks stored, auto-reconnect |
| Source | C:\Antigravity\OttoBot\ on MSI |
Milestones
Key commits and breakthroughs.
I2S clock conflict resolved. Clean speech confirmed output. Breakthrougn commit 32a0aed.
8 networks stored, auto-reconnect on disconnect. Captive portal configured. Commits 875dc6d + 56891ba.
query_status, sensor_read, gait_execute, melody_play, camera_snapshot, speak_text, servo_set, mood_get, mood_set, trigger_event
minimax-m3 can drive Otto with structured JSON actions. Compact mode reduces token overhead.
All 6 channels calibrated. Safe ranges documented in NVS.
INMP441 I2S mic streaming firmware. Hardware confirmation needed.
Wake-word triggered behavior mode switch. Standby โ Active โ Engaged transitions.
MCP Server
These are the tool definitions the OpenClaw agent uses to control the physical robot.
Mood Engine
Mood engine v3 with cross-axis coupling and regex-triggered state transitions.
Positive engagement state. Increases response expressiveness and movement range.
Surprise aversion. Triggers retreat behaviors and scanning. Only sourced from sound input.
Novelty-seeking. Increases camera activity and scanning behaviors. Sourced from sound input.
Idle decay. Triggers self-stimulating behaviors after sustained inactivity threshold.
Activity budget. Controls gait speed, camera polling rate, and speech duration.
Philosophy
"Hardware constraints surface as software bugs."
Check the datasheet before debugging code. OttoBot's I2S clock conflicts, servo jitter, and heat drift all had hardware root causes โ not code.