The world is evolving rapidly, and in this stride forward, “the sky is the limit”. A part in this evolution is being played by the advent of drones in various applications ranging from commercial deliveries to recreation. India is anticipated to be the world’s 3rd-largest drone market [Drone Industry Insights Report 2020], with a projected worldwide industry of $42.8 billion by 2025. This new emerging sector would attract new talent and investments.
Early exposure is the need of the hour to help build the talent needed to support this vision. With many complicated algorithms, software, and much time to set up your drone, Python programming language would be the right step towards an easy and accelerated learning curve and help the new entrants develop their solutions to real-world problems.
Drona Aviation is building an ecosystem to support this skill development through Pluto - India’s only developer drone platform supporting the Indian Nano-Drone. Drona Aviation is primarily based on 4 fundamental principles complementing one another.
The organization has worked hard to provide an open-source implementation with learning content. This serves as the basis for building upon their work, which is precisely what the company intends - helping young talents explore and incorporate their ideas.
The report is based on the team's journey while attempting the “Pluto Drone Swarm Challenge”.
The second task utilizes this python wrapper to achieve two objectives - (i) Hover the drone at a particular position, specified to be close to 4 feet with some variations (ii) Move the drone in a rectangular motion, following a trajectory of predefined dimensions
The general framework to achieve these two objectives is provided. An ArUco Tag would be used to estimate the drone's position based on visual data from a USB web camera attached to the ceiling of the area where the drone is to be flown. Based on this feedback, a controller [Mentioned as a PID Controller] would be responsible for holding the drone on a trajectory.
This repository is built using Python 3.9.6 and tested on Ubuntu 22.04 LTS and Ubuntu 20.04 LTS environment. Follow these intructions
Clone the repository
git clone https://github.com/InterIITDrona-Team11/Team11-Task2-Drona.git
Run the following command to install the required dependencies
python3 -m pip install -r requirements.txt
autoPluto.py
is the main python script which defines the class and also calls it to run the drone accordingly in the hover or rectangle tracking mode.
Connect to the Pluto Drone Wifi by entering the provided password.
Navigate to the directory where repository is cloned
cd Team11-task2-Drona
To set the mode make appropriate changes in the mode
attribute of droneData.ini
file present in the controls directory.
Run the script autoPluto.py to run the different parts of task 02.
python autoPluto.py
The following metrics were used to ensure that our hovering was as close to ideal as possible -
X co-ordinate Vs Y co-ordinate | Error in Z co-ordinate |
![]() |
![]() |
The first plot [Left] shows the variation in x vs y, which clearly indicates that post take-off the drone tries to maintain the same x and y co-ordinates and stabilise at a particular target position. The second plot [Right] shows the varation of error along z-axis which stabilises as close to zero showing we have achieved our target state.
The following metrics were used to ensure that our path tracking was as close to ideal as possible -
Cross Track Error | Error in Z co-ordinate |
![]() |
![]() |
The first plot [Left] shows the cross track error, which shows how accurately the rectangle is being tracked. The oscillations are expected to some extent when flying tight trajectories indoors. The second plot [Right] shows the variation of error along z-axis which stabilises and indicates that the drone tries to maintain a fixed height while flying in the rectangular path.