Programming tools

@Matthieu and I discussed today with Gerard Berry on software issues around Poppy.
Several links coming out of it and to look further:

  • It appears interesting to consider Esterel and its visual tools as a way to program Poppy (older versions should be usable)
  • SCADE may be worth trying (itself based on Esterel) and may be accessible for academics (free?)
  • SyncChart may be an interesting visual language based on Esterel (?): http://en.wikipedia.org/wiki/SyncCharts
  • the HOP orchestration language (made for the web, but useful for robotics): http://hop.inria.fr/#home-notepad=np:0

SCADE is a very good tool to program real-time applications: for and against
For:

  • Reading and understanding a SCADE program is quite easy. It is like an electronic schematic
  • It is possible to make a meeting around a sheet to discuss about it. It is more difficult with a script.
  • The results of the compilation is exactly what you program on the schematic
  • Numerical filtering, logics, realtime algorithm computation, variable sharing… is intuitive to handle
  • Tools for software certification are already done (verification, structural completeness…)
  • The language can handle an explosive complexity of the software
  • intercation with a simulator is very easy

Against:

  • Like Simulink, the ability to make subsystems is to avoid. Subsystems shall be seen as new “symbols”. Therefore some data (and errors) can be hidden.
  • A sheet with lots of symbols can be awful. Sometimes, you are solving a maze to find the error.
  • All is not inside the sheets… there is also the sequencing, that is to say the order in which the sheets are computed. If the sequencing is erroneous, algebraic loops can appear or unwanted delays.
  • The variable name must be as clear as possible.
  • It is obliged to have common coding rules to avoid the issues above.
  • It is easy to make new sheets… the complexity can then explode.
  • There is no file or configuration handle. I do not see how we could do developmental algorithms with SCADE (maybe there are solutions to do this), or multi-agent software.