TrilobiteG: A programming architecture for autonomous underwater vehicles

Hans Christian Woithe, Ulrich Kremer

Research output: Contribution to journalArticlepeer-review


Programming autonomous systems can be challenging because many programming decisions must be made in real time and under stressful conditions, such as on a battle field, during a short communication window, or during a storm at sea. As such, new programming designs are needed to reflect these specific and extreme challenges. TrilobiteG is a programming architecture for buoyancy-driven autonomous underwater vehicles (AUVs), called gliders. Gliders are designed to spend weeks to months in the ocean, where they operate fully autonomously while submerged and can only communicate via satellite during their limited time at the surface. Based on the experience gained from a seven year long collaboration with two oceanographic institutes, the TrilobiteG architecture has been developed with the main goal of enabling users to run more effective missions. The TrilobiteG programming environment consists of a domain-specific language called ALGAE, a lower level service layer, and a set of real-time and faster-than-real-time simulators. The system has been used to program novel and robust glider behaviors, as well as to find software problems that otherwise may have remained undetected, with potentially catastrophic results.We believe that TrilobiteG can serve as a blueprint for other autonomous systems as well, and that TrilobiteG will motivate and enable a broader scientific community to work on extreme, realworld problems by using the simulation infrastructure.

Original languageEnglish (US)
Article numbera14
Pages (from-to)133-142
Number of pages10
JournalACM SIGPLAN Notices
Issue number5
StatePublished - May 2015

All Science Journal Classification (ASJC) codes

  • Computer Science(all)

Fingerprint Dive into the research topics of 'TrilobiteG: A programming architecture for autonomous underwater vehicles'. Together they form a unique fingerprint.

Cite this