This repo contains software for operating UUVs, developed by students at NTNU. The software is based on the ROS2 Humble framework, and aims to be hardware independent. Although the main focus of Vortex is autonomous operation, this software stack supports both AUV and ROV operations.
This project uses the docker-ros repository for building and managing Docker images. The docker-ros repository is included as a Git submodule and is configured to build images locally.
- Install Docker
To clone this repository with the docker-ros submodule, use the following command:
git clone --recurse-submodules https://github.com/vortexntnu/vortex-asv.git
Alternatively, if you have already cloned the repository, run the following command to initialize the submodule:
git submodule update --init --recursive
- Run the following command from the root of this repository to build the Docker image, its called
auv-image:latest
, and start a container:
./entrypoint.sh
- The Docker container will start with the following configurations:
- The source code from this repository is mounted to
/docker-ros/ws/src/target
inside the container. This means any changes made locally will also be reflected inside the container, and any changes made inside the container will appear locally. - Any dependencies listed in
dependencies.repositories
will be added to/docker-ros/ws/src/upstream
. For instance, the repository vortex-msgs will be added to this directory but will not be mounted.
- The Docker container runs with the --network host option. This enables the container to see other ROS 2 topics and nodes on the host network. However, note that this functionality is not supported on macOS.
docker-ros will automatically detect the platform, but if you're encountering issues with Docker due to platform incompatibilities (like arm64 vs. amd64), follow these steps:
- Check your computers architecture
- In
entrypoint.sh
, uncomment and adjust the PLATFORM variable:
- For AMD64:
export PLATFORM="amd64"
- For ARM64:
export PLATFORM="linux/arm64"
- After adjusting the platform, rebuild the Docker image and run the container:
./entrypoint.sh
- TODO: Drivers and hardware specifics for each drone will be added to the wiki. Link them here.
- TODO: How to adapt the software stack to new hardware.
- A collection of master theses written by Vortex members:
- Manta v1: A Deliberative Agent Software Architecture for Autonomous Underwater Vehicles
- A real-time DVL and pressure sensor AINS comparison study between EKF, ESKF and NLO for Manta-2020
- Sonar EKF-SLAM and mapping inanstructured underwater environment
- Autonomous Navigation, Mapping, and Exploration for Underwater Robots