Thomas A. Henzinger, Christoph M. Kirsch, Marco A.A. Sanvido, and Wolfgang Pree
We present a methodology for control software development based on Giotto, a domain-specific high-level programming language for control applications. A Giotto program explicitly specifies the exact real-time interaction of software components with the physical world. The Giotto compiler automatically generates timing code that ensures the specified behavior on a given platform.
This article illustrates the Giotto methodology by reimplementing the controller for an autonomously flying model helicopter originally developed at ETH Zuerich. We demonstrate that Giotto introduces a negligible overhead, and at the same time increases the reliability and reusability of the control software.
The article begins with a conceptual overview of the Giotto methodology. We explain how Giotto helps to automate the control software development process, and to improve the quality of the resulting code. We then report on the Giotto helicopter project. We use the autopilot software for the helicopter to guide an informal presentation of the Giotto language, and of the S/G translator, which extracts a Giotto program from a Giotto control model specified in Simulink. This is followed by a brief discussion of the compilation and execution of the Giotto-based control system. The article concludes with a summary of available Giotto implementations, and pointers to related work.
IEEE Control Systems Magazine 23(1):50-64, 2003. A preliminary report on this work appeared in C.M. Kirsch, M.A.A. Sanvido, T.A. Henzinger, and W. Pree, "A Giotto-based helicopter control system," Proceedings of the Second International Workshop on Embedded Software (EMSOFT), Lecture Notes in Computer Science 2491, Springer, 2002, pp. 46-60.