Video

Background

Saab Dynamics has a product line of unmanned underwater vehicles (UUV). Sometimes they get stuck underwater and start transmitting an emergency signal. The goal of the project was to implement an autonomous system for finding the position of an UUV in distress, using a drone and a hydrophone.

Implementation

The project was divided into two parts. The first part was making the system work in a simulation environment and extending the simulation environment to meet the project’s needs. The other part was making the system work in reality.

Simulation

The project used ROS2 and the surrounding tools to make simulation and messaging possible. The simulation environment used was Gazebo. The simulated drone was provided by the PX4 drone firmware, which is also used on the real flight controller. For the sound simulation, a custom ROS2 node was written.

Another ROS2 node was responsible for estimating the UUV:s position. Here is an image of the drone in the simulation environment, dipping the hydrophone in the water.

drönar dopp

The sound was simulated according to the exponential power loss model according to

\[ y = \frac{s}{| x -p |^{\frac{\beta}{2}}} + e, \]

where \(y\) is the received signal, \(\beta\) is the path loss coefficient, \(s\) is the recorded base signal, \(x\) is the UUV:s position, \(p\) is the position of the hydrophone and \(e\) is added Gaussian noise.

Reality

The hardware that was used when flying for real was:

setup

For controlling the drone in reality, QGroundControl was used, and the estimation was done afterwards using Matlab scripts.

idyllisk1

Estimation algorithms

The plot of the signal that the hydrophone receives looks like this.

pinger time pinger freq

The signal consists of pulses that occur roughly every 0.7s and have a frequency of 45 kHz. After some filtering, the logarithmic signal power was estimated for each measurement. The measurement model that was used was

\[ y_k = P^0 - \beta \log{(\| x -p_k \|)} +e_k, \]

where \(y_k\) is the estimated power at dipping position \(k\), \(P^0\) is the emitted power at the distance 1 meter, \(\beta\) is the path loss coefficient, \(x\) is the UUV:s position, \(p_k\) is the position of the dipping position \(k\) and \(e_k\) is the noise at the dipping position \(k\).

Estimation was done using both a Gauss-Newton approach and a maximum-likelihood approach. For the Gauss-Newton approach, the square of the prediction error was used as the loss function to find the estimated position through optimization. The maximum likelihood approach gets the estimated position by assuming a noise distribution and then taking the maximum of the liklihood function. Two different distributions were tried, the normal distribution and the skewed normal distribution.

Results

The project was a success. Accurate estimations of the UUV were achieved both in the simulation environment and in reality. Here is one likelihood function from the simulation and one from reality.

Simulation (3 data points) Real data (4 data points)
likelihood_sim likelihood_real
Error: approx. 1 m Error: approx. 25 m

It was found that the likelihood approach worked best with the skewed normal distribution.

Similar results were achieved using the Gauss-Newton approach, but equally fancy plots were not done for that method.

Possible future work is uniting the simulation environment with the real hardware. Other possible improvements include more advanced estimation algorithms and dynamically optimized dipping locations.

Project Members

Avatar

Alexander Roser

Head of Testing
linkedin
Avatar

David Andersson

Head of Documentation
linkedin
Avatar

Isac Lundin

Head of Hardware
linkedin
Avatar

Ken Dahl

Head of Software
linkedin
Avatar

Oscar Holm

Head of Information
linkedin
Avatar

Oskar Philipsson

Head of design
linkedin
Avatar

Hampus Frick

Project Leader
linkedin

Documents