Project implements simple Python3 application simulating flight of two independent UAVs utilizing collision avoidance algorithm in order to prevent aircraft crashing into each other. GUI is represented using PySide61 library.
Note
Project considers two aircrafts only.
In order to run the App you need to have Python3 installed including pip and PyQt6. This instruction makes use of venv/virtualenv avoiding need of installing whole PyQt library. After cloning, run following commands in the project directory
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
python main.py
Note
Using venv in Windows requires accepting script running policy.
virtualenv -p python3 venv
source ./venv/bin/activate
pip install -r requirements.txt
python main.py
Important
This process may vary depending on the OS used.
The simulator defaults to showcase mode where there is no way to interact with the app other than closing it with Escape or Ctrl+C. Debug mode can be activated using tilde ~
- General
- / - pause the simulation
- R - reset the simulation
- 1 - toggle aircraft info
- 2 - toggle app info
- 3 - toggle course trajectory
- 4 - toggle yaw angle trajectory
- 5 - toggle safezone
- 6 - toggle distance covered (paths)
- 7 - toggle second aircraft targeting first to crash
- 8 - toggle hitboxes
- Aircraft steering
- First aircraft
- W - set 270° course
- S - set 90° course
- A - set 180° course
- D - set 0° course
- Y - decrease course by small iterator
- U - increase course by small iterator
- F2 - slow the aircraft down
- F3 - speed the aircraft up
- Second aircraft
- I - set 270° course
- K - set 90° course
- J - set 180° course
- L - set 0° course
- O - decrease course by small iterator
- P - increase course by small iterator
- F6 - slow the aircraft down
- F7 - speed the aircraft up
- First aircraft
- Run simulation and Gui separately
- Add smooth angle transition
- Add safezones and its handling
- Transition from PyQt6 to PySide6
- Add resolution based scaling
- Add python package
- Add flight control computer (FCC) to handle setting destination and vectors
- Implement collision avoidance algorithm