All research

eYSIP 2025

Visual SLAM for UAVs

A complete visual SLAM system, built from scratch for indoor UAV navigation.

  • SLAM
  • Perception
Project demo: dense mapping, then live 6-DoF localisation in the built map.Watch on YouTube (opens in a new tab)

My contributions

  • Built a visual SLAM front end and back end from scratch with Open3D and OpenCV.
  • Implemented local and global loop closure with pose-graph optimisation, and bag-of-words relocalisation refined by ICP.
  • Validated handheld on a RealSense D455 with an Orin NX, and designed a tightly coupled VIO extension.

ORB-SLAM3 and RTAB-Map are hard to adapt, and no end-to-end 3D visual SLAM and navigation stack comparable to Nav2 existed for our UAV. So we built the front end and back end from scratch, using only Open3D and OpenCV.

Mapping

The pipeline: keyframes, frame-to-frame ICP and a pose graph with local and global loop closure.
The pipeline: keyframes, frame-to-frame ICP and a pose graph with local and global loop closure.

ICP registration, keyframe selection and incremental map building produce consistent dense maps of indoor spaces. Local and global loop closures feed a pose-graph optimiser that removes accumulated drift.

Dense maps of a room (with its optimised trajectory), a lab and a classroom.
Dense maps of a room (with its optimised trajectory), a lab and a classroom.

Localisation

Relocalisation uses bag-of-words place recognition, refined by ICP against stored keyframes, to recover the full 6-DoF camera pose.

Live 6-DoF localisation in a prebuilt map.
Live 6-DoF localisation in a prebuilt map.

Validation and next steps

The system was validated handheld on a RealSense D455 with an Orin NX. I also designed an extension to tightly coupled VIO, adding IMU preintegration factors to the pose graph.

Behind the project

e-Yantra's eYSIP 2025 video on the SLAM on UAVs project, with the team talking through the problem, what we built and what we learned.

eYSIP 2025 project experience video, by e-Yantra.Watch on YouTube (opens in a new tab)