An advanced and integrated control system for Remotely Operated Vehicles (ROV) developed using Python and a modern GUI interface.
- Go to Releases
- Download the latest
ROV_Control_GUI.zip
- Extract and run
ROV_Control_GUI.exe
- Or use
install.bat
for system-wide installation
- Windows 10/11 (64-bit)
- Minimum 4GB RAM
- 500MB free disk space
- USB port for joystick (optional)
- Network connection for ROV
- Manual Control: Direct control of motors via joystick or control panel
- Stabilization Mode: Automatic stabilization using IMU data
- Position Control: Precise positioning using PID Controller
- Multiple Speed Modes: Slow, Medium, Fast
- Live Camera Feed: Real-time video with recording capability
- Telemetry Data: Comprehensive display of all sensor data
- Interactive Graphs: Track data over time
- Smart Alerts: Warnings for critical conditions
- Emergency Stop: Instant shutdown of all motors
- Depth Limits: Prevent exceeding maximum depth
- Auto Surface: Surfacing when signal is lost
- Battery Monitoring: Alerts on low battery level
- Sensor Calibration: Automatic and manual sensor calibration
- Logging System: Comprehensive logging of events and errors
- Settings Saving: Save and load custom settings
- Data Export: Export telemetry data in CSV format
rov_project/
│
├── gui/ # GUI interface
│ ├── main_window.py # Main window
│ ├── camera_feed.py # Camera view
│ ├── control_panel.py # Control panel
│ └── telemetry_display.py # Telemetry display
│
├── controller/ # Motor and motion control
│ ├── rov_controller.py # Main controller
│ ├── motors.py # Motor management
│ └── joystick_input.py # Joystick support
│
├── communication/ # ROV communication
│ ├── serial_comm.py # Serial communication
│ ├── network_comm.py # Network communication
│ └── packet_handler.py # Packet processing
│
├── sensors/ # Sensor data processing
│ ├── imu.py # Inertial Measurement Unit
│ ├── pressure_sensor.py # Pressure & depth sensor
│ └── temperature_sensor.py # Temperature sensor
│
├── utils/ # Helper utilities
│ ├── logger.py # Logging system
│ ├── config.py # Settings management
│ └── calibration.py # Sensor calibration
│
├── assets/ # Assets
│ ├── icons/ # Icons
│ ├── images/ # Images
│ └── sounds/ # Sounds
│
├── main.py # Main project entry point
├── requirements.txt # Required libraries
└── config.ini # Configuration file
pip install -r requirements.txt
python main.py
- Choose communication type (Serial or Network) from settings
- Select the port or IP address
- Click "Connect"
PyQt6
- GUI Interfacepyserial
- Serial Communicationopencv-python
- Video Processingnumpy
- Mathematical Operationspyqtgraph
- Graph Plotting
pygame
- Joystick Supportpyyaml
- YAML File Parsingconfigparser
- Configuration Management
- USB Camera (optional)
- Joystick or Gamepad (optional)
- Serial Port or Network Connection to ROV
[COMMUNICATION]
serial_port = COM3
baud_rate = 9600
use_network = False
network_ip = 192.168.1.100
network_port = 8080
[CONTROL]
max_speed = 100
use_pid = True
pid_kp = 1.0
pid_ki = 0.1
pid_kd = 0.05
[SAFETY]
max_depth = 50
auto_surface = True
battery_warning = 20
Space
- Emergency StopF11
- FullscreenCtrl+C
- Connect/DisconnectCtrl+Q
- Exit
- Left Stick: Forward/Backward and Side Movement
- Right Stick: Vertical and Rotational Movement
- Buttons: Specialized Functions (Light, Record, etc.)
- Place the ROV in a stable position
- Go to “Control” > “Sensor Calibration”
- Follow on-screen instructions
- Ensure the ROV is in water
- Run motor calibration
- Test all directions
- Position: Coordinates X, Y, Z
- Orientation: Roll, Pitch, Yaw
- Sensors: Temperature, Pressure, Humidity
- System: Battery, Signal
- Depth over Time
- Temperature Chart
- Orientation and Tilt Chart
- Check connection cable
- Verify port settings
- Ensure ROV is powered on
- Check USB camera connection
- Verify camera drivers
- Try another camera
- Check joystick connection
- Calibrate joystick
- Ensure joystick input is enabled
- Logs are saved in the
logs/
folder - Each session has a separate log file
- Logs include errors and important events
- Create a new branch for the feature
- Develop and test
- Submit a merge request
- Each module has a specific purpose
- Comments are written in Arabic
- Follows Python PEP 8 standards
To simplify first-time setup and ensure all dependencies are installed:
- Open
run.bat
to initialize the system.
run.bat
contents:
@echo off
chcp 65001 >nul
title ROV Control System Setup
echo.
echo ========================================
echo ROV Control System Setup
echo ========================================
echo.
echo This script will check your system and install the necessary requirements for the ROV Control System.
echo Checking system and installing requirements...
python setup.py
echo.
echo Do you want to start the app now? (y/n)
set /p choice="Choose (y/n): "
if /i "%choice%"=="y" (
echo.
echo Start ROV Control System...
python main.py
) else (
echo.
echo you can start the app later by running:
echo python main.py
)
echo.
echo Click any key to exit...
pause >nul
You can double-click
run.bat
to get started with setup and launching the app.
This project is licensed under the MIT License - see the LICENSE file for details.
For technical support or inquiries:
- Create an issue in the repository
- Contact the team
- Check the documentation