This article was written by 2019 fellowship winner Ethan Cho.
This project started with my vision of utilizing drones for deliveries as well as other purposes. I was hoping to make a drone that is capable of making deliveries and having the ability to detect humans so that the user interface could be done with hand gestures as well as facial recognition. I wanted to give myself a project that I am incapable of understanding or doing at that moment. Forcing myself to push my boundaries and learn more complex material. I wanted to understand how machine-learning worked. Working towards making a user interface that can be done using hand gestures. Using hand gestures for users to give commands through certain movements. On the mechanical aspect, I wanted to learn how to use Auto desk Inventor as well as Fusion 360 to design certain mechanisms that can be 3d printed to drop and pick up packages. As well as, understanding the parts required for the drone to accomplish delivery tasks. For programming, I wanted to Be able to understand Python and other C languages. Learning how codes are utilized for drones and how codes translate to physical movement of the drone. I also wanted to learn how to use VirtualBox for me to use ubuntu on my desktop. With no background in designing or use of Linux software, this was a very ambitious attempt and I wanted to test myself to see what I am capable of.
To start, I wanted to understand how drones worked. I have some experience with FPV drones that are utilized for racing but not for delivery purposes. I need to to understand all the parts that are required for drones and convert it in a way that it is efficient for delivery purposes. I needed to figure out how much battery power I needed, the flight controller requirement, motor requirement, and the ESC requirement. All the mechanical Parts had to fall in line for the drone to accomplish tasks such as picking up heavy payloads. Figuring out the requirements as well as budgeting it so that it falls under $1,000 was a very difficult task. Most of the drones out there are well over $1,000 and to create one from scratch and buying individual parts from many different companies was a very big struggle. The problem with finding very cheap parts is that they have a higher failure rate and they are not as stable as the more expensive ones.
After the mechanical parts were figured out, I needed to learn how to use Autodesk inventor for me to create a design that will allow the drone to pick up and drop packages. This was very difficult because I have never learned how to use 3d design software. I had to learn how the program works as well as how to design from scratch. Then, I needed to learn how to 3D print the design that I created. lucky enough for me, I was able to utilize the Thode Makerspace at McMaster University by booking a time to utilize the 3D printers there. My initial designing process was atrocious. I started by designing a paper airplane that had no dimensions or purpose and figuring out how the software works on my own. I soon realized what the program was capable of. I learned the process of starting from 2D sketches and creating 3D design through extrusions. I didn’t know how to use a lot of the functions that are on Inventor to make my life easier and make the design better. Through YouTube and other outside sources, I learned a few tricks to make my design more functional and efficient. I was getting better and better at creating a functional design.
Compilation video made by Ethan Cho
I was able to find parts that are most efficient and budget-friendly for my project. Most of the parts were from China and the delivery process took more than two months. During the delivery time, I was studying and practicing coding as well as designing.
After putting most of the parts together I realised some of the parts are broken. Some of the parts arrived broken which caused huge headaches. But knowing this would occur, I ordered extra parts. It took several tries with different setups and tuning to make the drone fly semi-stable. I had to have a full understanding of PID tuning for me to perfectly stabilise the drone. But with my lack of knowledge, I decided to prioritise the dropping mechanism with a semi-stable flight.
After the design process, I needed to figure out the mechanical aspects of the design for me to drop packages. With the lack of skills that are required to make out very efficient design, I started by making a mechanism that allows me to drop packages using a servo that can be triggered with the remote controller for the Drone. I was able to make this design work by using a couple of paper clips and 3 d printed parts. It’s no joke when I say it’s a budget project. With this mechanism, I was able to successfully keep the package held in place using a rubber band and release it using the trigger mechanisms while the Drone was flying.
When I thought everything was going well, crashes were inevitable as it was a process of learning. The only downside of crashing is that parts break when the drone crashed. I didn’t have the time nor the budget for me to get new parts for the drone. This was when I had the DJI Tello with a side budget for me to study machine learning and programming of a drone.
DJI Tello is a drone that is under 250 grams which allows me to fly it without needing a license or registration of the drone. What’s cool about this drone is that it’s connected via Wi-Fi and it can be coded from a computer using Linux software and python. I’ve watched a lot of videos and I found out that you can make several lines of codes that give the drone sequences of movements. this work was done by another person and I will link his work to this paper. I was able to utilise his codes to make a sequence of movements for the drone from my computer. This is when I learned how codes translated to physical movements of the drone.
Video of the tello flight:
Then I got into the machine learning capability of the DJI Tello and I was able to use their website and learn how machine-learning worked. All I had to do was get enough samples of what I wanted the program to detect and make the program learn what those objects are. I wanted to make the Drone Be able to detect my face and do certain movements whereas if it detects other people it would not do those certain movements. This is where I was stumped as there are not that many resources out there that explains how to make that process happen as well as how to use a set of codes for a drone that’s not just a DJI Tello.
Over the summer, I’ve learned so much about drones, designing, and programming. I doubted my capabilities before but through this self-study process, I realized that I can learn a lot more on my own than just relying on school. Through TU20, I was able to learn a lot about drones, coding and designing. I want to thank TU20 for giving me this opportunity to learn and explore my interest.
In the beginning, I was struggling to make the Drone within the budget. Because the parts have to be so cheap but efficient enough to deliver product I need something in between. It was very difficult to find a balance of money and Quality Parts.
Another struggle that I had was learning designing software. Such as inventor and fusion 360. After this process, I had no idea how to 3D print the designs that I created nor where to print them.
Programming was also stressful because I was not proficient in Python nor using Ubuntu. I had to learn the whole process from scratch and I felt so hopeless in the beginning but, as I cracked through those barriers it got easier and easier.
The biggest Milestone at the end was I wanted to utilize the brain of the DJI Tello and use the mechanical parts of the big delivery drone but was not able to do so because of budget, resources and time.
My final results came down to a giant drone that is capable of dropping packages and flying semi-stable. As well as a Tello drone that is capable of doing a sequence of movements through lines of code that is written by another person. Although the codes are not written by me, because of my lack of knowledge in programming, I was happy to even understand how the process worked. Allowing me to utilize the open-source code to make the Tello drone move the way I want them to. In the end, the drone is capable of delivering a package manually controlled by the user and dropping them at a certain location.
What we have learned:
I’ve learned so much throughout this project and the biggest improvement I’ve made over the summer was programming designing and understanding mechanical/electrical drone components. For programming, I’ve learned Python and other C languages. For Designing I was able to use Inventor and Fusion 360 to make a functioning mechanical design. I now have a pretty good understanding of the drone parts and what makes a drone. understanding a lot of the electrical components such as well as how a program allows electrical signals to translate into a mechanical movement.
What is left to do:
I would like to continue self-studies for Designing and programming. this project sparked a new chapter in my life that allowed me to realize that I am capable of self-learning programming and designing. It was really fascinating to learn how things work in this world instead of just buying the product created by somebody else. Drones are really fascinating to me I want to continue studying them. I hope to finish the delivery drone in the future and I also look forward to creating a swarm of micro drone that is capable of communicating with each other. Hoping to utilize them for search and rescue missions.