Skip to content

guilyx/autonomous-uav-guide

Repository files navigation

Autonomous UAV Guide

CI Codacy Badge Python 3.12+ License: MIT Ruff pre-commit uv HitCount

From-scratch Python implementations of algorithms for autonomous UAVs: multirotor, VTOL, and fixed-wing. Every algorithm comes with a runnable simulation, academic references, and a GIF preview.

Architecture

uav_sim/
├── vehicles/        # Quadrotor (6DOF), Fixed-Wing, VTOL + vehicle presets
│   └── footprint.py # Circular/Rectangular footprints, swarm envelopes
├── control/         # Rate → Attitude → Velocity → Position (cascaded PID)
│   └── state_machine.py  # ARM → TAKEOFF → HOVER → TRACKING → LAND
├── sensors/         # GPS, IMU, Lidar2D/3D, Camera, Gimbal, RangeFinder
│   └── gimbal_controller.py  # PointTracker, BBoxTracker
├── estimation/      # EKF, UKF, Complementary, Particle Filter
├── perception/      # Occupancy mapping, obstacle detection, visual servoing
├── path_planning/   # A*, RRT*, PRM, Potential Field, Coverage Planning
├── path_tracking/   # PID, LQR, MPC, Pure Pursuit, Geometric SO(3)
├── trajectory_planning/  # Min-Snap, Polynomial, Quintic, Frenet Optimal
├── trajectory_tracking/  # Feedback Lin., MPPI, NMPC
├── costmap/         # Occupancy grid, Inflation, Social, Footprint layers
├── environment/     # World, obstacles, buildings, env presets (city/indoor/field)
├── swarm/           # Reynolds, Consensus, Virtual Structure, Leader-Follower
├── visualization/   # 3-panel viz, data panels, vehicle artists, sensor viz
└── simulations/     # 40 runnable demos (python -m uav_sim.simulations.*)

Quick Start

git clone https://github.com/guilyx/autonomous-uav-guide.git
cd autonomous-uav-guide
uv sync --all-groups

# Run any simulation as a module
python -m uav_sim.simulations.path_tracking.pid_hover

# Run tests
uv run pytest

# Pre-commit
pre-commit install && pre-commit install --hook-type commit-msg
pre-commit run --all-files

Vehicle Presets

from uav_sim.vehicles import VehiclePreset, create_quadrotor

quad = create_quadrotor(VehiclePreset.CRAZYFLIE)
quad = create_quadrotor(VehiclePreset.DJI_MINI)
quad = create_quadrotor(VehiclePreset.RACING_250)
quad = create_quadrotor(VehiclePreset.DJI_MATRICE)

Environment Presets

from uav_sim.environment import create_environment, EnvironmentPreset

world, obs = create_environment(EnvironmentPreset.CITY)     # 50m urban
world, obs = create_environment(EnvironmentPreset.INDOOR)   # 10m room
world, obs = create_environment(EnvironmentPreset.OPEN_FIELD)  # 60m clear

Vehicle Models

Model Preview
Quadrotor (6DOF + motor dynamics)
Fixed-Wing (aerodynamic)
Tilt-Rotor VTOL (hover to cruise)

Path Tracking

Algorithm Preview
Cascaded PID Hover
LQR Hover
Pure Pursuit 3D
Geometric SO(3)
LQR Path Tracking
MPC Tracking
Path Smoothing Demo
Flight Ops Demo

Trajectory Tracking

Algorithm Preview
Feedback Linearisation
MPPI
NMPC

Path Planning

Algorithm Preview
3D A*
RRT*
PRM 3D
Potential Field
Coverage Planning

Trajectory Planning

Algorithm Preview
Minimum-Snap
Polynomial Trajectory
Quintic Polynomial
Frenet Optimal

State Estimation

Algorithm Preview
EKF
UKF
Particle Filter
Complementary Filter
GPS/IMU Fusion

Perception

Feature Preview
EKF-SLAM
Occupancy Mapping
Sensor Suite Demo
Visual Servoing

Sensors

Feature Preview
Gimbal FOV Tracking
Gimbal BBox Tracking

Environment & Costmaps

Feature Preview
Dynamic Costmap Navigation

Swarm Algorithms

Algorithm Preview
Reynolds Flocking
Consensus Formation
Virtual Structure
Leader-Follower
Potential Swarm
Voronoi Coverage

Contributing contributions welcome

See CONTRIBUTING.md. All contributions must pass pre-commit run --all-files and uv run pytest.

License

MIT — see LICENSE.

About

Python sample codes and documents about Autonomous Quadrotors algorithms. This project can be used as a technical guide book to study the algorithms and the software architectures for beginners.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages