Backhoe loader example
Backhoe loaders are specialised tractors. They are fitted with a loader unit at front, for pushing and carrying, and an extensible arm at rear, for digging, lifting and pushing.
We have developed a graded series of lab exercises for implementing elements of a simplified rear-arm controller. The exercises are designed to increase familiarity and understanding of the Esterel programming language and the synchronous paradigm.
The exercises are accompanied by a simulator written in Tcl/Tk that,
inspired and guided by the wristwatch example, interacts with
xes
to highlight programs as they are simulated. Figure 1 shows a screenshot. The three buttons at
top-left are inputs to the controller, the three lamps below are
outputs. The legs of the backhoe loader and the three arm segments move
in response to controller signals and return feedback from simulated
sensors. The check boxes at bottom-left make debugging with
xes
easier. The buttons at bottom-right control the
simulation.
The simulator acts as a controlling environment to an Esterel program. It approximates the continuous dynamics in discrete steps, triggering a reaction whenever a signal is present. Certain outputs are sustained between reactions. This approach is coarse but effective. It ignores several important concerns in order to focus on fundamental issues of synchronous programming.
The simulation software and exercises may be downloaded provided that solutions are not made publicly available. We would like to preserve the challenge to students (the solutions to many other interesting examples are all too readily available via web search).
The simulator works under Windows but the Makefile will require adjustment. The answers and raw LaTeX can be provided to course supervisors(!) upon request. Questions, comments and suggestions for improvement are welcome.
Recent work shows how the continuous dynamics of the backhoe can also be programmed in a synchronous language extended with Ordinary Differential Equations (ODEs).
Backhoes are beautiful.