It's been 4 years and I still remember it. Herman sent me a link to a robotics project which was really worth looking at. It had the uninspirational name '[Ptolemy|http://en.wikipedia.org/?title=Ptolemy_Philadelphus] II' and the [web page|http://ptolemy.eecs.berkeley.edu], well, let's say I felt finger-pointed at by a certain Greek. Using words like 'Java' and Real-Time in the same sentence made me (at that time) drop my chin upon my chest, rubbing my forehead and shaking my head in a 'no' manner. If I had read closer, I had discovered that Java was only used as a tool to create the software, not as the core programming language. Was it because of time-for-coffee or the need-to-fix-imporant-bug-now event that let me ignore this project that day? For four years, I never looked at that project again, not even when I wrote my dissertation. ''Boy was I wrong''.
If you just spend 5 minutes looking below the surface of, I can't help repeating myself, ''a rather ugly website'', you'll see that highly competent people are working on a massive project and are doing so for a decade now. The website is loaded with well written publications, technical reports and tutorials. Especially the publications, like [Taming Heterogeneity|http://ptolemy.eecs.berkeley.edu/publications/papers/03/TamingHeterogeneity/TamingHeterogeneity.pdf] shed a clear light on the problems we all have in robotics control systems: combining the various approaches to control. How do you combine the way of working in [Simulink|] with discrete event models like in [VHDL|tams-www.informatik.uni-hamburg.de/vhdl/doc/cookbook/VHDL-Cookbook.pdf] or verifyable languages such as [CSP|http://vl.fmnet.info/csp/] ? The Ptolemy folks discovered that these 'ways of working' differed in ''computational models'' and found a formalism to describe ''and'' combine them, hence the term 'heterogeneous'. And heck, while they are at it, they generate (some of) the precious code (''C'') as well.
I still lack the knowledge and time to fully capture the extents of this project, but just skimming through the [design documents|http://ptolemy.eecs.berkeley.edu/ptolemyII/designdoc.htm] learns that they coped with, and solved, numerous problems we encountered while designing the Orocos Real-Time Toolkit. This includes type checking, component composition, order of calculation, buffered or unbuffered data and the link between software and hardware computation. Ptolemy is all free and deserves a thorough look, although you'll need to reserve some time as the documents are somewhat lengthy and aren't afraid of educating you in the 'complex' fields of robotics, component models and multi-threading in real-time systems. Hey wait, that sounds just like the Orocos docs!? ''Boy, did we miss an opportunity''.