Contributing

Development Setup

Clone Repository

git clone ssh://git@192.168.0.82:10022/floppyrj45/bluerov-slam.git
cd bluerov-slam

Install Dependencies

# Python (for blueos-extension, kogger-viewer)
python3 -m venv venv
source venv/bin/activate
pip install -r blueos-extension/requirements.txt
pip install -r kogger-viewer/requirements.txt

# ESP32 (PlatformIO)
cd esp32-sensor-hub
pio run

# Documentation (Sphinx)
pip install sphinx sphinx-rtd-theme sphinx-autobuild

Code Style

Python

  • Formatter: Black (line length 100)

  • Linter: Flake8

  • Type hints: Optional but recommended

black --line-length 100 *.py
flake8 --max-line-length 100 *.py

C++ (ESP32)

  • Style: Arduino/PlatformIO conventions

  • Indentation: 4 spaces

  • Comments: Document all non-obvious logic

reStructuredText (Docs)

  • Line length: 100 characters

  • Headers: Use =, -, ^, " hierarchy

  • Code blocks: Use .. code-block:: language

Commit Guidelines

Format

type(scope): short description

Longer explanation if needed.

Fixes #123

Types:

  • feat: New feature

  • fix: Bug fix

  • docs: Documentation only

  • refactor: Code restructure (no behavior change)

  • test: Add or update tests

  • chore: Build, dependencies, tooling

Examples:

feat(esp32): add EZO conductivity sensor support
fix(kogger): handle BB55 wrap-around in ping assembler
docs(api): document MAVLink bridge endpoints

Pull Request Process

  1. Fork the repository

  2. Create feature branch: git checkout -b feat/my-feature

  3. Make changes with descriptive commits

  4. Test thoroughly (local + hardware if applicable)

  5. Update documentation (if user-facing changes)

  6. Push and open Pull Request

  7. Address review feedback

Testing

Unit Tests (Python)

pytest tests/

Hardware Testing

  • Flash ESP32 firmware

  • Connect all sensors

  • Monitor serial output

  • Verify dashboard displays data

  • Check WebSocket connections

License

MIT License — Copyright (c) 2026 Baptiste Moulin / Flag Labs

Contact