Peng – A minimal Rust-based quadrotor simulation pipeline
github.com
github.com
In response, I set out to create a minimal example of quadrotor control and planning in Rust. I was inspired by [llm.c](https://github.com/karpathy/llm.c), which teaches complex topics with minimal code. My goal was to provide a similar experience, introducing the magic behind quadrotor autonomy with as little code as possible.
With the initial framework I developed, I am thrilled to see that my mentee is now able to work independently, experimenting with his own ideas in Rust!
I believe this codebase will be valuable for anyone who wants to:
a. Learn the principles behind quadrotor autonomy. Code robotics in Rust.
b. Explore the challenges of using Rust before incorporating it into their projects.
Throughout the development of this project, I have strived to work entirely within the Rust ecosystem. I am now convinced that Rust is ready for serious robotics development. Here are some tools I've been using:
1. [zed.dev](https://yangrobotics.com) for code editing.
2. [Rerun](rerun.io) for visualization.
3. [tokei](https://github.com/XAMPPRocky/tokei) for code line statistics.
4. [nalgebra](https://nalgebra.org) for matrix operations.
There are still a few things I'm searching for, such as a robust optimization library. Currently, I'm experimenting with [OpEn](https://alphaville.github.io/optimization-engine) for nonlinear model predictive control, but I hope to find something akin to [acados](https://github.com/acados) in Rust. Additionally, while nalgebra is solid, I believe it still doesn't outperform [Eigen](https://eigen.tuxfamily.org) in terms of performance, though Rust's language features might limit the possibility of implementing something like Eigen.
I'm open to suggestions and feedback! For instance, I’m still debating whether to modularize the pipeline and add async features, or whether to keep things simpler to avoid overwhelming beginner learners.
Current code statistics:
Rust: 1263
Markdown: 305
Comments: 19
Blanks: 44
PS: When naming the project "Peng," I had no idea that "peng" also means attractive! Well, I hope you find the project attractive too.
It is hard to demonstrate MPC in a simplistic way, but I want to take the challenge!
I’ll check what I can dig up for Rust examples.
Quite obvious, if you scroll to the "Getting Started" section.
> Peng (traditional Chinese: 鵬; simplified Chinese: 鹏; pinyin: péng; Wade–Giles: p'eng) or Dapeng (大鵬) is a giant bird that transforms from a Kun (鯤; 鲲; kūn; k'un) giant fish in Chinese mythology.
Just a funny coincidence, in British slang, a bird is a woman, and being peng means being attractive..