GPS-Denied Autonomous Patrol Vehicle


Inspiration

Modern autonomous systems have a fatal flaw — they assume GPS and internet will always exist. In real forward operating bases, adversaries jam signals and cut connectivity deliberately. Electronic warfare systems can deny GPS across entire theaters of operation, rendering cloud-dependent autonomous platforms immediately inoperative.

We wanted to build a ground sentinel that thrives exactly where every other system fails — a vehicle whose core navigation and threat detection stack requires zero external infrastructure.


What it does

The system autonomously patrols a defined square perimeter using dead-reckoning navigation derived entirely from onboard IMU data:

$$\hat{x}(t) = \hat{x}(t_0) + \int_{t_0}^{t} v(\tau)\,d\tau, \qquad \hat{\theta}(t) = \hat{\theta}(t_0) + \int_{t_0}^{t} \omega(\tau)\,d\tau$$

Where $\hat{x}$ is estimated position, $v$ is velocity from motor feedback, and $\omega$ is angular velocity from the gyroscope.

On each patrol cycle the vehicle:

  • Navigates a closed square loop with no GPS
  • Polls the distance sensor every $50\,\text{ms}$ for obstacles within $d < 20\,\text{cm}$
  • Reads thermal sensor for heat signatures above $T > 34°C$
  • Runs YOLOv8-nano on-device for person detection at $\sim 10\,\text{FPS}$
  • Triggers alert and halts when 2 of 3 threat signals confirm
  • Logs a timestamped incident record to local flash storage

All with zero internet, zero GPS, zero cloud.


How we built it

Hardware Stack

Component Role
Qualcomm Arduino Uno Q Edge AI processor + motor control
RC Car Kit (Elegoo) Locomotion platform
Modulino Movement IMU — dead-reckoning navigation
Modulino Distance Ultrasonic obstacle detection
Modulino Thermo Heat signature detection
Logitech Webcam Edge vision input
L293D Motor Driver H-bridge PWM motor control
RGB LED + Buzzer Alert signaling

Motor Control

The L293D H-bridge receives PWM signals from the Arduino Uno Q. Motor speed is controlled via:

$$v = \frac{\text{PWM duty}}{1023} \times V_{motor}$$

Where $V_{motor}$ is the battery supply voltage ($\approx 7.4\,\text{V}$).

Threat Classification

Multi-modal fusion requires at least 2 of 3 independent signals before triggering an alert, reducing false positives significantly:

$$\text{Alert} = \mathbb{1}\left[\sum_{i \in {d,\, T,\, v}} s_i \;\geq\; 2\right]$$

Where $s_d = \mathbb{1}[d < 20\,\text{cm}]$, $s_T = \mathbb{1}[T > 34°C]$, $s_v = \mathbb{1}[\text{person detected}]$.

Core Control Loop

void loop() {
  for (int side = 0; side < 4; side++) {
    patrolSegment();   // drive straight, fuse sensors
    stopCar();
    turnLeft();        // 90-degree IMU-locked turn
    stopCar();
  }
}

void patrolSegment() {
  unsigned long start = millis();
  while (millis() - start < STRAIGHT_TIME) {
    int signals = 0;
    if (getDistance() < OBSTACLE_CM) signals++;
    if (getThermal()  > THREAT_TEMP)  signals++;
    if (runVision())                  signals++;

    if (signals >= 2) {
      stopCar();
      logIncident();
      triggerAlert();
      waitUntilClear();
    }
    forward(PATROL_SPEED);
  }
}

Challenges we ran into

IMU drift was the hardest problem. Dead-reckoning error compounds over time:

$$\sigma_{pos}(t) = \sigma_{acc} \cdot \frac{t^2}{2}$$

Small accelerometer noise $\sigma_{acc}$ becomes significant position error over multiple patrol loops. We mitigated this by empirically tuning TURN_TIME and using the distance sensor as a boundary reference to periodically correct heading.

Pin mapping on the Arduino Uno Q differed from standard Arduino documentation, requiring manual voltmeter verification of each GPIO pin before motor control worked reliably.

Multi-modal tuning — finding the right thresholds for $d$, $T$, and vision confidence to minimize false positives without degrading true detection sensitivity required iterative testing.


Accomplishments that we're proud of

  • A fully closed autonomous patrol loop running with zero GPS and zero internet
  • Multi-modal sensor fusion achieving lower false positive rate than any single sensor alone
  • On-device YOLOv8-nano inference at $\sim 10\,\text{FPS}$ — no cloud latency
  • Complete incident logging recoverable from local storage even if the vehicle is destroyed
  • Built and demonstrated end-to-end in 36 hours

What we learned

Dead-reckoning is deceptively hard. The position error grows as $O(t^2)$ — small IMU inaccuracies compound into large loop misalignment surprisingly fast. Multi-modal sensor fusion is far more robust than any single modality. And edge AI on constrained hardware is genuinely viable for real-time threat detection today, not just in theory.


What's next for GPS-Denied Autonomous Patrol Vehicle

The scaling roadmap is direct and credible:

$$\text{1 RC Car} \;\longrightarrow\; \text{Mesh Swarm} \;\longrightarrow\; \text{Drone-Mounted} \;\longrightarrow\; \text{FOB Perimeter System}$$

Each step adds one capability layer:

Stage Addition Production Analog
This demo Single vehicle, offline AI —
Stage 2 Mesh radio swarm coordination DARPA Squad X
Stage 3 Drone frame integration RQ-7 Shadow
Stage 4 Snapdragon Ride edge processor Qualcomm Defense Platform
Stage 5 Full FOB deployment U.S. Army RCV Program

Every component in this demo has a military-grade analog. The hard part was proving the concept works fully offline. We couldnt make it working sadly

Built With

Share this project:

Updates

Submission history