GithubHelp home page GithubHelp logo

aerotec-atlas / uav-art Goto Github PK

View Code? Open in Web Editor NEW
15.0 2.0 7.0 271.09 MB

Avionics team repository of the UAV-ART project

Home Page: https://aerotec.pt

MATLAB 1.26% M 0.01% Python 3.71% C++ 17.82% Shell 0.15% Batchfile 0.01% GDScript 0.24% GAP 0.02% CMake 0.47% C 64.10% Makefile 0.50% Common Lisp 8.53% JavaScript 3.21%
control uav autopilot vision autonomous aerospace-engineering systems structures tecnico-lisboa

uav-art's Introduction

UAV-ART (UAV Alameda Research Team)

Innovating the ART of flying

We are a university research team working on an autonomous, unmanned aircraft! We are a part of AeroTec (the Aerospace Engineering student's group of Instituto Superior Técnico in Lisbon). You can find more about us here: https://aerotec.pt/. We are divided into 4 different teams, Structures, Systems, Control and Vision.

In this repository you can find the code that runs our aircraft, divided into three main sections, simualation_m (dedicated to the Matlab simulation of the UAV), simulation_py (dedicated to the Python simulation of the UAV), and vision (dedicated to the work of the vision team, which will later be integrated into the control of the aircraft). There are also two other sections, UAV-P2 and ground_station, dedicated to the code that runs onboard the aircraft and the code to visualize sensor data, respectively. Inside each folder you'll find the README for those files. So far we have only tested our controller in a simulation environment, however, we expect to soon be able to test it on the aeromodel built by our structures team! You can see the progresses we've made in the past year in this short "A Year in review".

Most of our work is based on Small Unmanned Aircraft by R. Beard and T. McLain, whose repository can be consulted here: https://magiccvs.byu.edu/gitlab/uavbook/mavsim_template_files. You should also check out DroneKit Python (https://github.com/dronekit/dronekit-python) and OpenCV (https://opencv.org/).

System Architecture

Our flight controller was designed taking into account the linearised aircraft dynamics, and it is organised into two main blocks: the path-follower which given a desired path in three-dimensional space provides altitude, course, and airspeed references to another block, the autopilot, which ultimately inputs commands to the control surfaces and motor so as to follow the defined path. The design of the path-following controller is yet to be complete. At this stage, two guidance laws were developed for tracking straight-line segments and constant-altitude circular orbits. These two basic blocks shall be later employed to synthesise more complex paths which pass through a set of pre-established waypoints. It is worth pointing out that our controller was designed based on the assumptions that it is run on a fixed wing aircraft, with no flaps, and with a "T" shaped tail, engine at the front of the aircraft and a wingspan of 3.1 meters. Hence, as it can be deduced by the wingspan, our aircraft is not build for fast manouvers, but for smooth flight.

On board our aircraft we have (for the time being) a Raspberry Pi 4 Model B+, a Pixhawk (with a GPS antenna and running the PX4 firmware) and all other eletronic equipment required to power the motor and servos. All sensor data is gathered in the Pixhawk, which then routes this data through the TELEM2 port using Mavlink to the Raspberry Pi. This data is then processed in the Raspberry Pi, where our flight controller is running, and the servo inputs are calculated here. These are then converted to PWM signals, transmitted through the GPIO to the fail-safe board, and from there these signals go to each individual servo, in order to actuate the control surfaces.

Structures

The Structures team is currently in the process of designing the main aircraft, UAV-P2, so we are not able to present it yet. You can find the 3D CAD of our model test aircraft, used to test the flight controller here.

Acknowledgements

We express our uttermost sincere gratitude to those who made this project thrive. We would like to thank, in particular, Leonardo Pedroso for his invaluable contribution to the design of the autopilot, and João Canas for all his words of encouragement, advice, and support.

Logos

uav-art's People

Stargazers

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

Watchers

 avatar  avatar

uav-art's Issues

Straight line ramp path following altitude error

When following a straight line ramp, the aircraft altitude doesn't match the desired altitude. This error increases with the distance from the path origin. When climbing the aircraft is higher than it should be and when descending, the aircraft is lower than it should be. The issue can be replicated in both the Matlab and Python simulations.

Testing has shown that the altitude command is being followed correctly.
Screenshot (102)
Screenshot (103)

Attitude angles greater than π

In the Python simulation, when the aircraft completes a full turn around an axis, the angle does not reset to 0 nor -π, but rather continues increasing. This affects control when manual control is used and then the autopilot is turned back on, as the commanded values are between -180º and 180º. Also affects compass rendering in the ground station, which has been fixed.

[Performance] Terrain load stutter

Terrain loading has slight periodic stutter (2-3s) despite running on separate thread, this gets worse with higher number of chunks loaded (might be an unfixable limitation of loading geometry)

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.