#started #cybernetic #cybernetic-rust

cybernetic

A simple library for Control Engineering Tools. (Not yet started)

4 releases

new 0.1.3 Apr 7, 2025
0.1.2 Apr 7, 2025
0.1.1 Apr 7, 2025
0.1.0 Apr 7, 2025

#8 in #started

MIT license

195KB

CyberneticRust: Rewriting Control Engineering Tools in Rust

License Crates.io Rust Actions Status

Welcome to CyberneticRust!

This repository is an ambitious project aimed at rewriting widely used control engineering tools, currently prevalent in environments like MATLAB, using the Rust programming language.

Project Goals

The primary goals of CyberneticRust are to:

  • Performance: Leverage Rust's speed and efficiency to create high-performance control engineering tools.
  • Safety: Utilize Rust's memory safety features to build robust and reliable software.
  • Concurrency: Explore Rust's excellent concurrency support for parallelizing computationally intensive control algorithms.
  • Open Source Alternative: Provide the control engineering community with a powerful, open-source alternative to existing commercial software.
  • Learn and Grow: Serve as a platform for learning and applying Rust in the domain of cybernetics and control systems.

Current Status

This project is currently in its early stages of development. The initial focus is on laying the groundwork by implementing fundamental data structures and basic operations commonly used in control engineering.

Currently being worked on (or planned):

  • Implementation of core system representations:
    • Transfer Functions (tf)
    • State-Space Models (ss)
  • Basic arithmetic operations for these representations.
  • Exploration of Rust crates for:
    • Linear Algebra (nalgebra, ndarray)
    • Polynomial Manipulation (rustnomial, ark-poly)
    • Numerical Methods

Getting Involved

We welcome contributions from the control engineering and Rust communities! If you are interested in participating, you can:

  • Follow the progress: Star this repository to stay updated.
  • Report issues: If you find any bugs or have suggestions, please open an issue.
  • Contribute code: We are looking for developers with knowledge in control theory, numerical methods, and Rust programming. Check the "Issues" tab for potential tasks and feel free to submit pull requests.
  • Share ideas: Discuss potential features and approaches in the issues or discussions sections.

Prerequisites (for contributors)

If you'd like to contribute to CyberneticRust, a basic understanding of the following is recommended:

  • Rust Programming Language: Familiarity with Rust syntax, ownership, borrowing, and the crate ecosystem.
  • Control Theory Fundamentals: Basic concepts of dynamic systems, system representations (transfer functions, state-space), and control system analysis.
  • Linear Algebra: Understanding of vectors, matrices, and matrix operations.
  • Numerical Methods: Basic knowledge of algorithms used in numerical computation.

Roadmap (Tentative)

This is a rough outline of the planned development:

  1. Foundation: Implement core data structures (Transfer Functions, State-Space Models) and basic operations.
  2. Analysis Tools: Develop tools for system analysis (e.g., frequency response, time response).
  3. Controller Design: Implement basic controller types (e.g., PID controllers).
  4. Advanced Techniques: Explore more advanced control methods (e.g., LQR, MPC, Robust Control).
  5. Simulation Environment: Potentially develop a basic simulation framework.
  6. Toolbox Expansion: Gradually add more control engineering tools and functionalities.

License

This project is licensed under the MIT License.

Contact

For any questions or discussions, please open an issue in this repository.

Let's build the future of control engineering with Rust!

No runtime deps