-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
What is planned, in plain language -- no versions, no dates, just the work ahead. Nothing already shipped depends on any of these; each is additive.
- Non-blocking motion engine
- Event system
- Bench mode in one call
- Custom icons and animations
- Servo calibration wizard
- Example sketches
- Publish to library registries
- ESP32 / ESP8266 support
- More add-on modules
Today every movement call blocks: Legs::walkForward(2) returns only when the walk is finished, so the robot is blind and deaf while moving. This is the single biggest thing raw OttoDIYLib cannot do.
Planned: movements that run in the background.
Legs::startWalkingForward();
if (Eyes::closerThanCm(15)) Legs::stop(); // react WHILE walkingwith Legs::isMoving() to check state and OttoFlow::update() called from loop() to drive the motion step by step. The current API names were chosen specifically so this can be added without breaking any existing sketch. See Movement.
Instead of polling a sensor yourself every loop, register what should happen and let the framework watch for it.
Events::onObstacleCloserThanCm(15, onObstacle); // runs when triggered
Events::everyMs(500, blinkMouth); // runs on a timerThis removes hand-written if/else state machines from reactive sketches. It depends on the non-blocking engine -- events must be able to fire mid-movement -- so it comes after it.
OttoFlow::benchMode() -- shorthand for the desk-testing setup: all servos detached (Motion::disable()), sounds muted (Voice::mute()), and the serial console started, plus a clear indicator on the matrix that the robot is in test mode. Today that is three calls; see Bench Testing.
The matrix currently offers the built-in OttoDIYLib mouth shapes plus single-pixel drawing. Planned: define your own 8x8 icons and multi-frame animations, and show them like built-ins.
OTTOFLOW_ICON(MyAlien,
0b00111100,
0b01111110,
...);
Mouth::showCustom(MyAlien);Stored in flash (PROGMEM), so they cost no RAM. See Mouth.
The trim API exists (Legs::setTrimsDegrees(), saveTrimsToEeprom()), but tuning still means edit, flash, look, repeat. Planned: an interactive session in the serial console.
> trim legleft -3 (servo moves immediately, judge by eye)
> trim save (stored in EEPROM, loaded on every start)
See Calibration.
A numbered examples/ folder, beginner to advanced, shown in both the Arduino IDE and PlatformIO example browsers:
- HelloHeart -- start the robot, show a heart.
- ObstacleAvoidance -- roam and react to obstacles.
- SerialConsole -- bench-test hardware from the Serial Monitor.
- HumanoidArms -- the arms preset and arm moves.
- PowerUser -- custom config, module layer, raw-driver escape hatch.
Written once the feature set settles, so they never go stale.
Submit to the PlatformIO Registry and the Arduino Library Manager so anyone can install OttoFlow by name -- lib_deps = OttoFlow, or an IDE library search -- instead of a git URL. Best done after the API has survived real users without breaking changes. See Installation.
Support the WiFi-capable Otto variants. OttoDIYLib already compiles for ESP32; OttoFlow needs conditional servo and tone backends and a test robot on that board. This opens the door to web-based remote control later.
Most kit extras already ship (touch, sound sensor, photoresistor, Bluetooth with the app protocol, MPU-6050). Still open, each following the extension guide -- a good way to contribute:
- RGB LEDs -- mood colours.
- APDS-9960 -- hand-gesture, colour, and proximity sensor found in some kits.
- Tilt-reactive behaviours -- use the MPU-6050 to detect a fall and get up, or protest when picked up. The sensor module exists; the behaviours do not yet. See Sensors.
OttoFlow is licensed under GPL-3.0 and wraps OttoDIYLib. Buy the kits at ottodiy.com.
Prologue
Getting Started
The Basics
Digging Deeper
- Bench Testing
- Serial Console
- Calibration
- Bluetooth and the Otto App
- Modules
- The Driver
- Extending OttoFlow
Reference