A useful application of Unmanned Aerial Vehicles (UAVs) is to sense and locate persons during an emergency. Imagine using UAVs to locate a hiker lost in the mountains or to spot people isolated in a dangerous area. The real-time video feed and accurate location information from a fleet of UAVs is invaluable for decision makers to efficiently distribute resources and dispatch rescue workers.

In this project, an autonomous vision based control system for a quadcopter is designed to execute a mission plan using a vision system. The system includes a Raspberry Pi 3, an onboard embedded system that communicates with the Pixhawk, an onboard autopilot. The Raspberry Pi and the Pixhawk are physically connected and communicate through serial communication via DroneKit-Python, which is a Python Application Programming Interface (API) that utilizes the MAVLink protocol. The Raspberry Pi executes a video processing algorithm to locate a target, in this case an AprilTag, a type of two-dimensional bar code. The mission plan of the quadcopter is to autonomously take off to a specified altitude, fly to a waypoint with a predefined GPS coordinate, locate the target displayed by an AprilTag, position itself over the target, and land near the target. If the target is not detected or the UAV cannot position itself within tolerance, the UAV returns to the takeoff point.