Time for refactor !
Just a dynamical roadmap for discussions, before refactor
- Posibilitie to tweak hardware ( controlers, pins, etc ... ), a default hardware configuration must be set as default for beginers.
- Config files must evolve -> we need to use existing json files related to service .
To do this, we need a new configuration system -> refactor inmoov swing gui to graphical attach things, based on attach services pattern.
java need to be the core and python a minimalist scripting thing.
- Globalize things, today it is already globalized but maybe we can enhance using conventions.
- New InMoov life service ( push some python things to java land )
- Ear commands : if chatbot is loaded we want to add a simple command like it : ear.addcommand("bring me the beer",walk()) ... without to put hands inside aiml files if we don't want. So maybe inmoovGesture need to migrate to ear.addcommands.
- Refresh gesture creator, wahooo today it is hard to make a gesture from scratch !
- Use / Interract with external service ( Exemple inmoov.fr website for sharing gestures with friends / export + save mrl config, this line is for Seb if he read it. And MRL cloud server for shared knowledge and central API things ) ...
- Servo calibration process
what else ?
Support for non Arduino set up's
What would be very good, is if the config can be setup so that for anyone ont using an Arduino for the servo control, such as an I2C 16 channel servo driver controlled from the likes of a Raspberry pi, that would be very good
Raspberry Pi 3's are very cheap and would make for a good beginners computer for the Inmoov robot for those who like to experiment a bit.
There are also other Single Board Computers (SBC) out in the market now aimed at Makers that also support the I2C protocol on the board.
We also still need the support for the Arduino's to be connected as well, there are far too many beginers and established Inmoov robots out there not to support the Arduino.
The other thing that could be considered is support for distributed processing, using vision processing on a seperate computer compared to the rest of the system as an example
No Peers And Lots of Attach !!!
Peers should go away in Nixie ... "AND" - even more important is the ability of services to :
service1.attach(service2)
This is a global change for all services (not just InMoov)
InMoov should embrace this change - additionally I think it would be greatly beneficial to have a "Config" object in InMoov. This InMoovConfig would be the source of "all" defaults, if its a POJO in InMoov it can simply be expressed as a lovely json file... (but wait theirs more !) It would be a data object in webgui - easy to show and modify (similar to the json file). If InMoov service maintains a reference to this config object, its part of MRL's save / load serializing.
There needs to be a standard of when & how the services are "created" & when they are "attached"
We are trying to make it easy for the user to run a standard InMoov with the minimal amount of code, but at the same time allow easy (and minimal) changes so that (as an example) I2c & RasPis can be substituded in for Arduinos.
Thanks for starting the post moz4r .. althought the cat is now driving me a little crazy ;)
Not having to deal with the
Not having to deal with the aiml stuff would be very welcome! Maybe also adding addResponse("what is your name","my name is marvin") or addQuestion("what is your name"), store the answer as "currentName" and use "currentName" when asked "what is my name"?
In your example with the beer "walk" would be a python def? I am still busy making marvin detect a aruco marker and find a way to get in front of it and it includes a lot of steps and multiple python processes. As I am not a java lover I enjoy running things in python and command the robot through the MRL rest api and I can talk from MRL python stubs to the python tasks over rpyc.
For the gestures it might be nice to convert a kinect skeleton session into the apropriate servo sequences?
"addResponse" will be very
"addResponse" will be very usefull ! A new friend to "addCommand" .
Excited ! So much cool things to do.
First, let start by a finger :)
Idea for inmoov frontend, is it the way to go ?