{"id":27115237,"url":"https://github.com/oneiben/autonomous-drone-landing-system","last_synced_at":"2026-01-20T21:33:17.544Z","repository":{"id":278682588,"uuid":"935959237","full_name":"Oneiben/autonomous-drone-landing-system","owner":"Oneiben","description":"an autonomous drone landing system that uses visual and distance-based sensors.","archived":false,"fork":false,"pushed_at":"2025-03-22T14:58:53.000Z","size":37551,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T04:54:16.640Z","etag":null,"topics":["drone","image-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Oneiben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-20T09:53:13.000Z","updated_at":"2025-03-25T10:31:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"1cebbdba-94d0-40c1-80f4-3803455051b5","html_url":"https://github.com/Oneiben/autonomous-drone-landing-system","commit_stats":null,"previous_names":["oneiben/autonomous-drone-landing-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Oneiben/autonomous-drone-landing-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oneiben%2Fautonomous-drone-landing-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oneiben%2Fautonomous-drone-landing-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oneiben%2Fautonomous-drone-landing-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oneiben%2Fautonomous-drone-landing-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Oneiben","download_url":"https://codeload.github.com/Oneiben/autonomous-drone-landing-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oneiben%2Fautonomous-drone-landing-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28614607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T18:56:40.769Z","status":"ssl_error","status_checked_at":"2026-01-20T18:54:26.653Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drone","image-processing"],"created_at":"2025-04-07T04:54:35.841Z","updated_at":"2026-01-20T21:33:17.522Z","avatar_url":"https://github.com/Oneiben.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autonomous Drone Landing System\n\n![Main Process Overview](./Media/landing_progress_gifs/Main.gif)\n\n---\n\n## Table of Contents\n\n- [Autonomous Drone Landing System](#autonomous-drone-landing-system)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n    - [Key Features:](#key-features)\n  - [Landing Process in Action](#landing-process-in-action)\n    - [Downward Camera View](#downward-camera-view)\n  - [Installation](#installation)\n  - [Project Structure](#project-structure)\n  - [Usage](#usage)\n  - [Technologies Used](#technologies-used)\n  - [Contributing](#contributing)\n    - [Steps to Contribute:](#steps-to-contribute)\n  - [License](#license)\n\n---\n\n## Overview\n\n\nThis project focuses on an autonomous drone landing system that uses visual and distance-based sensors. The primary objective is to enable the drone to detect a landing pad with a downward-facing RGB camera and calculate the distance from the ground using a **VL53 distance sensor**. The system leverages advanced image processing and control mechanisms to ensure a safe and accurate landing.\n\n### Key Features:\n\n- **Autonomous Landing Pad Detection:** Utilizes an RGB camera and image processing techniques.\n- **Distance Measurement:** Employs a VL53 sensor for real-time altitude assessment.\n- **Landing Control:** Integrates Proportional-Integral-Derivative (PID) control for dynamic throttle adjustments and precise positioning.\n- **Robust Detection:** Combines YOLO (for object detection), OpenCV (for real-time image processing), and OCR (Tesseract) for identifying the landing pad and its \"H\" symbol.\n- **Simulation Support:** Includes Unity-based simulations for testing and training, compatible with macOS, Linux, and Windows, and leverages `mlagents_envs` for seamless integration of Unity simulations into Python workflows.\n\n---\n\n## Landing Process in Action\n\nHere is example of the landing process captured during testing:\n\n### Downward Camera View\n\n![Downward Camera View](./Media/landing_progress_gifs/Downward.gif)\n\n---\n\n## Installation\n\nFollow these steps to set up the project:\n\n1. **Clone the Repository:**\n\n   ```bash\n   git clone https://github.com/Oneiben/autonomous-drone-landing-system.git\n   cd autonomous-drone-landing-system\n   ```\n\n2. **Install Dependencies:**\n   Make sure you have Python 3.10.12 installed, then install the required packages using:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n---\n\n## Project Structure\n\n```plaintext\nautonomous-drone-landing-system/\n├── Media/  \n│   ├── landing_progress_gifs/  # GIFs showing the landing process from different angles\n│   │   ├── Downward.gif\n│   │   └── Main.gif\n│   ├── landing_pad_images/     # Images of the landing pad\n│   │   ├── landing_pad.png\n│   │   └── LandingPad.jpg\n├── models/                     # YOLO model weights\n├── src/                        # Python scripts for the landing system and utilities\n│   ├── control_actions.py\n│   ├── image_processing.py\n│   ├── main.py\n│   └── simulation.py\n├── tests/                      # Unit tests for validating components\n│   ├── ip_test_cv2.py\n│   ├── ip_test_pytesseract.py\n│   └── ip_test_yolo.py\n├── LICENSE \n├── README.md\n└── requirements.txt            # Python Dependencies\n```\n\n---\n\n## Usage\n\n1. **Set up your simulation environment:**\nIf you want to test in simulation, you can check out this simulation and build a Unity simulation.🔗 [Quadrotor Simulation](https://github.com/Oneiben/quadrotor-simulation-unity.git)\n\n   Once you build the Unity simulation, note the path to the build file. You’ll need this path when running the main script.\n\n2. **Launch the main script to start the landing system:**\n\n   ```bash\n   python src/main.py  \u003cpath-to-your-simulation-build\u003e\n   ```\n\n3. **Test Detection Methods:**\n   Use the test scripts in the [📂 tests](./tests/) folder to validate the detection methods with a webcam. YOLO models located in [📂 models](./models/) are used for detecting two landing pads. Ensure the model names align with the images provided in the [📂 landing_pad_images](./Media/landing_pad_images/) directory.\n   - Example for testing YOLO:\n     ```bash\n     python tests/ip_test_Yolo.py\n     ```\n\n---\n\n## Technologies Used\n\n- **Python:** Core language for development.\n- **YOLO:** Object detection for landing pad recognition.\n- **OpenCV:** Image processing library.\n- **Tesseract OCR:** Letter detection for identifying the \"H\" symbol.\n- **VL53 Distance Sensor:** Measures altitude.\n- **PID Control:** Ensures precise and smooth adjustments for safe landing.\n- **Unity:** Used for creating and running drone landing simulations.\n- **mlagents_envs:** Provides a `UnityEnvironmentWrapper` for interfacing Python with Unity simulations.\n\n---\n\n## Contributing\n\nContributions are welcome! If you have suggestions or improvements, feel free to fork the repository and create a pull request.\n\n### Steps to Contribute:\n\n1. Fork the repository.\n2. Create a new branch:\n   ```bash\n   git checkout -b feature-name\n   ```\n3. Commit your changes:\n   ```bash\n   git commit -m \"Description of changes\"\n   ```\n4. Push the changes and open a pull request.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the [📜 LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foneiben%2Fautonomous-drone-landing-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foneiben%2Fautonomous-drone-landing-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foneiben%2Fautonomous-drone-landing-system/lists"}