Skip to the content
2 layers154.8 × 96.7 mmRobotics Mine, the printed circuit board in 3D

The Assiut Robotics Minesweeper Rover is an autonomous field robotics platform engineered for humanitarian mine action and robotics competitions (Minesweeper International / Minesweeper Egypt).

Size
154.8 × 96.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
117
Nets
91
Pads
361
Tracks, vias
444, 0
Pours
8
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
12 Jun 2026
Updated
29 Oct 2026

Overview

Robotics Mine is an open-source printed circuit board by arminesweeper, from the arminesweeper/Minesweeper2026 repository on GitHub. It is a 2-layer board of 154.8 × 96.7 mm with 117 parts on 91 nets, routed with 444 tracks and 0 vias.

It is built around the 1000UF 16V. Its parts include 43 connectors, 26 resistors, 13 capacitors, 2 diodes and 2 transistors. It belongs with the robots and motor control boards of this library.

Main components

1

README

README.md

Assiut Robotics — Minesweeper Autonomous Rover

ROS 2 Arduino ESP8266 Cytron Gazebo Languages Status


📌 Executive Summary

The Assiut Robotics Minesweeper Rover is an autonomous field robotics platform engineered for humanitarian mine action and robotics competitions (Minesweeper International / Minesweeper Egypt). The rover combines real-time computer vision, electromagnetic/inductive sensing, optical proximity scanning, autonomous coverage planning, closed-loop motion control, and surface mine extraction mechanics into an integrated cross-layer cyber-physical system.

  • Institution: Faculty of Engineering, Assiut University
  • Team: Assiut Robotics Team
  • Supervisor: Eng. Sayed Khader
  • Demonstration Video: YouTube — Minesweeper Robot

📖 Master Documentation Navigation Hub

This repository contains multi-tiered engineering documentation covering software, firmware, electronics, and competition field strategy. Use the quick links below to navigate to specific subsystems:

DocumentDescriptionLanguagePrimary Location
Competition Overview & Technical ReportComprehensive engineering report, real-world bug troubleshooting, competition strategy, and mathematical modelsArabicMinesweeper_Competitions_Overview.md
Electronic Circuit & Hardware ReportFull PCB schematic analysis, power distribution rails, relay drivers, connectors, and BOMEnglishMinesweeper2026/Files/Report/report.md
ROS 2 Workspace ManualSimulation, SLAM Toolbox, Navigation, Zigzag Coverage, Vision OCR, and launch guidesEnglishrover_ws/README.md
Synchronized Pinout MapAs-fabricated Mega 2560 pin mappings, timers, interrupts, and Soft-I2C flying leadsEnglishMinesweeper2026/Arduino/MotorController/Docs/Pinout.md
Firmware ArchitectureObject-oriented modular firmware breakdown, FSM state machines, and task loop timingEnglishMinesweeper2026/Arduino/MotorController/Docs/Architecture.md
Serial Protocol & APIFraming, command bytes, packet checksums, and telemetry stream formatsEnglishMinesweeper2026/Arduino/MotorController/Docs/Communication.md
Motion Control & PIDKinematics, PID math, feed-forward, deadband thresholds, and odometry formulasEnglishMinesweeper2026/Arduino/MotorController/Docs/MotionControl.md
Safety & Watchdog SystemsCommunication timeouts, brownout protection, limit switch safety, and E-Stop statesEnglishMinesweeper2026/Arduino/MotorController/Docs/Safety.md
Wiring & Harness ManualWire gauges, connector specifications, terminal assignments, and crimping guideEnglishMinesweeper2026/Arduino/MotorController/Docs/WiringManual.md
Operator GUI & TelemetryPySide6 desktop dashboard, gamepad integration, and live telemetry viewerEnglishMinesweeper2026/GUI/README.md
Legacy 2024 ArchiveHistoric codebase, design iterations, and legacy project recordsEnglishMinesweeper2024/README.md

🏛️ System Architecture

The robot utilizes a hierarchical dual-interface architecture providing robust separation of concerns between high-level computation, real-time deterministic control, and standalone field debugging:

mermaid
flowchart TB
    subgraph OperatorLayer["Operator & Telemetry Station"]
        OP_STATION[Operator Laptop / Gamepad]
        WEB_CLIENT[Browser Diagnostic UI / WebSockets]
    end

    subgraph HighLevelCompute["High-Level Compute — Raspberry Pi 4 (Ubuntu Linux)"]
        ROS_CORE[ROS 2 Humble Middleware]
        SLAM_NODE[SLAM Toolbox / EKF Localization]
        PLAN_NODE[Zigzag Coverage & A* Planner]
        VISION_NODE[Camera + EasyOCR Mine Classifier]
        SER_NODE[Serial Bridge Interface Node]
    end

    subgraph WirelessBypass["Field Diagnostics Bypass — ESP8266 Module"]
        ESP_CORE[ESP8266 Local Web Server]
        ESP_JOY[WASD / Touchscreen Teleop]
        ESP_TELEM[Live Battery & Sensor Telemetry]
    end

    subgraph LowLevelControl["Deterministic Embedded Controller — Arduino Mega 2560"]
        STATE_MGR[System State Machine INIT / ARMED / RUN / FAULT]
        PID_CORE[Dual Wheel PID Controller + Feed-Forward]
        MOTION_CORE[Differential Drive Inverse Kinematics]

⚙️ Technical Specifications

Physical & Mechanical

  • Locomotion: 4-Wheel Drive (4WD) with differential skid-steering
  • Chassis Dimensions: Length 650 mm × Width 480 mm × Ground Clearance 85 mm
  • Wheel Specifications: 220 mm diameter × 100 mm width rugged rubber tread
  • Track Gauge (Wheelbase): $L = 150\text{ mm}$ (center-to-center lateral base)
  • Mine Extraction: Motorized tailgate lift with active limit switch homing and 5× high-flux electromagnets

Electrical & Power Distribution

  • Main Power Source: Tianneng TNE12-25 12V 25Ah Deep-Cycle Graphene Lead-Acid Battery
  • Motor Driver: Cytron MDD10A Rev2.0 (Dual Channel, 10A continuous / 30A peak per channel)
  • Power Rails:
    • 12V_MAIN: Motors, Cytron H-Bridge, and auxiliary power (Terminal J24, filtered with $2000,\mu\text{F}$)
    • 12V_MG: Dedicated electromagnet bus (Terminals MAG1–MAG5, filtered with $4000,\mu\text{F}$)
    • 5V_LOGIC: MCU logic, encoders, IMU, sensors (Terminal J22, filtered with $2000,\mu\text{F}$)
    • 5V_SERVO: Camera pan servo and auxiliary servos (Terminal J23/J13)
  • Total Bulk Decoupling Capacitance: $> 11,000,\mu\text{F}$ distributed to suppress inductive motor inrush

Microcontroller & Sensors

  • Low-Level MCU: Atmel ATmega2560 (16 MHz, 8 KB SRAM, 256 KB Flash)
  • Encoder Resolution: 385 pulses per revolution (PPR) on output wheel shaft
  • Inertial Measurement Unit: InvenSense MPU6050 (6-DOF Accelerometer + Gyroscope) via Soft-I2C on D31/D33
  • Surface Detection: 5× Infrared optical proximity sensors (APRX1–APRX5) with hardware OR-gate aggregation
  • Subsurface Detection: High-sensitivity inductive search coil (J40) for buried metallic mines

🚀 Quick Start Guide

1. Arduino Mega Firmware

  1. Open Minesweeper2026/Arduino/MotorController/MotorController.ino in the Arduino IDE or VS Code / PlatformIO.

  2. Select Board: Arduino Mega 2560, Processor: ATmega2560.

  3. Verify feature flags in Config.h:

    cpp
    #define ENABLE_WATCHDOG        1
    #define ENABLE_ODOMETRY        1
    #define ENABLE_LIFT            1
    #define ENABLE_SENSORS         1
    #define USE_SOFT_I2C_FOR_IMU   1
  4. Compile and flash to the Arduino Mega via USB.

2. Standalone ESP8266 Telemetry & Debugging Dashboard

  1. Open Minesweeper2026/Arduino/WiFiController/ in the Arduino IDE.
  2. Connect an Arduino Uno with RESET tied to GND as a hardware bypass programmer (TX to TX, RX to RX).
  3. Flash the code to the ESP8266.
  4. Power the rover, connect your phone or laptop to the created Wi-Fi Access Point (Minesweeper_Rover), and browse to http://192.168.4.1 for full manual control, battery monitoring, and telemetry.

3. ROS 2 Workspace (Ubuntu Linux with ROS 2 Humble)

Clone or navigate to the workspace, install system dependencies, and build:

bash
cd rover_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash
Launching Gazebo Simulation
bash
ros2 launch rover_bringup simulated_robot.launch.py
Launching on the Physical Robot
bash
ros2 launch rover_bringup real_robot.launch.py
Running Joystick Teleoperation
bash
ros2 launch rover_controller joystick_teleop.launch.py

📡 ROS 2 Topics & Interfaces

TopicMessage TypeDescription
/cmd_velgeometry_msgs/msg/TwistTarget linear and angular velocity commands
/odomnav_msgs/msg/OdometryWheel odometry fused with encoder ticks
/imu/datasensor_msgs/msg/ImuFiltered angular velocity and linear acceleration
/joint_statessensor_msgs/msg/JointStateRover wheel and lift joint positions
/scansensor_msgs/msg/LaserScan2D LiDAR range scan for obstacle avoidance
/mapnav_msgs/msg/OccupancyGridLive SLAM occupancy grid map
/coverage_pathnav_msgs/msg/PathZigzag lawnmower path generated by planner
/mine_detectedrover_msgs/msg/MineAlertDetected mine payload (type: surface/buried, position: x, y)

🛠️ Field Troubleshooting Matrix

Summary of the 12 verified physical hardware and firmware issues resolved during field testing (detailed root cause analysis available in Minesweeper_Competitions_Overview.md):

#SymptomRoot CauseVerified Resolution
1Severe lagging & high loop latencyRTOS-like multi-tasking overload on ATmega2560Enabled compile-time feature flags in Config.h to disable unused modules
2Motors deadlocked upon boot (FAULT)Watchdog started counting before first commandModified Safety.cpp to start timeout only after first valid command
3Gripper stalled or moving violentlyFloating limit pins + PWM set to 220 (86% power)Activated INPUT_PULLUP and clamped LIFT_PWM_SPEED to 90 (35% power)
4Limit switch dashboard invertedPins D51 and D53 swapped vs physical wiringSwapped definitions in Config.h (D51 = Bottom, D53 = Top)
5MPU6050 I²C bus deadlockShield copper wired ENC1 to D20/D21 (Hardware I²C)Implemented Soft-I2C on D31/D33 with external flying leads
6Alert siren continuously blaringDriver circuit is Active-LOW via NPN transistorChanged #define SIREN_ACTIVE_HIGH 0 in Config.h
7Inverted proximity readingsHardware OR-gate output floating without thresholdAdjusted PROXIMITY_THRESHOLD to 500 and added calibration offsets
8ESP8266 flashing timeout errorArduino Mega serial passthrough dropped high-speed bytesUsed Arduino Uno hardware bypass (RESET to GND) for flashing
9Rover stopping every 2s in web UIBrowser keydown only fired once; watchdog timed outImplemented 100ms periodic retransmission loop in web frontend
10ESP8266 unable to boot with divider10kΩ divider resistor placed adjacent to EN/RST pinIsolated divider directly to ADC A0 pin away from boot-strap lines
11Electromagnet overheating100% duty cycle 12V applied continuouslyImplemented 8s auto-off safety cutoff timer in firmware
12ROS 2 motion jerky and unresponsiveBlocking serial read calls on main threadRewrote ROS serial bridge with non-blocking async threads at 20 Hz

📋 Pre-Flight Commissioning Checklist

Before deploying the rover onto the competition field or test arena:

markdown
1. Battery Health: Verify open-circuit voltage >= 12.6V (Do not operate below 11.8V).
2. Mechanical Fasteners: Inspect wheel hubs, motor brackets, and lift linkages for play.
3. Bench Motor Direction Check: Elevate chassis; command forward motion; verify both wheels spin forward.
4. Encoder Calibration: Rotate each wheel 1 full revolution by hand; verify ~385 counts accumulated.
5. Watchdog Fail-safe: Disconnect serial cable while motors run; verify complete motor shutdown within 1.5s.
6. Limit Switches: Manually depress top/bottom switches; confirm instantaneous lift motor deactivation.
7. Sensor Simulation: Pass metallic and surface mine samples; verify blue status LEDs illuminate and siren triggers.
8. Wire Harness Dress: Inspect Soft-I2C flying leads; ensure separation from high-current motor cables.

👥 Contributors & Team

  • Assiut Robotics Team — Faculty of Engineering, Assiut University
  • Academic Supervisor: Eng. Sayed Khader
  • Firmware, Controls & Hardware Review: Control & Embedded Systems Engineering Sub-team

📄 License

This repository is released under the MIT License for educational, humanitarian demining research, and non-commercial competition purposes.

Parts

117
QtyValueFootprintReferences
10~PCM_LED_THT_AKL:LED_D3.0mmDL1, DL2, DL3, DL4, DL5, DL6, DL7, DL8, DL9, OK
91KPCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R4, R7, R10, R13, R17, R18, R19, R20
7, , , , , ,
5100:50 nPCM_Capacitor_THT_AKL:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C4, C6, C8, C10
510kPCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R5, R8, R11, R14
52000uF<PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mmC3, C9, C11, C12, C13
53.9kPCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R6, R9, R12, R15
5APRXMTsaflib:JST_S4B-XH-AJ1, J2, J3, J4, J5
5LOGOLOGOG***, G***, G***, G***, G***
31kPCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR16, R16, R21
21000uF<PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mmC5, C7
210kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR44, R47
21N4007PCM_Diode_THT_AKL:D_DO-41_SOD81_P7.62mm_HorizontalD1, D2
22N2222A-TO92PCM_Package_TO_SOT_THT_AKL:TO-92_Inline_Wide_EBCQ1, Q2
23.9kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR45, R46
2MPU6050PCM_fab:PinHeader_01x08_P2.54mm_Vertical_THT_D1.4mmJ29, J38
112VPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ24
112V GPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ46
1470uF<PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mmC2
15VPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ22
15V SERVOPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ23
1CYTRONPCM_fab:PinHeader_01x05_P2.54mm_Vertical_THT_D1mmJ36
1ENC1Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ16
1ENC1PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ30
1ENC2Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ17
1ENC2PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ31
1G PWM DIRPCM_fab:PinHeader_01x03_P2.54mm_Vertical_THT_D1.4mmJ20
1L1 L2 D3 P3 G Vsaflib:JST_S8B-XH-A-1J44
1LIFTPCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ37
1LIFTPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ28
1LIMIT1PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ45
1LIMIT2PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ35
1LM1PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mmJ33
1LM2PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mmJ34
1LM2 LM1 PWM DIR G Vsaflib:JST_S8B-XH-A-1J43
1MAG1PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ9
1MAG2PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ10
1MAG3PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ11
1MAG4PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ12
1MAG5PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ27
1MAGNETS&LIFTsaflib:RELAY_SRD-12VDC-SL-CK1
1MDPCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ42
1METAL DETECTORPCM_fab:PinHeader_01x06_P2.54mm_Vertical_THT_D1.4mmJ40
1MGNTPCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mmJ14
1MSWPCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ19
1OI54321GVsaflib:JST_S8B-XH-A-1J6
1PinHeader_1x17_P2.54mm_VerticalConnector_PinHeader_2.54mm:PinHeader_1x17_P2.54mm_VerticalSADSAFSAF
1SERVOPCM_fab:PinHeader_01x03_P2.54mm_Vertical_THT_D1.4mmJ13
1SERVOPCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mmJ25
1SIRENPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ21
1SIRENCALLsaflib:RELAY_SRD-12VDC-SL-CK2
1SIRENSPCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mmJ15
1SUBPCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_HorizontalJ32
1SWPCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mmJ18
1USB_AConnector_USB:USB_A_Connfly_DS1095J7
1VG12345MIOsaflib:JST_S8B-XH-A-1J39

The 111 most common of 117 parts.

Similar boards

  • 2 layers142.4 × 117.1 mmASME UM High current board, the printed circuit board in 3D

    ASME UM High current board

    umasme/2025-2026

    University of Miami ASME Official Repository for NASA Lunabotics Challenge

    93 parts2MIT
  • 2 layersPicoPLC, the printed circuit board in 3D

    PicoPLC

    antek-elektronik/PicoPLC

    Work in progress!

    92 parts
  • 2 layers20 × 160 mmZibs Saber v2, the printed circuit board in 3D

    Zibs Saber v2

    PedroBMedeiros/PolySaber

    Firmware for Cal Poly Senior Project - PolySaber a Custom PCB Soundboard

    75 parts
  • 2 layers76.7 × 95.9 mmPicoBot, the printed circuit board in 3D

    PicoBot

    qtsohg/pico_ESP32_motor_controller

    35 parts
  • 2 layersPc power remote switch, the printed circuit board in 3D

    Pc power remote switch

    Rudra2002/ComputerControl

    The system communicates over MQTT (with WebSocket support), enabling a static web dashboard — deployable on Cloudflare Pages or any CDN — to send commands and receive real-time status updates from anywhere.

    12 parts
  • 4 layers50 × 50 mmPDB Board 0.1, the printed circuit board in 3D

    PDB Board 0.1

    thejamesrhodes/Hyades-Flight-Computer

    Full Hardware and Electronics design, Bare-metal GNC flight software for an actively attitude-controlled high-power rocket

    52 parts1Apache-2.0

Questions

How big is the Robotics Mine PCB?

It measures 154.8 × 96.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Robotics Mine use?

117 parts, built around the 1000UF 16V. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Robotics Mine KiCad files?

From the arminesweeper/Minesweeper2026 repository on GitHub, at the commit this page was made from: the board is Minesweeper2026/Schematic/Robotics_Mine.kicad_pcb and its schematic Minesweeper2026/Schematic/Robotics_Mine.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Robotics Mine design in my own project?

Its repository states no licence, so its author keeps all rights: ask arminesweeper before reusing the design.