← All work
2024 · Robotics
Onboard Perception
Real-time obstacle detection on a Jetson-class board for a guide quadrotor, at 30 fps under 8 W.
Problem
The drone had to fly indoors ahead of a low-vision user and warn about obstacles early enough to matter, using only what fits on the airframe.
Approach
A monocular detector distilled to a small backbone, exported to TensorRT with INT8 calibration, and fused with a lightweight depth estimate to produce a per-frame "time to contact" map.
float timeToContact(const Box& prev, const Box& cur, float dt) {
const float growth = cur.area() / std::max(prev.area(), 1.0f);
return growth > 1.0f ? dt / (std::sqrt(growth) - 1.0f) : INFINITY;
}Architecture
camera ──► detector (TRT, INT8) ──► tracker ──► ttc map ──► cue planner ──► haptics
▲
mono depth (tiny)Results
- 30 fps steady on the onboard board at under 8 W total draw.
- Mean warning lead time of 1.9 s in a 12-obstacle indoor course.
What I'd do next
Swap the monocular depth for a stereo pair and log field runs to build a proper regression set.