Repository: https://github.com/abasahmedd/suav_sim
suav_sim is a modular Python-based simulation framework for Small Unmanned Aerial Vehicles (SUAVs). It includes:
- 6‑DOF flight dynamics models
- Numerical integration (RK4, LTI systems)
- Sensors and environment models
- EKF based state estimation
- Autopilot guidance and navigation (fillet paths, waypoint missions)
- Interactive GUI visualizations for attitude, position, and mission dashboards
The project originated from a thesis on fixed‑wing UAV simulation and has been refactored into clean, reusable modules suitable for academic research and rapid prototyping.

├─ sim_math/ # Core mathematics, integration, transformations
│ ├─ angles.py
│ ├─ kinematics.py
│ └─ ...
├─ user/ # User‑provided waypoint and mission files
├─ DataDisplay/ # GUI panels and visualisation utilities
├─ chapter*/* # Example scripts used in thesis chapters
├─ README.md # **This file**
└─ requirements.txt # Python dependencies
# Clone the repository (already done)
git clone https://github.com/abasahmedd/suav_sim.git
cd suav_sim
# Create a virtual environment (recommended)
python -m venv .venv
.\.venv\Scripts\activate # Windows PowerShell
# Install dependencies
pip install -r requirements.txtNote: The repository uses standard scientific packages (
numpy,scipy,matplotlib,pyqt5for the GUI). Ensure you have a compatible Python 3.11+ interpreter.
Run an example simulation from Chapter 4:
python chapter4/example.pyThe script launches the GUI, loads a sample waypoint mission, runs the EKF estimator, and displays live telemetry.
- Run custom missions: Edit or create
.wpfiles in theuser/directory and point the simulation to them via the--missionargument. - Switch between ground‑truth and estimated states: Modify
DataDisplay/attitude_view.pyto toggle the data source. - Export plots: Use the built‑in
export_figures()function to save high‑resolution PNGs for publication.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/my‑feature). - Ensure code passes existing tests (
pytest). - Submit a Pull Request with a clear description of changes.
This project is licensed under the MIT License – see the LICENSE file for details.