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
Log in or sign up for Devpost to join the conversation.