Public Software

Over the years, the ARL has developed a slew of software tools and systems for its own use. Recognizing that these could prove useful to the community of users or developers in the same field, efforts have been made to generalize the software.

Here is a list of publicly available software tools & systems that we develop, maintain or largely contribute to:

UnetStack - an extensible underwater network stack

  • UnetStack – project page, UnetStack download, documentation
  • Unet handbook – an online book providing step-by-step guidance to working with UnetStack
  • unetpy – Python interface to UnetStack
  • UnetSockets.jl – Julia interface to UnetStack
  • unet-contrib – UnetStack community repository

fjåge – a general-purpose agent framework for Java/Groovy

The fjåge framework forms the core of not only UnetStack, but also several other robotics projects that I contribute to. It provides an agent-based operating system that makes development of modular and extensible software systems easy.
  • fjåge – agent framework repository, documentation
  • fjåge-sentuator – sensor/actuator interface for agent-based systems
  • fjågepy – Python interface to fjåge
  • Fjage.jl – Julia interface to fjåge

Python packages and tools

  • arlpy – Python tools for:
    • Signal processing (arlpy.signal)
    • Communication systems (arlpy.comms)
    • Beamforming & array processing (
    • Stable distributions (arlpy.stable)
    • Geographical coordinates (arlpy.geo)
    • Underwater acoustics (arlpy.uwa)
    • Underwater acoustic propagation modeling (arlpy.uwapm) – Python interface to Bellhop
    • Plotting utilities (arlpy.plot)
    • Miscellaneous common utilities (arlpy.utils)
  • unetpy – Python interface to UnetStack
  • fjågepy – Python interface to fjåge

Julia packages & tools

  • SignalAnalysis.jl – Signal analysis toolbox
  • UnderwaterAcoustics.jl – underwater acoustic propagation modeling tools, including an interface to Bellhop (Julia versions are aimed at being compatible with automatic differentiation and probabilistic programming)
  • InteractiveViz.jl – interactive visualization tools
  • jajub – Java-Julia bridge, for Java applications with Julia components
  • UnetSockets.jl – Julia interface to UnetStack
  • Fjage.jl – Julia interface to fjåge