I’m a 2nd-year university student working on an autonomous UAV project, and I’m currently unsure about the perception/navigation architecture. I’d like some guidance on whether the approach I’m considering is technically sensible
The problem statement requires the UAV to autonomously traverse a 3.5 m wide corridor containing static obstacles, which must be detected and avoided. The obstacle type, shape and colour are not specified, so I’m hesitant to rely on stock object-detection models or colour thresholds
The onboard compute is a Raspberry Pi, with a CUAV X7+ flight controller, monocular gimbal camera and forward-facing 1D rangefinder, so the perception approach also needs to be reasonably lightweight. I plan to lock the gimbal at around 35° and use IPM to get a more top-down view of the corridor floor and estimate where obstacles are relative to the drone.
My goal is not necessarily to identify what an obstacle is, but to determine whether some geometry occupies the UAV’s intended free flight space.
Planned pipeline:
- Camera preprocessing — calibrate/undistort the monocular camera and convert frames to grayscale.
- Feature tracking — detect features using something such as GFTT and track them across multiple frames using pyramidal Lucas–Kanade optical flow.
- Ego-motion estimation/compensation — use image motion together with UAV attitude/IMU information to account for camera motion. The camera/gimbal orientation would be fixed or otherwise known.
- Multi-frame geometry/parallax — use feature tracks over several frames to estimate relative depth or sparse 3D structure rather than relying purely on instantaneous optical-flow magnitude.
- Corridor/floor estimation — use geometric methods such as RANSAC plane estimation, vanishing-point/Hough-line cues and possibly IPM to estimate the expected floor and corridor structure.
- Obstacle detection — identify persistent geometry that deviates from the expected corridor/floor structure or appears significantly closer through motion parallax.
- Temporal confidence — accumulate evidence across multiple frames before marking a region as occupied, to reduce false positives and help when individual frame-to-frame motion is very small.
- Navigation — either use a simple reactive controller that maintains corridor centring while steering away from obstacles, or construct a small local occupancy grid, inflate obstacles by a safety margin and run A* with frequent replanning.
- Rangefinder safety layer — use the 1D rangefinder independently as a forward slow/stop/emergency-braking mechanism.
My main uncertainty is the perception stage. With a monocular camera, unknown obstacle appearance and relatively low forward speed, does corridor geometry + ego-motion-compensated multi-frame optical flow/parallax + temporal accumulation sound like a reasonable classical-CV approach?
I am particularly concerned about the low-speed case. Since the UAV moves slowly inside the corridor, consecutive frames may have very little translational displacement, giving weak optical flow/parallax relative to vibration, tracking error and noise. Would accumulating feature tracks over a longer temporal baseline be sufficient, or is there a more robust classical-CV approach for this situation?
I’d also appreciate advice on whether a reactive navigation approach is sufficient for a relatively constrained corridor, or whether building a local occupancy map + replanning would be worth the additional complexity.