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.batfor 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 filepip install -r requirements.txtpython 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 = 20Space- 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.batto 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 >nulYou can double-click
run.batto 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

