Tools for preprocessing and analysis of underwater acoustic data.
Project description
NautiloPy: An open-source Python framework for the Gironda Underwater Cave Sonar And vision data set
Authors: Thomas Guilment, Gabriele Morra, Leonardo Macelloni, and Marco D'Emidio
Run the Project
1. Install UV
This project uses UV for dependency management and environment setup.
-
Linux/Mac OS
Usecurlorwgetto download and execute the script:curl -LsSf https://astral.sh/uv/install.sh | sh
or
wget -qO- https://astral.sh/uv/install.sh | sh
-
Windows
Use PowerShell:powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2. Run the Demonstration Notebook
After installing UV, download/clone this repository:
git clone https://github.com/20KUTS/nautilopy-uace2025.git
Then, open a shell/terminal/command prompt inside the folder and run:
uv run jupyter lab Nautilopy.ipynb
This will open Jupyter Lab with the Nautilopy.ipynb demonstration notebook.
Project Overview
Nautilopy is a Python module for 3D underwater cave mapping using sonar technology. It provides tools and algorithms to:
- Process sonar data
- Generate 3D models of underwater cave systems
- Visualize data from the “Underwater caves sonar and vision dataset”
A demonstration notebook, Nautilopy.ipynb, is included to help you get started.
Dataset Description
The dataset, provided by Angelos Maillos et al. (2017), includes sensor data collected during an AUV mission in July 2013. Because of the caves’ spatial complexity, a diver guided the AUV. For this project, the original ROS bag data have been processed with bagpy to convert the ROS messages into CSV files.
Sensor Suite
- Two mechanically scanned imaging sonars (MSIS)
- Doppler velocity log (DVL)
- Two inertial measurement units (IMUs)
- Depth sensor
- Vertically mounted camera (for ground truth validation)
Available Data Topics (from CSV)
/depth_sensor— DS2806 HPS-A pressure sensor data/dvl_linkquest— LinkQuest NavQuest 600 sensor data/imu_adis— Analog Devices ADIS16480 sensor data/imu_adis_ros— ADIS16480 orientation in standard ROS format/imu_xsens_mti— Xsens MTi sensor data/odometry— Robot pose estimation/sonar_micron— Tritech Micron DST sensor beam data/sonar_micron_ros— Micron data in standard ROSLaserScanformat/sonar_seaking— Tritech Super SeaKing DFP profiler sensor beam data/tf— Sensor offset transformations
Sonar Specifications
| Specification | Imaging sonar Tritech Micron DST |
Profiling sonar Tritech Super SeaKing DFP |
|---|---|---|
| Frequency | Chirped 650 to 750 kHz | 0.6 MHz | 1.1 MHz |
| Max range | 75 m (20 m used) | 80 m | 40 m (10 m used) |
| Horizontal beamwidth | 3° | 2° | 1° |
| Vertical beamwidth | 35° | 2° | 1° |
| Scan rate (360° sector) | 5 − 20 sec | 4 − 25 sec |
Available Data in Python
During pre-processing, CSV sensor data are loaded, interpolated, and saved into Python-friendly formats. These variables are stored in a Pickle folder. The variables have the following new names:
1. Horizontal (Micron) Sonar Data
v_timestamp_micron: Timestamps of Micron sonarm_beam_data_micron: Beam intensity data (range vs. time)m_ypr_micron: (Yaw, Pitch, Roll) over timem_xyz_pos_micron: (x, y, z) Cartesian positions over timev_angles_rad_micron: Scanning angles over time (radians)v_range_micron: Range values (0 to 20 meters)v_offset_ypr_micron: Yaw, Pitch, Roll offsets relative to AUV referencev_offset_xyz_pos_micron: Position offsets relative to AUV reference
2. Vertical (SeaKing) Sonar Data
v_timestamp_seaking: Timestamps of SeaKing sonarm_beam_data_seaking: Beam intensity data (range vs. time)m_ypr_seaking: (Yaw, Pitch, Roll) over timem_xyz_pos_seaking: (x, y, z) Cartesian positions over timev_angles_rad_seaking: Scanning angles over time (radians)v_range_seaking: Range values (0 to 20 meters)v_offset_ypr_seaking: Yaw, Pitch, Roll offsets relative to AUV referencev_offset_xyz_pos_seaking: Position offsets relative to AUV reference
3. Other Processed Sensor Data
v_timestamp: General timestamps (e.g., unified or reference timeline)v_timestamp_dvl: Timestamps for DVL readingsv_altitude_dvl: Altitude from DVLm_xyz_velocity_dvl: (x, y, z) velocity data from DVLv_timestamp_depth: Timestamps for depth sensorv_depth: Depth measurements
4. Cleaned Beam Data
m_beam_data_micron_clean/m_beam_data_micron_clean_hyst: Filtered or hysteresis-cleaned Micron sonar datam_beam_data_seaking_clean/m_beam_data_seaking_clean_hyst: Filtered or hysteresis-cleaned SeaKing sonar data
5. General AUV Position/Orientation
m_xyz_pos: Overall 3D position estimates of the AUVm_ypr: Overall yaw, pitch, roll estimates of the AUV
Current/Future Work
-
Walls segmentation
- Automatic extraction of cave walls from sonar and sensor data.
- Potential approach: annotation + AI/ML algorithms.
-
3D confidence map
- From wall segmentation, create an initial 3D map and assign confidence to each point.
-
3D map extension
- Interpolate or extrapolate the map to unmeasured areas.
- Assign a confidence level to interpolated points.
-
Photogrammetry
- Use video data combined with altitude estimations for 3D photogrammetry.
- Correlate visually detected features with the sonar-based 3D map.
-
SLAM
- Integrate SLAM for better localization and mapping accuracy.
-
Real-time mapping & optimization
- Eventually adapt the pipeline for real-time processing if SLAM and segmentation are reliable.
Project Folder Architecture
Below is an example of the core folder layout when using this UV-based project:
project_root/
├── data/
├── img/
├── nautilopy/
├── 01_Preprocessing.ipynb
├── Nautilopy.ipynb
├── ROSbag2csv.ipynb
├── pyproject.toml
├── uv.lock
└── README.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nautilopy-0.1.0.tar.gz.
File metadata
- Download URL: nautilopy-0.1.0.tar.gz
- Upload date:
- Size: 42.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9b438ca7392aa3ad8c8868c6ea457029301dac34af23b930f532a3bbd30c6d2
|
|
| MD5 |
6289c47fe1d17ae7005c3bd6104ae881
|
|
| BLAKE2b-256 |
688d9b8e8644b837480c245b7c7ba185c0b9b892846586f8e5f986fd22fb587c
|
File details
Details for the file nautilopy-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nautilopy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca803e6cf4b79008b10be665f35904f6fc44c51f906ca71e8ac732fae89eab80
|
|
| MD5 |
55ce011933d90919d2e292c9b1c578b0
|
|
| BLAKE2b-256 |
7a45c19ea8b0fc66dff92fbfc4732a7b52524459f8aeef1c50d428f2cc25f43f
|