Skip to content

Automated drone for medical supply transportation in rural areas, featuring brushless motors, GPS, obstacle detection using MobileNetSSD, and precise PID tuning for flight stability

Notifications You must be signed in to change notification settings

minhquyminhquy/MediCopter-Drone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediCopter: DIY Automated Drone for Medical Supply Delivery!

Welcome to our space! We are Quy, Vinh, and Khoa from Gia Dinh High School, Vietnam. Our project is MediCopter, an automated drone to deliver medical supply to rurals areas. In this github documentation, you can find our journey to build it from stratch, codes, and media. You can also listen to our presentation at the end of this document.

Poster - MediCopter

Introduction

Our drone primarily consist of multicopter frame, various sensors, and a power manangement system. In order to run automatically, there is an Raspberry Pi 4 that run Python script to maneuver the drone to the desired duration, meanwhile sending GPS location back to the computer and detecting obstacles. To ensure smooth flight, there is a Pixhawk 2.4.8 fly controller that control the balance of the flight using PID, which we had tune for better balance.

Motivation:

In the Mekong Delta, which is an rural area located in the southern Vietnam, there is 44% of hospitals that are not equipped with sufficient medical supplies, leading to the emergence of on-demand medicals. In the emergency need of a certain medical supply, the traditional vehicles, like ambulance, are not capable of reaching these hospitals on-time, leading to bad situations.

That is why we developed MediCopter, a solution that can significantly speed up the transportation times of medical supplies by using drones, one of the most modern means of transportation. With the capabilities of holding up to 2kg, and peak speed of 100 km/h, MediCopter can deliver most of the supplies needed for an emergency.

Key features

  • Capable of holding maximum of 2kg by the 3D printed arm and servor
  • Automatically fly to the destination by using GPS and automatically update on the server
  • Using Object Detection to detect obstacles like bird, kites, building during maneuver

Poster - MediCopter

Materials

Hardware component

Part Components Description
Multicopter Frame Frame with Power Distribution Board Main structure for the drone
4 x 11x4.5 Propellers Provides lift
4 Arms Supports propellers
5000mAh LiPo Battery Power source
4 x 40A Electronic Speed Controllers (ESC) Controls motor speed
980 kV Brushless Motor Drives propellers
Flight Controller Raspberry Pi 4 Onboard processing
Pixhawk 2.4.8 Flight control system
GPS Navigation
Add-ons Raspberry Pi Camera Captures images and video
Microphone & Speaker Audio input and output
SIM Module Cellular connectivity
USB Camera (for detecting landing area) Assists in landing detection

Software Apps and Online Services

Software/Service Purpose
ArduPilot Provides tools for PID tuning and calibration of the drone's flight controller. Allows fine-tuning of performance and stability.
Python Libraries Essential libraries used for development:
- DroneKit: Enables communication with the drone and control of flight operations.
- OpenCV: Used for image processing and computer vision tasks, such as object detection and tracking.
Firebase Facilitates real-time location monitoring and data storage for the drone, allowing remote access to telemetry data.
TensorFlow Lite Enables deployment of the MobileNet-SSD object detection model on the Raspberry Pi, allowing real-time object detection capabilities.
SolidWorks Provides tools for 3D modeling and rendering of drone components, enabling visualization and design optimization.

Hand Tools and Fabrication Tools

Tool Purpose
3D Printer Used for creating custom parts and components for the drone, allowing for rapid prototyping and design iterations. Supports various materials to enhance structural integrity.
Electric Soldering Iron Essential for soldering electronic components onto the drone's circuit boards, ensuring reliable connections for optimal performance. Ideal for custom wiring and repairs.

Workflow

The workflow consists of 3 objects: Computer, Raspberry Pi, Pixhawk (Flight Controller)

Pre-flight

  1. Connection: The Raspberry Pi connects to the ThinkPad via Dynamic DNS and SSH.
  2. Command Execution: Commands are sent from the computer to execute Python scripts on the Raspberry Pi.
  3. Preflight Setup: Sensor calibration and battery checks are performed.

Mid-air

  1. Takeoff: The Raspberry Pi commands the flight controller to spin the propellers.
  2. Flight: The flight controller adjusts motor speeds based on sensor data for stability.
  3. Navigation: The drone uses GPS for positioning and follows waypoints or manual inputs.
  4. Video Streaming: Video streaming is initiated.
  5. Obstacle detection: Detect obstacles (bird, building, etc)

Landing

  1. Landing: The flight controller commands the drone to gradually descend and land.

This workflow is mainly commanded by Raspberry Pi - Pixhawk Combination.

Raspberry Pi - Pixhawk Combination
Example code:
Example code

Building Process

Our journey have 2 phase: manual control (only Pixhawk) and autonomous control (Pixhawk and Raspberry Pi). You can find our assemling process in this youtube playlist.

MediCopter Assembling Playlist

Phase 1: Manual control with Pixhawk

Building the frame

  1. Connect Electronic Speed Controller (ESC) to Power Distribution Board (PDB)
Poster - MediCopter
  1. Connect Brushless Motors to Arms
Example cdeo
  1. Connect Arms to PDB
Example cdeo
  1. Connect Battery to PDB
Example cdeo
  1. Connect Pixhawk to PDB
Example cdeo
  1. 3D printed the legs. The .stl file can be found in the folder 3D_components.
3DPrintLegs.MOV

Pixhawk Set-up

  1. Calibration and PID Tuning with Ardupilot
Example cdeo
8. Spinning test #1. At this point, 2 ESCs burns, so we have to upgrade ESCs. 9. Connect new ESCs
Example cdeo
8. Connect propellers
IMG_2691.MOV
  1. Spinning test #2. This time it spins perfectly
  2. Field test #1 with controller.
Demo.1.with.Controller.mp4

Phase 2: Autonomous control

Raspberry Pi Set-up

  1. Connect Raspberry Pi
Connect.Raspberry.Pi.MOV
  1. Connect Servo for Box Grabber. The 3D print file can be found at 3D_components/BoxGrabberPart1.stl and 3D_components/BoxGrabberPart2.stl
Connect.Grabber.mp4
  1. Field test #2, automatic

  2. Designing Medical Box

Designing-Box.mp4

Develop MobileNet-SDD model

  1. Get building, bird, kite images by web crawling
  2. Train the model
Bird-Detection-demo.mp4
  1. Deploy on Raspberry Pi
Rpi-Model-Deployment.mp4

Camera Module

DroneCameraOutput.mp4

Results & Achievements

On the demo of Aug 2023, our prototype are capable of flying automatically fly from point A to point B, and land safely.

Demo.-.Drone.Automatically.Fly.from.Point.A.to.Point.B.mp4

This is a big win for us for the whole summer. Then, we validate our drone by bringing it into an innovation competition and won a Gold Medal. You can find the video of our presentation below by clicking into it:

Presentation Video

AI-JAM Presentation Video

Further development

Although we have succesfully develop other add-on like object detection, our drone are not capable of dodging the obstacle in real-time. This is one of the main development that we can improve in the future. For further distance and more payload, we can upgrade our battery and motors.

About

Automated drone for medical supply transportation in rural areas, featuring brushless motors, GPS, obstacle detection using MobileNetSSD, and precise PID tuning for flight stability

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published