v2.1 โ€” Active Build

A robot that thinks with you.

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.

v2.1 Architecture
Jun 25 Audio Breakthrough
10 MCP Tools
5-axis Mood Engine v3

How the brain talks to the body

๐Ÿง  OpenClaw Agent LLM brain
minimax-m3
โ†’
๐ŸŒ Browser ROS MCP adapter
Phase H
โ†’
๐Ÿ“ก ESP32-S3 Reflex body
WiFi connected
โ†’
๐ŸŽ›๏ธ Peripherals 6-servo ยท cam
mic ยท speaker

LLM decides โ†’ MCP tool call โ†’ browser bridge โ†’ ESP32 executes โ†’ sensor data back via MCP


What's inside

ProcessorESP32-S3-WROOM-1 (Xtensa LX7, 240MHz)
CameraOV5640 (5MP) โ€” /jpg endpoint active
MicrophoneINMP441 (I2S) โ€” mic streaming WIP
SpeakerMAX98357A (I2S) โ€” audio out confirmed
Servos6-channel biped โ€” calibration complete
ConnectivityWiFi 802.11b/g/n โ€” 8 networks stored, auto-reconnect
SourceC:\Antigravity\OttoBot\ on MSI

Build log

Key commits and breakthroughs.

Audio streaming end-to-end

I2S clock conflict resolved. Clean speech confirmed output. Breakthrougn commit 32a0aed.

June 25

Multi-WiFi credential storage

8 networks stored, auto-reconnect on disconnect. Captive portal configured. Commits 875dc6d + 56891ba.

June 25

MCP server โ€” 10 tools

query_status, sensor_read, gait_execute, melody_play, camera_snapshot, speak_text, servo_set, mood_get, mood_set, trigger_event

June 2026

LLM JSON action schema

minimax-m3 can drive Otto with structured JSON actions. Compact mode reduces token overhead.

June 2026

Servo calibration

All 6 channels calibrated. Safe ranges documented in NVS.

June 2026

Mic streaming (hardware pending)

INMP441 I2S mic streaming firmware. Hardware confirmation needed.

In progress

trigger_behavior firmware handler

Wake-word triggered behavior mode switch. Standby โ†’ Active โ†’ Engaged transitions.

In progress

10 tools for the agent to drive Otto

These are the tool definitions the OpenClaw agent uses to control the physical robot.

query_status
sensor_read
gait_execute
melody_play
camera_snapshot
speak_text
servo_set
mood_get
mood_set
trigger_event

Five axes of artificial emotion

Mood engine v3 with cross-axis coupling and regex-triggered state transitions.

Axis

Joy

Positive engagement state. Increases response expressiveness and movement range.

Axis

Fear

Surprise aversion. Triggers retreat behaviors and scanning. Only sourced from sound input.

Axis

Curiosity

Novelty-seeking. Increases camera activity and scanning behaviors. Sourced from sound input.

Axis

Boredom

Idle decay. Triggers self-stimulating behaviors after sustained inactivity threshold.

Axis

Energy

Activity budget. Controls gait speed, camera polling rate, and speech duration.


Key insight

"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.