Semi-autonomous boat built as cheaply as possible, using software to overcome limitations of low-cost hardware components. The project consists of boat-side control software and a ground control server.
- Boat: Raspberry Pi-based autonomous control system with MQTT communication
- Server: Ground control station with web interface and database
- Communication: MQTT over LTE for real-time control and telemetry
- GPS module (low-cost)
- Compass/magnetometer
- Motor controllers
- LTE connectivity module
- Raspberry Pi as main controller
- Python 3.12+ required
- Uses virtual environment (venv)
- Separate dependencies for boat and server components
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install boat dependencies
pip install -r requirements/boat.txt# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install server dependencies
pip install -r requirements/server.txtPiBoat2/
├── boat/ # Boat-side code (Raspberry Pi)
│ ├── hardware/ # Hardware interface modules
│ ├── communication/ # MQTT communication
│ ├── navigation/ # Navigation and control
│ ├── config/ # Configuration management
│ └── main.py # Main boat application
├── server/ # Server-side code (Ground control)
│ ├── api/ # REST API endpoints
│ ├── mqtt/ # Server MQTT handling
│ ├── database/ # Data storage
│ ├── web/ # Web interface
│ └── main.py # Main server application
├── tests/ # Test files
├── scripts/ # Utility and calibration scripts
├── config/ # Configuration files
├── docs/ # Documentation
└── requirements/ # Dependency files
boat/hardware/gps_handler.py- GPS functionalityboat/hardware/compass_handler.py- Compass/magnetometer controlboat/hardware/motor_controller.py- Motor control systemsboat/hardware/agps_helper.py- Assisted GPS functionality
boat/communication/mqtt_client.py- MQTT client for boatboat/communication/command_dispatcher.py- Command processingboat/communication/status_reporter.py- Status reporting
boat/navigation/navigation_controller.py- Waypoint navigationboat/navigation/safety_monitor.py- Safety checks and limits
# Test individual hardware components
python scripts/test_motor_controller.py
python scripts/test_lte_connectivity.py
# Hardware calibration
python scripts/calibrate_compass.py
python scripts/set_compass_calibration.py
# Run boat hardware tests
python -m pytest tests/boat/test_hardware/
# Run server tests
python -m pytest tests/server/cd boat
python main.pycd server
python main.pyconfig/boat_config.yaml- Boat-side configurationconfig/server_config.yaml- Server-side configurationconfig/compass_calibration.json- Compass calibration data
docs/MQTT_SYSTEM_SPEC.md- MQTT communication protocol specificationdocs/API_DOCUMENTATION.md- REST API documentation
- Hardware testing and calibration
- Individual component debugging
- Integration testing
- Performance optimization to work around low-cost hardware limitations
- Focus on software solutions to overcome cheap hardware limitations
- Semi-autonomous operation is the goal
- Cost optimization is a primary constraint
- MQTT communication enables remote control and monitoring