CoUGARs is a low-cost, configurable AUV platform designed for multi-agent autonomy research by the Field Robotic Systems Lab (FROST Lab) at Brigham Young University.
Prerequisites: 64-bit Linux, 15+ GB of free disk space, and a dedicated NVIDIA GPU (for HoloOcean simulation).
-
Install Docker and VSCode Dev Containers.
-
Add a GitHub SSH key and clone the
cougars-devrepository.git clone git@github.com:cougars-auv/cougars-dev.git
-
Choose a development workflow:
Simulation (HoloOcean):
-
Build the runtime image from the
cougars-auvfork of HoloOcean-ROS. When prompted to run./build_container.sh, specify thenelson/cougars-devbranch with./build_container.sh -b nelson/cougars-dev. -
Open the
cougars-devrepository in VSCode and use the Command Palette (Ctrl + Shift + P) to select "Dev Containers: Reopen in Container." When prompted, click "CoUGARs Dev (NVIDIA)." -
Once the containers load, open a new terminal window using
Ctrl + Alt + Shift + `and launch a HoloOcean scenario in thecougars-holoocean-ctcontainer using./holoocean_launch.sh.cd ~/cougars-dev/scripts && ./holoocean_launch.sh
-
Open a new terminal, build the
ros2_wsworkspace, and select the matching launch configuration with./sim_launch.sh.cd ~/cougars-dev/ros2_ws && colcon build cd ~/cougars-dev/scripts && ./sim_launch.sh
Recorded Data (
rosbag2):-
Open the
cougars-devrepository in VSCode and use the Command Palette (Ctrl + Shift + P) to select "Dev Containers: Reopen in Container." When prompted, click "CoUGARs Dev" or "CoUGARs Dev (NVIDIA)." -
Once the containers load, copy your
rosbag2bag into the repository'sbagsfolder. -
Open a new terminal window using
Ctrl + Alt + Shift + `, build theros2_wsworkspace, and select a bag with./bag_launch.sh.cd ~/cougars-dev/ros2_ws && colcon build cd ~/cougars-dev/scripts && ./bag_launch.sh
-
If you run into crashes or out-of-memory errors while building the workspace, restrict the compiler to a single worker using
colcon build --parallel-workers 1.
- Bill of Materials
- Assembly Instructions
- Base Station Software Setup
- CougUV Software Setup
For small changes confined to one package, the full
cougars-devbranch workflow is unnecessary. Simply create a new package branch and PR.
-
Create a Branch: Create a new
cougars-devbranch (e.g.,nelson/repo-docs). -
Create Package Branches: For each package you plan to modify, create a new branch with the same name. In your new
cougars-devbranch, temporarily update the relevant.reposfiles to reference those branches. -
Make Changes: Develop, debug, and test your changes.
If you need to add dependencies, update the relevant
package.xmlfiles, Dockerfiles under.docker/,runtime.repos,dev.repos, and/ordependencies.repos. -
Sync Frequently: Regularly update your branches with the latest
main(via rebase or merge). -
Submit Package PRs: Open a pull request for each package branch. Ensure required tests pass, then merge once approved.
-
Submit Final PR: After all package PRs have merged, revert the temporary
.reposchanges in yourcougars-devbranch and open a pull request. Ensure required tests pass, then merge once approved.Once merged, GitHub Actions will build and push the updated Docker images to Docker Hub under
frostlab/cougars:runtime-latestandfrostlab/cougars:dev-latest. -
Delete Branches: Remove all the merged branches. Create a new branch from
mainfor any follow-up work.
If you use this repository in your research, please cite the following publications:
@misc{durrant2025lowcostmultiagentfleetacoustic,
title={Low-cost Multi-agent Fleet for Acoustic Cooperative Localization Research},
author={Nelson Durrant and Braden Meyers and Matthew McMurray and Clayton Smith and Brighton Anderson and Tristan Hodgins and Kalliyan Velasco and Joshua G. Mangelson},
year={2025},
eprint={2511.08822},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2511.08822},
}@misc{meyers2025testingevaluationunderwatervehicle,
title={Testing and Evaluation of Underwater Vehicle Using Hardware-In-The-Loop Simulation with HoloOcean},
author={Braden Meyers and Joshua G. Mangelson},
year={2025},
eprint={2511.07687},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2511.07687},
}@inproceedings{potokar2022holooceanunderwaterroboticssim,
author={Easton Potokar and Spencer Ashford and Michael Kaess and Joshua G. Mangelson},
title={Holo{O}cean: An Underwater Robotics Simulator},
booktitle={Proc. IEEE Intl. Conf. on Robotics and Automation, ICRA},
address={Philadelphia, PA, USA},
month={May},
year={2022}
}