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.
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.
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.
- 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
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/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. |
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. |
The workflow consists of 3 objects: Computer, Raspberry Pi, Pixhawk (Flight Controller)
- Connection: The Raspberry Pi connects to the ThinkPad via Dynamic DNS and SSH.
- Command Execution: Commands are sent from the computer to execute Python scripts on the Raspberry Pi.
- Preflight Setup: Sensor calibration and battery checks are performed.
- Takeoff: The Raspberry Pi commands the flight controller to spin the propellers.
- Flight: The flight controller adjusts motor speeds based on sensor data for stability.
- Navigation: The drone uses GPS for positioning and follows waypoints or manual inputs.
- Video Streaming: Video streaming is initiated.
- Obstacle detection: Detect obstacles (bird, building, etc)
- Landing: The flight controller commands the drone to gradually descend and land.
This workflow is mainly commanded by Raspberry Pi - Pixhawk Combination.
Example code: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.
- Connect Electronic Speed Controller (ESC) to Power Distribution Board (PDB)
- Connect Brushless Motors to Arms
- Connect Arms to PDB
- Connect Battery to PDB
- Connect Pixhawk to PDB
- 3D printed the legs. The
.stl
file can be found in the folder3D_components
.
3DPrintLegs.MOV
- Calibration and PID Tuning with Ardupilot
IMG_2691.MOV
- Spinning test #2. This time it spins perfectly
- Field test #1 with controller.
Demo.1.with.Controller.mp4
- Connect Raspberry Pi
Connect.Raspberry.Pi.MOV
- Connect Servo for Box Grabber. The 3D print file can be found at
3D_components/BoxGrabberPart1.stl
and3D_components/BoxGrabberPart2.stl
Connect.Grabber.mp4
-
Field test #2, automatic
-
Designing Medical Box
Designing-Box.mp4
- Get building, bird, kite images by web crawling
- Train the model
Bird-Detection-demo.mp4
- Deploy on Raspberry Pi
Rpi-Model-Deployment.mp4
DroneCameraOutput.mp4
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:
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.