Inspiration

Autonomous Underwater Vehicles work in a world that is always changing like Temperature, salt content, depth, cloudiness, movement of the target and how much power is left in the battery can all change how sound sensing works.

Our starting thought was simple: a fixed SONAR signal cannot respond well to a changing world. It might keep sending the signal even when conditions have changed, which uses too much power or doesn't work well.

This inspired us to build AquaSense, a low power, real-time , software-defined SONAR transmitter that lets an AUV:

Sense → Decide → Adapt → Transmit

Our goal was to make the SONAR transmitter itself aware of the environment and aware of the power it has instead of using a set way to send signals.

What it does

AquaSense looks at mission factors like temperature, salt content, depth, cloudiness, target movement or Doppler conditions.

Based on what it finds the built-in decision system picks the signal:

  • LFM. For targets that are not moving and for clear stable situations
  • HFM. For situations that are changing and for targets that are moving
  • Phase-Coded Pulses (PCP). For very cloudy situations
  • Geometric Sweep. As another option for software-defined signals

A general sound signal can be shown like this:

$$ s(t)=A(t)\cos\left(2\pi\int_0^t f(\tau),d\tau+\phi\right) $$

For a Linear Frequency Modulated signal:

$$ f(t)=f_0+kt $$

where f_0 is the starting frequency andbk is the rate the frequency changes.

The signal is sent through the DAC using "DMA" and hardware timers so the CPU doesn't have to do it all the time. FFT, spectrogram and performance analysis give feedback for the system.

The system is built around a loop:

Sense → Adapt and Process → Transmit → Analyse

How we built it

We made AquaSense as an embedded mixed-signal SONAR part around an STM32G4-series MCU.

Hardware

  • STM32G4 Series MCU
  • DAC/ADC
  • Low-pass filter
  • Class-D amplifier + MOSFET
  • Underwater acoustic transducer

Software

  • Embedded C
  • LFM, HFM, PCP and geometric signal generation
  • Adaptive decision logic
  • FFT and spectrogram analysis

The adaptive controller checks input factors using a weighted decision system:

$$ S_i=\sum_{j=1}^{n}w_jx_j $$

where x_j is an input factor and w_j is its decision weight.

The chosen signal can then be shown as:

$$ W^*=\arg\max_{W_i}S_i $$

For real-time work we use "DMA" and timers for sending signals and pre-made Look-Up Tables for switching between signals.

The software also uses NVIC priority interrupts, CMSIS-DSP/FPU-based signal processing and WFI-based CPU duty-cycling to save power.

Challenges we ran into

The biggest issue was building a system that can adapt when many factors change at the time.

We needed the controller to tell situations changes in cloudiness and moving situations apart.

Another issue was making signals all the time. Calculating samples over and over adds work to the MCU so we made the system around DMA, timers and LUTs for signals.

Power was another problem because an AUV has only so much battery. This made us focus on power-control and sending signals in cycles.

The power used during sending can be shown as:

$$ E_{\text{tx}}=P_{\text{tx}}\times T_{\text{tx}} $$

For sending in cycles:

$$ P_{\text{avg}}\approx D,P_{\text{tx}} $$

where D is how much of the time the system is sending.

Finally we needed a way to connect the digital decision part to signal making. Our prototype lets us use inputs for sensor conditions and checks signals with an oscilloscope.

Accomplishment that we're proud of

We are proud of making an adaptive SONAR transmitter system instead of just looking at signals as a separate software problem.

Our main achievements include:

  • Software-defined waveform SONAR
  • Real-time embedded decision system
  • Environment-aware signal selection
  • DMA and timer-based signal sending
  • LUT-based fast signal switching
  • NVIC-based quick mode switching
  • FFT/spectrogram-based signal analysis

Sense → Decide → Synthesize → Transmit → Adapt

What we learned

This project showed us that making an intelligent SONAR is not just about adding complex steps but how hardware and software work together is just as important.

We learned how signal generates, ADC/DAC, timers, DMA, interrupts, signal processing and power use must all work together in time.

We also learned the need to build adaptation around system states and clear rules for decisions.

One big lesson was understanding the link between sound physics and how it works in hardware. When a target moves the Doppler effect changes the frequency:

$$ f_r\approx f_t\left(1+\frac{v_r}{c}\right) $$

where f_t is the signals frequency, v_r is the speed of the target and c is the speed of sound in water.

This helped us see why moving targets and changing conditions need to be part of how adaptive signals are made.

What's next for AquaSense

Our next step is to move from our prototype to controlled testing in water.

We plan to:

  • Add real underwater sensors
  • Test how signals work in controlled water experiments
  • Measure how much power is used and how much work the MCU does
  • Check how well signals are found and processed
  • Make the decision system better with real data
  • Improve the power system for longer AUV trips
  • Add the system to an AUV robot
  • Try using data to choose signals after we have enough data
  • Make a closed loop control system

Our long-term goal is to make AquaSense into a small low-power adaptive sound part for AUVs, helping them make better decisions while staying within power limits.

The combination of hardware and software allows AquaSense to generate and transmit software-defined signals in real time.

Built With

  • acoustic-signal-processing
  • adaptive-algorithms
  • adc
  • autonomous-underwater-vehicles
  • battery-aware-control
  • cmsis-dsp
  • dac
  • dma
  • embedded-c
  • embedded-systems
  • hardware-timers
  • low-power-systems
  • real-time-systems
  • robotics
  • signal-processing
  • software-defined-sonar
  • sonar
  • spectrogram
  • stm32
  • underwater-robotics
  • waveform-generation
Share this project:

Updates

Submission history