projects → fūjin uav slam
Fūjin UAV SLAM: Monocular Visual SLAM from Scratch
Fūjin (風神) is the Japanese god of wind, and the name of my monocular visual SLAM system for UAVs, written from scratch in Python. Given nothing but a single camera stream from the EuRoC MAV dataset, no GPS, no IMU, just pixels, it estimates the drone's trajectory and builds a sparse 3D map of the environment in real time.
The pipeline is the classic visual odometry front end, implemented piece by piece rather than imported: ORB/SIFT feature extraction, brute-force or FLANN matching between consecutive frames, fundamental matrix estimation with RANSAC, essential matrix decomposition for relative pose recovery, SVD triangulation of the matched points, and pose accumulation into a global trajectory. Bag-file streaming and the OpenGL 3D renderer each run in their own process, connected by queues, so the viewer stays live while frames are processed.
The 3D viewer draws the estimated trajectory, camera frustums and the triangulated point cloud, with orbit and top-down controls; a debug mode overlays the feature matches on the raw frames. The implementation follows Prof. Davide Scaramuzza's Vision Algorithms for Mobile Robotics course (UZH / ETH Zürich); bundle adjustment, loop closure and long-term tracking are the planned next steps: the parts that turn visual odometry into full SLAM.
- Stack
- Python 3.11, OpenCV, NumPy, OpenGL, uv, EuRoC MAV dataset



