Skip to content
Cornell Autonomous Underwater Vehicle Project Team Open Source Software
C++ Python C Scheme Vim script JavaScript Other
Branch: master
Clone or download

CUAUV Software Stack

This is the repo used by the software team of Cornell University Autonomous Underwater Vehicle (CUAUV). Our website is

This is the entire software stack. The stack is now Dockerized, so it is fairly easy to get everything up and running on your Linux box.

To prepare your system:

  1. Install Docker. (e.g. sudo apt install docker or sudo pacman -S docker))
  2. Configure Docker with a user group and enable run on start with systemctl.
  3. Set up an SSH key.
  4. Install two pip packages that are required for our Docker script: sudo pip3 install docker clize.

Set up Docker Hub:

  1. Create a Docker Hub account. This is where we store our Docker images for the time being.
  2. Ask Will to add your account to the CUAUV repository on Docker Hub. Without this, you won't be able to pull the image.
  3. Note: These steps are only required for team members because our build server makes images significantly faster than your computer can. If you don't have access to Docker Hub, you can build the image locally with the standard Docker build.

To get started with this repo:

  1. Clone this repo (any temporary place will do).
  2. Run docker/ init. This will set up your machine with worktrees and move the stack to ~/cuauv/.
  3. Run ~/cuauv/workspaces/repo/docker/ cdw. This will pull the latest docker image (might take a while to download, be patient), start a container, and ssh you into that container.
  4. In the container, run ./ and then build.

Now you're all set.

Some tips:

  • Make an alias for It will save you a lot of time.
  • Run --help to see all available commands.
  • Run cdw [branch] to start a container with a particular branch. The default is master. Our Docker script uses git worktrees to keep multiple branches in parallel. You can also run multiple containers at the same time.
  • Containers run on,, etc. You can ssh into them directly.
  • cdw and start start a container, but ending the ssh session does not stop them. Use stop [branch] to kill the container.
  • The folder ~/cuauv/workspaces/repo is the master branch of the repository. Each branch is stored separately in ~/cuauv/workspaces/worktrees/[branch]/.
You can’t perform that action at this time.