When I write software to meet my needs, I often find that those needs may be shared by others. So I try to make the software more generally applicable, and offer it to others who might have use for it. The process of generalizing helps me write better software. And usage by others improves the quality and features through user feedback & bug reports.
Here is a list of publicly available software tools & systems that I 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
- unetsockets – various language interfaces to UnetStack
- unetpy – Python interface to UnetStack
- UnetSockets.jl – Julia interface to UnetStack
- UnetUtils.jl – Julia utilities for working with UnetStack
- unet-ros2 – experimental UnetStack-ROS2 gateway
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 & tools
- arlpy – Python tools for:
- Signal processing (
arlpy.signal
) - Communication systems (
arlpy.comms
) - Beamforming & array processing (
arlpy.bf
) - 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
)
- Signal processing (
- 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
- AcousticRayTracers.jl – differentiable acoustic ray-tracers
- DataDrivenAcoustics.jl – data-driven acoustic propagation models
- AcousticsToolbox.jl – interface to Bellhop and Kraken acoustic propagation models
- VirtualAcousticOcean.jl – real-time underwater acoustic simulator
- InteractiveViz.jl – interactive visualization tools
- UnetSockets.jl – Julia interface to UnetStack
- Fjage.jl – Julia interface to fjåge
- ProtocolDataUnits.jl – encoders & decoders for PDUs
- AdaptiveEstimators.jl – adaptive filters, channel estimators and equalizers
Miscellaneous
- jhwbus – Java hardware bus (I2C) access
- Jupyter IEEE paper template – Jupyter notebook to generate fully formatted IEEE papers