Quadcopter_SimCon  by bobzwik

Python-based quadcopter simulation and control

Created 6 years ago
254 stars

Top 99.0% on SourcePulse

GitHubView on GitHub
Project Summary

<2-3 sentences summarising what the project addresses and solves, the target audience, and the benefit.> This project offers a comprehensive framework for quadcopter simulation and control, utilizing PyDy for symbolic dynamics generation and advanced control implementation. It targets engineers and researchers needing a flexible platform for studying quadcopter dynamics, control systems, and trajectory generation, providing a computationally efficient approach with quaternion representation and detailed simulation models.

How It Works

The project leverages PyDy (Python Dynamics) and SymPy to derive quadcopter multibody dynamics equations via the Kane Method, supporting models with gyroscopic precession and wind/drag. Its simulation component, built with Numpy/Matplotlib, uses a Quadcopter class representing rotation with efficient quaternions and integrating motor dynamics as second-order systems. Control follows a cascade PID architecture inspired by PX4, translating errors into thrust/attitude setpoints and determining motor speeds via a mixer.

Quick Start & Requirements

Core dynamics library installation: pip install pydy or conda install -c conda-forge pydy. Simulation requires Numpy and Matplotlib. No specific hardware prerequisites are noted. Configuration between NED and ENU world frames is managed via config.py.

Highlighted Details

  • Supports both NED (North-East-Down) and ENU (East-North-Up) world frames.
  • Features advanced trajectory generation: minimum snap, velocity, acceleration, and jerk, with customizable segment durations.
  • Includes multiple wind models (constant, sinusoidal, random average) and a mixer for calculating precise
Health Check
Last Commit

2 years ago

Responsiveness

Inactive

Pull Requests (30d)
0
Issues (30d)
0
Star History
5 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.