This project focuses on the development of a GPS-free drone localization and mapping system using ArUco Tags and SLAM techniques. In environments where GPS is unreliable or unavailable such as indoors, underground, or in disaster-stricken areas, accurate and real-time localization remains a significant challenge. To address this, our system integrates camera-based ARTag detection with visual-inertial SLAM algorithms. The goal is to enable real-time, accurate drone localization and mapping using only onboard sensors.

What is EKF-SLAM?

Simultaneous Localization and Mapping (SLAM) is a technique that allows a robot or drone to build a map of an unknown environment while simultaneously tracking its own position within that map. In our project, we implemented an Extended Kalman Filter (EKF)-based SLAM system to enable a drone to navigate and localize itself indoors using only onboard sensors. The drone processes video footage to detect both visual features and ArUco markers in the environment. Visual odometry estimates the drone’s motion between frames, while detected markers are used to correct and refine its pose using EKF updates. The system incrementally builds a map of marker positions and produces a 3D trajectory of the drone’s path. This allows for accurate indoor localization even in GPS-denied environments.

Project Details

Hardware

Duckiedrone21 Assembly

For this project, we used the DuckieDrone21 platform, which is a quadcopter specifically designed for indoor autonomy and research. The drone consists of a Raspberry Pi 3B+ as its onboard computer, connected to an ESC/Power board that supplies regulated power to the Pi and the motors. A flight controller is responsible for managing the low-level flight dynamics such as motor speeds, stabilization, and attitude control. It communicates with the Raspberry Pi, receiving high-level velocity commands and sending back IMU and state data. The flight controller ensures that the drone can maintain stable flight while the Raspberry Pi handles higher-level tasks such as SLAM and decision-making. The camera, mounted at the front of the drone, streams live video for SLAM processing.

Power Management

The drone is powered by a 3-cell Lithium Polymer (LiPo) battery. Proper battery management is essential to avoid discharge (below 10.5V) and overcharging, both of which can damage the battery. We monitored voltage levels during testing and used safe charging protocols to maintain battery health.

Software Environment

The onboard Raspberry Pi runs Ubuntu 18.04, with Robot Operating System (ROS) Melodic used for handling low-level communication and interfacing with the camera. The camera feed is published as a ROS topic, which can be visualized and used in real-time through the web interface.

Flying DuckieDrone21

Flying the DuckieDrone21 begins with preparing the software environment by setting up a Docker workspace using the pidrone_pkg repository. After verifying that the drone’s battery is sufficiently charged, we connect to the drone's Wi-Fi network from the base station. Using the terminal, an SSH connection is established with the drone via ssh duckie@amelia.local (default password: quackquack). Once connected, we navigate to the pidrone_pkg directory and start the Docker container by executing rake start. A screen session is then launched using screen -c pi.screenrc, which initializes the necessary ROS nodes. The web-based control interface is accessed by opening index.html located in /pidrone_pkg/web/, and loading it in a browser using the drone’s VLAN IP address as the hostname. Through this interface, we can monitor telemetry, view the camera feed, and send flight commands. Finally, the flight control system is activated by switching to the 1*$FC screen tab and running python flight_controller_node.py. With the setup complete, the web interface can be used to arm the drone, select flight modes, and control its movement safely during SLAM experiments.

Photos

assembly 1 assembly 2 Drone top down Setup

Videos

Ahmet Tunca Taşkın | 2220356191

Pınar Bektaş | 2200356098

Ecem Selin Demir | 2200356079

Advisor: Asst. Prof. Özgür Erkent