Inspiration

We were inspired by the various tools provided at hack the north and were ecstatic to use them towards a hardware hack; something that none of us had ever done before. We knew that drone delivery was getting increasingly popular, but none were trying to assist in the medical field. So we decided that if we wanted a drone delivery service to be a service, then it had to provide something important to people; for example, medicine. During the Covid-19 pandemic, drones were used to deliver blood, medicine and supplies to the First Nation communities here, and also in Africa to remote communities. We wanted to bring this type of service to regular prescription drugs and getting these prescriptions to people urgently.

What it does

This API service provides a complete set of endpoints for other developers to interact with and build off of. The DJI Tello drone requires a python backend to interact with it, and so each time a user makes a delivery request, the request is sent to the python backend, which tells the drone to take off to the pharmacy and then to the location specified by the end user. The entire process is comprised of 3 parts. First, the drone supplier deploys their drone towards a specific pharmacy (The supplier is essentially anyone that signs up and has a drone they don't often use). Then, when the drone arrives at the pharmacy, the pharmacy's drone list is updated and the newly arrived drone is appended to the list. From the user side, they will be able to see whether the pharmacy is within range of delivery, and whether the pharmacy has any drones for this type of delivery. When the user places their order, this order must be manually approved by the pharmacy, and when it is approved, the drone is able to take off and fly towards the user's house, safely land and then return to the pharmacy.

How we built it

We used the DJI Trello drone and SDK to transport pills to and from the pharmacy. In our proof of concept, the drone travelled between points A and B in the drone room. Our attachments were modelled with the shape of the drone's body in mind, and we considered whether the propellers would interfere with it, should we have chosen to have it on the top.

Once the drone receives its coordinates and ensures its autonomy in flight, we communicate with the drone through a Flask backend that we constructed. Tello provides an SDK, so we were able to leverage this and build a server that provided us with a high level wrapper around the SDK's functions.

Next, we needed to create a server that would provide the developers and end users with a complete set of API endpoints to build and use. For this, we used Node.js, with Express.js to set up another server. To keep track of all the users, drone suppliers, pharmacies and drugs, we persist the data using MongoDB. During testing with the drone, the MongoDB connection had to be migrated from a cloud DB to a local one.

Challenges we ran into

The provided drones were incredibly unreliable and we went through several drones before we finally managed to successfully interact with one. In addition, the drone showed some irregular takeoff patterns which further complicated testing. Because of hardware limitations the payload could not be attached to the top of the drone because of potential interference with the propellers. Thus, the payload was attached to the underside of the drone body despite its effect on the drone's takeoff and landing mechanisms.

Accomplishments that we're proud of

For our entire team, this was our first in-person hackathon and we are proud of what we managed to accomplish. We are incredibly proud of designing a whole system in just under 36 hours that contains many interacting parts like the flask server, node.js express server, and the drone. With regards to planning, we're especially proud of the whiteboard outline we drafted before starting on the node.js express server. At the time, not everyone was on the same page regarding the vision for this project, so by writing out and explaining to one another our ideas on a huge whiteboard, we were able to more effectively turn our ideas into reality.

What we learned

Throughout this project, we were able to acquire a better sense of the enormity of such an undertaking. The amount of moving parts we had to integrate was on a scale none of us were really familiar with. Additionally, some group members not familiar with web development were able to learn many new things.

Also, sleep deprivation is a huge no. Get adequate rest.

What's next for Soary

  • Polishing the server API endpoints
  • Designing and building mobile and web clients that interact with our API suite
  • Shift our drone platform from DJI Tello to larger drones that have a better carrying capacity and a more stable development platform.
Share this project:

Updates