Calibration of Seismic Sensors

Return home.


ISTI develops and maintains integration software for seismic monitoring. This project added the ability to calibrate the hardware used. It consisted of three parts: overall coordination; a graphical interface (in Java); and a set of C programs to implement the hardware control and numerical analysis. I was responsible for the design and implementation of the C code.

Example Use Case

Design Aims


A client may maintain sensors at multiple locations. The software is installed once at each location and controls all local calibrations.

The required functionality is implemented through a number of small tasks (the “Unix approach”). The tasks can be used individually, with all parameters specified on the command line (useful for detailed analysis and system debugging).

In routine use the tasks coordinate through a database. Three commands (to start a new calibration, add signals, and schedule the work) are used to add new information to the database. A scheduler then takes control, invoking further tasks until the calibration is complete.

The scheduler itself is fairly limited; it can resolve conflicts and queue tasks, but has no detailed knowledge of the steps required. Instead, each task contains sufficient logic to evaluate its own performance and request further tasks. The result is a very flexible system composed of cooperating (but largely sequential) agents, sharing data through a common repository.

The database is used only for task co-ordination. A separate, file–system store of results is maintained. These can be accessed directly by an operator or the GUI.

Lessons Learned


The Unix tools / collaborating agents approach works really well. As does using ssh + command–line as a simple network API for the GUI. The result is a complex, powerful system that is still easy to pull apart, debug, modify and maintain.


We need to improve communication and cooperation with the client: