High-performance visualizations and simulations for ocean environments and the Mine Countermeasure mission using C3L

Effectively developing complex distributed systems of interacting devices has challenged the state of the art for many years. Practical application domains like hunting for mines in the ocean using collaborating groups of unmanned, underwater vehicles have underscored the need for not only better programming languages for scalable distributed system design but also better development, modeling and visualization tools that enable the developers to more rapidly identify and avoid problems, then converge on viable solutions. The Command, Communication and Computation Language (C3L) was developed specifically for this application and utilizes a purely asynchronous, discrete-event driven architecture to achieve formal controllability and behavioral properties specifically for the application domain of unmanned, Autonomous Underwater Vehicles (AUVs) participating in a Mine Counter-Measures (MCM) mission. In such applications, collaborating AUVs act as a distributed system of autonomous agents. Effectively programming distributed systems has proven to be technically challenging, requiring a language with a foundation of strong controllability properties, the computational expressiveness approaching a general-purpose language and the ability to easily express communication between devices. C3L abstracts the complexities of communication and distributed control into a unified framework based on raising events, freeing the application developer from the tedious tasks of programming lower-level functionality and allowing him or her to focus on the higher-level behavioral requirements of the mission. The C3L language also features a rigorous yet intuitive plant model that explicitly designates state-space variables and procedures controlling precisely how controllable aspects of the state-space may change. This programming paradigm enables the developer to take a design that begins as a mathematical model and implement it almost directly as a program for evaluation. A compiler based on the Microsoft Phoenix framework for compiler design and optimization has been created to take C3L programs and generate executable code for either simulation studies or for direct implementation on actual hardware. This compiler automatically extracts task-level parallelism inherent in C3L programs and generates a multi-threaded application with no explicit actions required by the programmer; such applications are ideal for the multi-core and many-core processors of today's and tomorrow's computers and embedded controllers. In complex, distributed systems, visualizations of performance and behaviors can be critically important to the overall utility of the application in either simulation studies or in actual applications. To best position C3L as a powerful language for modeling and implementing such systems, the Visualization Tool Kit (VTK) was integrated with the C3L compiler. This permits a C3L program to generate directly powerful, 4-D presentations of data in a fully configurable way. Figure 1 illustrates a representative screen shot of such a visualization, depicting two collaborating AUVs in a MCM mission in a section of the Chesapeake Bay. The bathymetry was generated directly from NOAA echo depth sounding data in a text-based XYZ format; such data is freely downloadable from the Internet. Functions were created to convert the latitude and longitude data from the depth sounding data to meters, and then convert the irregularly-spaced depth sounding data to a surface using a filtered 2D Delaunay triangulation. The complexity of the resulting surface may be reduced using a quadric decimation filter if desired. Consequently, a C3L-based simulation or application may include visualizations not only of the 'actors' in the distributed system but also in a realistic scenario capable of utilizing actual bathymetry. We present the visualization support integrated into the C3L compiler and describe the language extensions developed to leverage these capabilities in either simulation studies or in actual implementations. We show how the C3L language and its visualization- enabled compiler allow distributed system development to go from a purely mathematical state-based model through simulation studies directly to actual implementations. Finally, we present an example application from the mathematically model through a C3L simulation implementation.