Summary
- What Is It? – Autonomous Drone for last-mile package delivery
- Technologies Used – C++, Python, Raspberry Pi, PX4, Linux, ORBSlam 3.0
-
My Accomplishments
- Decreased system unit cost by 40%
- Implemented many different software into a cohesive system
- Gathered technical requirements and design specifications
- Designed and actualized project from start to finish
Background
Last mile deliveries (from warehouse to mailbox) are the most expensive part of delivery for businesses like Amazon. They also takes the greatest toll on society – using fossil fuels to power trucks, creating traffic in already congested areas, and filling landfills with the extra packaging needed to protect the goods during transit. Drones like the one we created for our senior project are able to solve all of these problems, helping both the businesses and society as a whole.
What It Does
This multirotor drone uses computer vision, GPS, and other sensor data to autonomously transport packages from a warehouse to a delivery destination, safely drop the package off, and then return to the warehouse for the next delivery.
How We Did It
My team designed this drone from the ground up before ultimately building and testing it. The first step was to concretely lay out our requirements and design specifications. Our original goal was just to make a working delivery drone, but after researching the cost of parts, we decided to also strive to make the whole unit cheaper, as this would be a product with large volumes.
Researching for this project was by far the biggest and most in depth analysis I have ever done. Together, my team contributed over 1000 hours of research to this project. Because the project was so open ended, and there were so many good options to use in our drone, it took a lot of work to select the perfect components for our system.
At this point, drones, are so widespread and readily available, that our airframe was not the interesting part of the project. We did not do any special designing for this. We simply picked an airframe that would fit our needs, namely be able to carry a 0.5 pound package 10 miles round trip. We picked this number because a huge number of packages (over 2/3) are able under 0.5 lbs.
![](/wp-content/uploads/2023/03/Picture2.png)
At this point, drones, are so widespread and readily available, that our airframe was not the interesting part of the project. We did not do any special designing for this. We simply picked an airframe that would fit our needs, namely be able to carry a 0.5 pound package 10 miles round trip. We picked this number because a huge number of packages (over 2/3) are able under 0.5 lbs.
![](/wp-content/uploads/2023/03/Picture1.png)
The most interesting part of the project, and my specialty, was the computer vision. This is where I spent the majority of my time researching, testing and implementing. I decided that computer vision was a good idea for this project because lidar is so much more expensive. After much investigation, I concluded that SLAM (Simultaneous Localization and Mapping) would be the best computer vision algorithm for our purposes. This would allow us keep track of the drones position and orientation in space over large distances, as well as remember where it had been. It would also map obstacles in the environment to ensure that the drone does not collide or crash. For the project, we used ORB-SLAM 3.0. This is an open-source SLAM implementation that had the perfect balance of performance, features, and robustness. We ran this on a Raspberry Pi on top of a special real-time versions of Linux.
![](/wp-content/uploads/2023/03/Picture3.png)
Our flight control software was PX4, another open-source platform. It was relatively simple to set up and run on the Raspberry Pi. The challenging part was connecting it with our computer vision layer. When the camera detects an obstacle, how do we navigate around it? PX4 comes with a package that enables obstacle avoidance using a point-cloud. The problem is that it uses it’s own computer vision software and requires a stereo camera with depth sensors. These are very expensive, and we avoided them for the same reason as the lidar sensors. This meant that we had to modify the PX4 Obstacle Avoidance package to skip its own computer vision algorithm and instead take in the point-cloud from ORB-SLAM. This was very challenging and finnicky to get these programs to work together. We ultimately used ROS to communicate between them. This allowed us to finally do obstacle avoidance with a single camera.
![](/wp-content/uploads/2023/03/Picture4-1024x758.png)
What I Achieved
The biggest accomplishment of the project was reducing the system cost by 40% through the use of computer vision rather than lidar or other expensive sensors. At the time of the project, the appropriate lidar sensors costed around $300. With the whole system costing around $700, this is a huge expense. Using a $10-$20 camera, we were able to reduce the unit cost by a huge amount, which helps to manufacture this product at a large scale and deploy it widely.
Another part of the project I’m proud of is being able to connect many different software into a complete system. Many parts of the project were trivial to set up on their own. The challenge came from integrating them together. I am proud of the fact that I was able to get each part working with all the others, especially the obstacle avoidance software that I had to modify.
What I Learned
This project was a very open ended research project that required lots of planning and problem solving to complete successfully. With this being very similar to my Real Time Systems Security Research, I strengthened and improved many of the skills I learned from that project, namely: developing concreate requirements, researching complex open ended topics to get results, and designing a complete software system.
In addition to these skills, I also learned a lot from writing the research paper that went along with this senior project. It taught me how to clearly document technical details and effectively communicate ideas and impact in a way that non-technical stakeholders can understand.
Lastly, I strengthened my ability to integrate separate programs into the whole. This is something which is very important in creating a finished product. While I did gain some practice doing this in my other research projects, the delivery drone gave me much more of this valuable experience.
Overall, this project has made me so much more confident with my general engineering ability, in addition to my programming skills.