-
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
- Arm servo trims
- 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 four leg servos have trims. The two arm servos have none -- they run on the plain Servo library, so a horn seated a few degrees off leaves one arm resting visibly lower than the other, and the only fixes today are reseating the horn or offsetting every angle by hand in your sketch.
Planned: the same treatment the legs already get.
cfg.arms.leftTrim = 0;
cfg.arms.rightTrim = 5; // applied to every arm moveApplied inside the ArmServos positioning calls, so that center(), up(), down() and the waves all inherit it -- plus an armtrim console command for the same adjust-and-look loop as trim. See Arms and Calibration.
The trim API exists (Legs::setTrimsDegrees(), saveTrimsToEeprom()), and the console already sets all four at once:
> trim -4 3 0 -2 (left leg, right leg, left foot, right foot)
> trim save (stored in EEPROM, loaded on every start)
But you tune four numbers at a time while holding in your head which is which. Planned: one servo at a time, with guided prompts.
> trim wizard
left leg: +/- to adjust, enter to accept
Should cover the arms too, once they have trims of their own. 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.
The Examples page already carries sketches of this kind, ready to paste. What is left is bundling them into the library itself, worth doing 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 Balance.
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