Context
A problem we want to solve is to make easy for anyone to work on robotic. We think especially of non-uber-geeky people such as artists, social scientists and young students. Therefore a major part of our work is to reduce the barrier for newcomers and made simple that should be simple but is not …
Poppy’s creature are controlled by pypot (Python) embedded on tiny linux computer. For Poppy Humanoid, we have integrated an Odroid U3, and for Poppy Ergo, we are thinking about a Raspberry Pi. It is a great feature to have embedded control, it avoids direct USB connection and multi-OS installation troubles. Yet the access to the robot become slightly more complex because there is now a network between your computer and the robot your are trying to play (or sometimes work) with.
There is no screen, keyboard and mouse. While being very powerful, dealing with user groups, terminal, SSH and emacs/vi is not that I consider as an “simple and accessible” tool to control a robot.
Internet browser are used by everyone on daily basis and web techno are cross-platform. Thus we would like to run a server directly on the robot, which generates a web interface and gives access to the main user needs.
NB: Actually, we already did one on Poppy Humanoid to simplify the access of basic behaviors for demonstration purposes. Yet it is Quick’n’Dirty and not easily extendable for future needs
As member of the Flowers team (research laboratory), building such interface is clearly out of our technological confort zone, both for the server and the UX. Yet we have a more or less clear idea about what it is needed, at least as a first instance, to increase the relevance and the accessibility of Poppy’s creature in educational and artistic contexts.
I open this topic to kickoff this project, share our current ideas and open the development, right from the beginning, with wild developers
Webapp
We need to develop an interface which gives access to several services. A challenge is to make this interface simple and intuitive on the UX side while robust and easily extendable on the server side so a developper can add new app without breaking anything.
Apps
As a first instance, I have listed some needs group by potential apps a Poppy user could have while working with a creature:
-
Admin:
-
reboot, halt the embedded computer
-
configure network connexion
-
update the software
-
run linux command
-
…
-
Demo:
-
starting/stopping the robot
-
run attached primitives
-
record and store demonstrated movement
-
Notebook: Integrate and run ipython notbook to facilitate the python development directly on the robot.
-
Snap: Integrate and run Snap so we can control creature with this amazing visual programming tool.
-
Monitoring: Display all sensors and internal values such as position, load, temperature, camera,… but also behavior actions to facilitate the investigation when the actual result is not expected …
-
Logs: Navigate through the robot and linux logs
-
Help: Display some tutorial and the Poppy forum to obtain support.
Of course this list could be appended with apps we did not yet think about…
Interface
Like the apps, here is a first sketch of the potential web UX :
- Status: Gives basic information such as the robot state (on/off), the current ip address and so on …
- Apps: The list of all apps available on the robot.
- Body: the zone where we interact with the selected app
- Notification: a zone where we can push information such as “Alert! the knee motor is hot as hell !”
Technologies
As I said previously, we are not very skilled to develop this kind of software. Yet from the first exploration over google/stackoverflow I made, there are some technologies that seem adapted:
Server: Django ?
Django is a very powerful python framework to create dynamic website, also it is very well documented.
For this project it has the great feature of managing apps as module we can add or not to our web interface. Therefore it could be possible to add new apps afterward and it should be rather straightforward… It would permit also to modularize the interface so developers can focus their contributions on that they are interested in (e.g. the monitoring of data, the admin panel, … )
**Yet this first choice is also driven by the technology we know (python) rather than other relevant technology such as PHP ( ), Node.js or Ruby on rails…¨¨
UX: Bootstrap 3 ?
We love bootstrap because it allows for n00b like us creating simple and beautiful web pages.
For this project, there are Bootstrap Admin templates with all UI needed:
For example: AdminLTE
Bootstrap has also very nice charts which can be adapted for monitoring all the data in the robot:
Contribute
When the first design and technology choices will be done, we will open a github repository so interested developers can freely fork and pull-request their work.