Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

UAV Autonomy Research Platform

A highly modular, plugin-based 6-DOF flight simulation platform designed for researching autonomous UAV algorithms. This simulator is specifically architected to decouple the physics simulation from the autonomy stack, allowing independent teams (Perception, Guidance, Control) to seamlessly integrate and test their algorithms.

Features

  • Plugin Architecture: Write and register custom Target Selectors, Trajectory Planners, and Controllers without modifying the core simulation loop.
  • Immutable World State: All autonomy modules read from a single, unified WorldState snapshot, guaranteeing reproducibility and eliminating side-effects between algorithms.
  • Dynamic Configuration: Swap entire engagement strategies and control algorithms on-the-fly via a configuration dictionary.
  • 6-DOF Physics: Core integration uses a standard 6-DOF rigid-body dynamics model for realistic flight evaluation.
  • Built-in Visualization: Uses PyQtGraph to render realtime flight paths, targets, and camera frustum field-of-views.

Directory Structure

Simulation/
├── core/             # Base Simulation Engine, Module Registry, WorldState object
├── environment/      # Aircraft spawner, general environment management
├── aircraft/         # Aircraft params, 6-DOF physics engine wrapper
├── autonomy/         # The Autonomy Stack Plugins
│   ├── mission/      # Mission Planners and State Managers
│   ├── targeting/    # Target Selection Algorithms
│   ├── planning/     # Path/Trajectory Planners
│   └── control/      # Low-level Controllers (MPC, PID, etc.)
├── perception/       # Vision trackers and sensor models
├── visualization/    # PyQt renderers and visual components
└── experiments/      # Centralized simulation runners (entry points)

Getting Started

1. Requirements

Ensure you have the required dependencies installed (e.g., numpy, scipy, pyqtgraph, PyQt5). You can use the provided virtual environment or install them manually.

2. Running a Scenario

To launch the default intercept simulation, run the experiment runner script:

python experiments/experiment_runner.py

3. Configuring the Stack

The active algorithms are selected in experiments/experiment_runner.py via the configuration dictionary.

config = {
    "state_manager": {"name": "engagement_state_manager", "args": {"cam_fov_deg": 60.0, "cam_max_dist": 150.0}},
    "target_selector": {"name": "closest_target", "args": {}},
    "trajectory_planner": {"name": "intercept_planner", "args": {"N": 30, "dt": 0.1}},
    "controller": {"name": "mpc_controller", "args": {"N": 5, "dt": 0.1}}
}

Implementing Your Own Modules

Please refer to Simulator_Architecture_Guide.md for detailed instructions on creating and registering custom algorithm plugins for your team.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages