Coder Social home page Coder Social logo

marksherstan / thesis-uav_localization_control_payload Goto Github PK

View Code? Open in Web Editor NEW
3.0 0.0 0.0 997.12 MB

MSc thesis code for Localization and Control of a Quadcopter Universal Payload System.

C++ 13.99% Python 84.60% Shell 1.41%
thesis msc computer-vision aerial-manipulation localization control modular unmanned-aerial-vehicle

thesis-uav_localization_control_payload's Introduction

Thesis-UAV_Localization_Control_Payload

MSc thesis code for Localization and Control of a Quadcopter Universal Payload System.

Abstract

There is a growing trend of using unmanned aerial vehicles (also known as UAVs, uncrewed aerial vehicles, or drones) to manipulate and interact with their surroundings. The algorithms and tools used are typically unique to the different tasks performed by UAVs; however, the fundamental UAV system largely remains consistent. This thesis offers a general quadrotor UAV system capable of performing multiple tasks dependent on available payloads. The system is empirically developed and performs localization using ArUco fiducial markers, an inertial measurement unit, and a Kalman filter. Navigation is achieved using a proportional integral derivative controller, and interfacing with various payloads is accomplished with a custom-developed universal payload manipulator. The system is described in detail and demonstrated with real-world experimentation, including the deployment of an example payload for removing twist caps off sump lubricant reservoirs. Empirical results show the developed system as an initial functional prototype in ideal conditions, and further work is required to increase system reliability and functionality for non-ideal scenarios.

Setup

Clone the repo and install all the dependencies. For the first time call git submodule update --init --recursive. Otherwise update using git submodule update --recursive.

Most of the developed code uses Python where a list of all the imported packages can be viewed in the below table. A majority of the Python packages come preinstalled; however, additional packages should be installed with pip (denoted with *). Two packages must be built directly from source code (denoted with **). All software ran on a Jetson Nano (quadcore ARM A57 processor) with Python 3.6.9 and Ubuntu 18.04.5 LTS.

Package Version | Package Version
datetime 3.6.9 | pymavlink* 2.4.9
DroneKit* 2.9.2 | pyrealsense2** 2.36.0
math 3.6.9 | pySerial* 3.4
Matplotlib* 3.3.1 | simdkalman* 1.0.1
multiprocessing 3.6.9 | statistics 3.6.9
NumPy* 1.18.4 | struct 3.6.9
openCV** 4.3.0 | threading 3.6.9
pandas* 1.1.0 | time 3.6.9

For information regarding the building of non standard packages refer to the wiki.

Use

Run the bash script run.sh and once the UAV is placed into GUIDED_NOGPS mode the UAV will be in full control. Use control + c to terminate the program and complete data logging.

Flight Logs

Flight logs are saved after each flight in .csv format. To plot data and analyze the log, navigate to the /flightData directory and enter the file name in the command line as such: python3 plotter.py --input "flight1.csv".

Payloads

Open the /payloads directory and navigate to either the /cap or /MASTER directory and build using PlatformIO. All pinout is labeled in src/main.cpp. The servo library may need to be re-installed with the following command: pio lib install "Servo" in the PlatformIO command line. Upload the compiled code to its respective PCB.

PCB

The PCB's were designed with KiCad 5 and manufactured by JLCPCB.

thesis-uav_localization_control_payload's People

Contributors

marksherstan avatar

Stargazers

 avatar  avatar  avatar

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.