GithubHelp home page GithubHelp logo

pyuavsim's Introduction

Hello! I am currently a PhD student @ImperialCollege. My research lies at the intersection of machine learning, physics, and differential geometry. The goal of this research is to leverage reduced-order models for high-dimensional, complex physical phenomena - utilising tools from differential geometry and physics to operate directly on low-dimensional manifolds.

Previously, I worked as a machine learning research intern @NasaJPL, @ESA, @MindFoundry, @Dyson, and @BAESystems.

pyuavsim's People

Contributors

danielkelshaw avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

Forkers

gmdeoliveira

pyuavsim's Issues

Add overarching Aircraft class

There are so many different components being controlled in different parts of the code - it would be a nice idea to have an Aircraft class to act as a wrapper for these various components. This would be done in conjunction with #43

Include UAV Case Study Data

In order to work on development of the flight simulator - it is important to leverage existing data such that simulated responses are reasonable.

Required versions of Python and dependencies

So, I install the stuff inside a 3.10 pipenv environment:

$ pipenv run python -V       
Python 3.10.9
$ pipenv graph
PyOpenGL==3.1.6
PyQt6==6.4.0
  - PyQt6-Qt6 [required: >=6.4.0, installed: 6.4.2]
  - PyQt6-sip [required: >=13.4,<14, installed: 13.4.0]
pyqtgraph==0.13.1
  - numpy [required: >=1.20.0, installed: 1.24.1]
PyYAML==6.0
scipy==1.10.0
  - numpy [required: >=1.19.5,<1.27.0, installed: 1.24.1]

Trying to run sim_example.py fails like this:

$ pipenv run python sim_example.py  
/Users/isgulkov/Code/stuff/PyUAVSIM/uavsim/uav_dynamics.py:374: RuntimeWarning: invalid value encountered in sqrt
  omega = (-b + np.sqrt(b ** 2 - 4 * a * c)) / (2 * a)
Traceback (most recent call last):
  File "/Users/isgulkov/Code/stuff/PyUAVSIM/sim_example.py", line 27, in <module>
    uav_viewer = uavsim.UAVViewer()
  File "/Users/isgulkov/Code/stuff/PyUAVSIM/uavsim/plotting/uav_viewer.py", line 11, in __init__
    self.app = pg.QtGui.QApplication([])
AttributeError: module 'pyqtgraph.Qt.QtGui' has no attribute 'QApplication'. Did you mean: 'QGuiApplication'?

Clearly, I have a wrong version of something โ€” either pyqtgraph or PyQt.

Could you please specify the versions this applications runs on?

Ability to write to file

It would be useful if the state of the aircraft could be written to a file at each time step - this would allow plots to be generated with ease in order to visualise the aircraft's response outside of the simulation environment.

Provide impulse for catapult simulation

At the moment the catapult simulation just applies a force for an arbitrary number of time steps - this should be linked with the acceleration required for the UAV.

Implement Control Surfaces

At the moment the user defines a forces_moments vector and this is used to update the state of the aircraft - this functionality will not change but it would be beneficial to define the forces and moments through the use of control surfaces.

Read UAV Parameters from File

At the moment the UAV variables are stored in a python file - it would be useful to write a class that can load in variables from a file and act as an interface.

Implement Kalman Filters

The implementation of Kalman filters will allow the sensor data to be used to provide an 'estimated state' of the aircraft - this can be used to provide a more realistic update for the autopilot system.

Implement Path Following

There is currently an autopilot in place which allows for PID control - this can be used to good effect when combined with a path following algorithm.

Incorporate Wind Simulation

At the moment the forces/moments are purely user selected - it would be useful to include a class which can simulate the effects of the wind such that the response of the UAV to small perturbations can be simulated.

Update README

The README.md should reflect the requirements of the project.

It would also be nice to see an example of the code output.

Integrate WindSimulation with UAVDynamics

At the moment WindSimulation and UAVDynamics are not linked in anyway. The functionality of UAVDynamics needs to be extended to enable the state to be updated according to a given wind vector.

Implement PID Control / Autopilot

At the moment the state of the aircraft can be controlled through 'moving' the control surfaces. Implementing PID control would allow the aircraft to respond to a signal input and achieve the state presented by an 'autopilot'

Provide Visualisation of UAV / Response

At the moment the only output available is through text - it would be beneficial to be able to visualise the outputs through response graphs or even an OpenGL window animating the UAV.

Develop UAVDynamics Class

Development of the UAVDynamics Class will allow for the state of the UAV to be calculated within the simulation. This will make use of aerodynamic derivatives and numerical integration for updating the state appropriately.

Add logging

Adding a reporter class / logging will provide the user with a nice way to debug any issues or just to store the output of the simulation at each timestep nicely.

Refactor base code

The code in its current state is a little messy and could tie together much nicer - this is especially true for the control / state estimation areas of the code.

Improve Code Documentation

At the moment the code is very barebones in terms of documentation - it could be quite challenging for a third party to understand what is going on. It would be beneficial to improve the level of documentation throughout the code.

Implement Dubins Paths

A common means of path planning for UAV systems is the use of Dubins paths - this will allow the UAV to travel between two points very efficiently.

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.