14 releases (4 breaking)
new 0.5.3 | Nov 7, 2024 |
---|---|
0.5.2 | Oct 30, 2024 |
0.5.1 | Sep 8, 2024 |
0.4.2 | Sep 4, 2024 |
0.1.0 | Aug 27, 2024 |
#22 in Robotics
147 downloads per month
140KB
1.5K
SLoC
🔍 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.
🎯 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 (ensure version >= 0.19.0)
cargo install rerun-cli
cargo install peng_quad
peng_quad config/quad.yaml
Installation from Source
# Install rerun-cli (ensure version >= 0.19.0)
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:
- Verify rerun-cli version matches rerun version in Cargo.toml:
rerun --version
- 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:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) at your option.
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
- Peng #1: Minimal quadrotor pipeline in Rust
- Peng #2: Error Handling, Configuration System and Obstacle Avoidance Planner
- Peng #3: Optimization of Depth Rendering and RK4-based Dynamics Update
📚 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}},
}
Dependencies
~24–53MB
~896K SLoC