Project Type: Class Project, MEE 623 – Robot Vision Control
Date: April 2026
This project focused on developing a vision-based control system for a DJI Tello drone. The main goal was to make the drone recognize a visual call signal, fly autonomously toward the user, and land safely at a predefined distance.
The drone started from a stationary position at a random location and was required to detect the user's visual reference from up to 20 feet away. It then had to approach the user without collisions, false activations, or continuous manual flight control.
To guide the drone, we used an ArUco marker as the visual target. The marker provides both position and orientation information, allowing the drone to locate and align itself with the user. This approach removes the need for GPS, external motion-tracking systems, or manual remote control.
The main inputs to the system are:
ArUco marker position information
ArUco marker orientation information
These inputs are estimated continuously from the drone's onboard camera feed.
The drone is first connected to the laptop through Wi-Fi. The overall control pipeline is organized as follows:
Start the camera stream
The live video feed from the DJI Tello's onboard camera is streamed to the laptop.
Take off and maintain hover
The drone performs an automatic takeoff and maintains its initial hover position before starting the vision-based tracking process.
Detect and align with the ArUco marker
The system searches for the ArUco marker in the camera frame and uses its position and orientation to determine the drone's alignment relative to the target.
Validate the marker orientation
The marker orientation acts as a visual call signal. If the marker is not presented in the required orientation, the drone remains hovering. Once the orientation is acceptable, the drone begins moving toward the marker.
Compare the current and target positions
The detected marker position is continuously compared with a predefined target position to calculate the positional error.
Generate flight commands using proportional control
Proportional control is used to generate commands for vertical, lateral, and forward or backward movement. Separate gains and maximum speed limits are applied to each direction to provide stable and controlled motion.
Use closed-loop visual feedback
The camera continuously captures new frames, and the marker position is recalculated after each movement. Based on the updated position error, new control commands are generated. This closed-loop feedback process allows the drone to continuously correct its trajectory while approaching the user.
The drone autonomously moves toward the ArUco marker and lands when the estimated distance to the target reaches approximately 0.40 m.
Thank you for reading! Please check out my other projects as well, and let me know if you have any suggestions for improvement.