Skip to content
/ Peng Public

A minimal quadrotor autonomy framework in Rust (Mac, Linux, Windows)

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

makeecat/Peng

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Peng

License Crates.io Downloads Docs CI dependency status Gitter

๐Ÿ” Overview

Peng is a minimal quadrotor autonomy framework written in Rust that provides real-time dynamics simulation, trajectory planning, and control with modern visualization capabilities.

rerun demo

๐ŸŽฏ Key Features

  • ๐Ÿš Real-time Simulation
    • High-fidelity quadrotor dynamics with configurable parameters
    • IMU and depth sensor simulation
    • Optional RK4 integration for accurate dynamics
  • ๐ŸŽฎ Advanced Control
    • PID control for position and attitude with tunable gains
    • Integral windup prevention
    • Support for different control frequencies
  • ๐Ÿ“ Rich Trajectory Planning
    • Minimum jerk line trajectory planner
    • Lissajous curve planner
    • Circular trajectory planner
    • Obstacle avoidance planner
    • Waypoint navigation planner
    • Landing planner
  • ๐Ÿ“Š Visualization & Debug
    • Real-time 3D visualization via rerun.io
    • Depth map rendering
    • State telemetry logging
    • Configurable logging frequencies
  • โšก Performance
    • Memory-safe and Efficient Rust implementation
    • Multi-threaded depth rendering

๐Ÿš€ Getting Started

Prerequisites

Installation from Crates.io

# Install rerun-cli
cargo install rerun-cli
cargo install peng_quad
peng_quad config/quad.yaml

Installation from Source

# Install rerun-cli
cargo install rerun-cli
git clone https://github.com/makeecat/Peng.git
cd Peng
cargo run --release config/quad.yaml

โš™๏ธ Configuration

  • You can configure the simulation through config file, see quad.yaml for example.
  • Configure simulation parameters such as mass, inertia, and control gains.
  • Configure control parameters such as PID gains.
  • Configure trajectory planner parameters such as waypoints, obstacles, and trajectory type.
  • Configure visualization parameters such as camera intrinsics and depth rendering.

๐Ÿ”ง Troubleshooting

If you encountered any issue with the rerun:

  1. Verify rerun-cli version matches rerun version in Cargo.toml:
rerun --version
  1. For Linux/WSL2 users, consult the rerun troubleshooting.

๐Ÿ—บ๏ธ Roadmap

  • Wind field and environmental effects
  • Motor dynamics simulation
  • Multi-quadrotor simulation
  • Model Predictive Control (MPC)

๐Ÿค Contributing

We welcome contributions of all kinds! Please check out the Contributing Guidelines for more details.

๐Ÿ“„ License

Peng is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:

This means you can select the license you prefer!

๐Ÿฆ Why call it Peng?

Peng (้ตฌ/้น, pรฉng), or Dapeng (ๅคง้ตฌ), represents a mythical Chinese bird that transforms from a giant Kun (้ฏค/้ฒฒ) fish. This name reflects our framework's adaptability and transformative capabilities.

๐Ÿ“ Blog Posts

๐Ÿ“š Citation

If you use this project in your research or work, please cite it as follows:

@software{peng_quad,
  author       = {Yang Zhou},
  title        = {Peng: A Minimal Quadrotor Autonomy Framework in Rust},
  year         = {2024},
  publisher    = {GitHub},
  journal      = {GitHub repository},
  howpublished = {\url{https://github.com/makeecat/peng}},
}