Code Monkey home page Code Monkey logo

uav-search's Introduction

UAV-Search

Backstory

This project is done as part of my graduation project as a senior aerospace engineering student at Cairo University. The project is also a step towards participating in the "UAV Challenge - Medical Rescue" competition in Australia (that was meant to be on septemper, 2020 but now is planned to take place on 2021 due to SARS-CoV-2 "COVID-19" outbreak)

What is this?

  • Video Demo
  • This is an ongoing project to implement a "search & rescue" mission with a VTOL aircraft.
  • It's meant to be running on an on-board computer (which is currently decided to be the Nvidia Jetson Nano) that would work with the Pixhawk controller running the PX4 firmware [Communication are done via the MAVlink protocol using the MAVSDK-Python library].
  • Right now, I have implemented the following:
    • A* 2D path planning:
      • Currently designed to run as an 'offline' planner that would only run once at the beginning of the mission, knowing the map, the no-fly zones and the goal/target location, the planner plans a path to the goal location avoiding the no-fly zones.
      • Returned path waypoints are uploaded to the Pixhawk controller as Mission Waypoints via MAVSDK.
    • Object Detection:
      • Designed to detect objects [humans in the case of UAV Challenge] using a camera mounted on the aircraft.
      • Currently implemented with Tensorflow2, the code can use mainly three different models which are:
        1. YOLOv3 & YOLOv3-Tiny - running with tensorflow2 (will be optimized with tensorRT in the future to run even faster on the on-board computer)
        2. SSD-mobilenet-COCO (all versions) & SSDlite from the tensorflow detection model zoo [not optimized]
        3. A TensorRT optimized model of the original SSDlite-mobilenet model. [currently runs at >10fps on Nvidia Jetson Nano]
    • Camera-Based Localization of Detected Objects:
      • Video Demo
      • Currently implements localization based on the simple triangle-similarity method, assumming the camera is always facing directly downwards.
      • Located objects pixel center is transformed into the global coordinates, based on the UAV location at the time of capturing the image and the yaw angle of the UAV.

Clone Notes

  • This repository contains some files that are tracked by "git-lfs" (git large file system). To clone the full version of these files you need to git clone <repo-link> then navigate to the repo directory and git lfs pull to pull the full version of the lfs tracked files into your directory.

uav-search's People

Contributors

ahmedhisham1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

uav-search's Issues

UAV-Search Setup steps

Hello,

We can't see everything in the video you shared.
( https://www.youtube.com/watch?v=-0mwb_KjFy8&t=133s )
( https://www.youtube.com/watch?v=lc4bMRS7228)

We will be glad if you explain step by step.

e.g.
Here's what to do for gazebo: XXX~/PX4-Autopilot$ make px4_sitl_default gazebo
Could you also attach the .launch file of the Gazebo environment? Because your world file does not come by default in gazebo_sitl.
Here's what to do for object detection: (your code) XXX~/UAV$ python main.py
For the QGroundControl interface, this is what needs to be done: ./QGroundControl.AppImage
For mavros initialization the following is required: roslaunch mavros px4.launch fcu_url:="udp://:14540@localhost:14557"

Because I am getting errors while executing main.py file.

engin@engin:/UAV-Search$ python main.py
Traceback (most recent call last):
File "main.py", line 19, in
from cv_utils import coordinates_plot, draw_outputs, keep_person_only, localize_person
File "/home/engin/UAV-Search/cv_utils.py", line 4, in
from mavsdk_utils import get_location_offset_meters
File "/home/engin/UAV-Search/mavsdk_utils.py", line 2, in
from mavsdk import System, MissionItem, OffboardError, PositionNedYaw, Action
ImportError: cannot import name 'MissionItem' from 'mavsdk' (/usr/local/lib/python3.8/dist-packages/mavsdk/init.py)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.