This is the Nautilus-UUV fork of DAVE (Aquatic Robotic Simulator) containing custom configurations for the Glider Nautilus robot.
Upstream DAVE Documentation: http://dave-ros2.notion.site
- Install DAVE following the official installation tutorial:
- DAVE Native Installation Guide
- Complete all steps through building the base DAVE workspace
After completing the official DAVE installation:
# Navigate to the DAVE workspace
cd ~/dave_ws/src
# Remove the default DAVE repository
rm -rf dave
# Clone the Nautilus fork with the dev branch
git clone -b dev https://github.com/Nautilus-UUV/dave.git
# Navigate back to workspace root
cd ~/dave_ws
# Rebuild the workspace with Nautilus customizations
colcon build --symlink-install
# Source the workspace
source install/setup.bash
Our fork uses a structured branching model:
polaris-ros2 (stable - tracks upstream + Nautilus customizations)
└── dev (active development - merge feature branches here)
├── feature/new-sensor-integration
├── feature/improved-controller
└── feature/your-feature-name
-
polaris-ros2
: Stable branch with tested Nautilus customizations- Tracks upstream
IOES-Lab/dave:ros2
- Contains production-ready Glider Nautilus models
- Protected branch - requires PR approval
- Tracks upstream
-
dev
: Active development branch- Base branch for all new feature development
- Integration testing happens here
- Periodically merged into
polaris-ros2
after testing
-
feature/*
: Individual feature branches- Created from
dev
- One feature per branch
- Merged back to
dev
via PR
- Created from
cd ~/dave_ws/src/dave
# Add the upstream IOES-Lab repository (for pulling updates)
git remote add upstream https://github.com/IOES-Lab/dave.git
# Verify remotes
git remote -v
# Should show:
# origin https://github.com/Nautilus-UUV/dave.git
# Make sure you're on the dev branch
git checkout dev
# Pull the latest changes
git pull origin dev
# Create your feature branch
git checkout -b feature/your-feature-name
Edit files in the appropriate locations:
- Robot models:
models/dave_robot_models/description/glider_nautilus/
- Configurations:
models/dave_robot_models/config/glider_nautilus/
- Meshes:
models/dave_robot_models/meshes/glider_nautilus/
- Launch files: Add to appropriate package directories
dave/
├── models/
│ └── dave_robot_models/
│ ├── description/
│ │ └── glider_nautilus/ # Robot SDF files
│ ├── config/
│ │ └── glider_nautilus/ # Launch configuration ros_gz_bridge
│ └── meshes/
│ └── glider_nautilus/ # 3D mesh files
├── README.md # This file
└── ... # Other DAVE packages
# Rebuild the workspace
cd ~/dave_ws
colcon build --symlink-install
# Source the workspace
source install/setup.bash
# Test your changes (launch files, simulations, etc.)
ros2 launch <your_test_commands>
cd ~/dave_ws/src/dave
# Stage your changes
git add .
# Run pre-commit checks
pre-commit run --all-files
# Commit with a descriptive message
git commit -m "feat: add description of your feature"
# Push to your feature branch
git push origin feature/your-feature-name
- Go to https://github.com/Nautilus-UUV/dave
- Click "Pull requests" → "New pull request"
- Set base branch to
dev
(notpolaris-ros2
!) - Set compare branch to your
feature/your-feature-name
- Fill in the PR description:
- What does this feature add/fix?
- How did you test it?
- Any breaking changes?
- Request review from team members
- Address review feedback and update your branch as needed
# Switch back to dev
git checkout dev
# Pull the updated dev branch
git pull origin dev
# Delete your local feature branch
git branch -d feature/your-feature-name
# Delete the remote feature branch
git push origin --delete feature/your-feature-name
Follow conventional commits format:
feat: add new buoyancy model
- New featurefix: correct thruster orientation
- Bug fixdocs: update installation instructions
- Documentationrefactor: simplify sensor configuration
- Code refactoringtest: add integration test for controller
- Testschore: update dependencies
- Maintenance tasks
Periodically pull updates from the upstream IOES-Lab/dave repository:
# Checkout polaris-ros2
git checkout polaris-ros2
# Fetch upstream changes
git fetch upstream
# Merge upstream ros2 into polaris-ros2
git merge upstream/ros2
# Resolve any conflicts if they occur
# Push updated polaris-ros2
git push origin polaris-ros2
# Update dev branch with the new changes
git checkout dev
git merge polaris-ros2
git push origin dev