Skip to content

Releases: Keshav11-coder/Firmus-SDK

Firmus-SDK v1.3.5 Preview

01 Sep 02:46
Compare
Choose a tag to compare
Pre-release

✨ Highlights

  • 🤖 Experimental Model Predictive Control (MPC)
    Introduced basic MPC for attitude control with multi-step prediction horizon.

    Note: This feature is still in development and may change in future releases.

  • 🧩 Snapshot-Based Policies Upgrade
    IBodyCorrectionPolicy can now operate on full Snapshots, enabling more flexible and modular control strategies.

  • 🛠 Modular Control Stack Enhancements
    Existing cascade control layers (BodyPIDPolicy, BodyOrientationLayer, BodyRateLayer) now fully Snapshot-aware, compatible with experimental MPC.

  • File structure changes
    The file structure has changed a lot. Sticking to conventional naming patterns ('Assets' > 'tools') and moving hardware tools into its designated folder. mpu6050, ESC, etc... can all be found in /hardware starting from release 1.3.5.


📚 Notes for Reviewers

  • ⚠ Preview Release – Not yet stable, intended for reviewers and testing only.
  • All quantities remain in SI units: meters, m/s, radians, rad/s, Nm.
  • Reset policies must be applied before switching control modes.
  • Control loop frequency is tracked via Snapshot.timestamp and Snapshot.loop_freq.
  • The MPC control is a policy, not an entire control layer. It can be used as the correction policy in a Cascade control layer. This is done to support hybrids in the future. Look out for other releases which include hybrid tests.
  • The prediction horizon (N) is limited due to matrices being formed in stack, not in heap. Currently N < 5.
  • The source code of MPC might come over as hardcoded or underdeveloped, because it is. It's still undergoing massive changes, so stay tuned.
  • This release compiles and runs on the DOIT ESP32 Devkit v1, but is still unstable. A lot of bench tests need to be done for it to be declared "plant-ready."

This library is intended to control rigid bodies in open space, hence the torque-output system standard. This includes open-space vehicles such as drones, rockets or submarines. Whether this library will support a wider range of vehicle dynamics (such as ground vehicles—cars, bikes etc...) is unknown. If the request for the inclusion of those dynamics are at a high, I might consider implementing them.


🛠 Improvements Over v1.3.4

  • Added experimental MPC layer for multi-step optimization.
  • Snapshot-based IBodyCorrectionPolicy now supports full-state operations.
  • Enhanced compatibility between MPC and existing PID cascade layers.
  • Minor internal optimizations for Snapshot handling and torque computation.

⚡ Summary

v1.3.5 Preview introduces the first MPC-capable flow for Firmus-SDK while keeping the modular cascade stack fully compatible.

This release is intended for review and testing, providing early access to advanced control capabilities before a stable v1.3.5 release.

Report issues using the reporting structure provided in the "get started" document provided at ~/docs/get_started.md. Any feedback is greatly appreciated.

Firmus-SDK v1.3.4

01 Sep 02:24
Compare
Choose a tag to compare

✨ Highlights

  • Snapshot-Based State Flow
    Introduced the Snapshot structure for full dynamic state encapsulation, enabling more flexible and composable control strategies.

  • Modern Control Stack
    Added IBodyCorrectionPolicy, IBodyControlLayer, and IBodyController interfaces for clean, modular cascade control.

  • PID Cascade Implementation
    Default layers: BodyPIDPolicy, BodyOrientationLayer, and BodyRateLayer.

    • Independent 3-axis PID control
    • Angular wraparound for yaw
    • Outputs angular velocity and acceleration in Snapshots
  • Torque Computation via Rigid Model
    BodyController integrates with IRigidModel for deterministic, physics-based torque calculation.

  • Deprecated Legacy Interfaces
    Old interfaces (IAttitude, IVelocity, IPosition, IOrchestrator) are still supported but discouraged in favor of the cascade-based design.

  • Hardware-Agnostic Design
    Still runs on ESP32, with abstraction for future STM32 and native C++ support.


📚 Documentation

  • Full example sketches included for cascade control setup.
  • README.md and docs/ folder cover interface usage, tuning, and control pipeline configuration.

🛠 Improvements Over v1.3.3

  • Switched from simple Vector3-only PID to Snapshot-capable policies.
  • Cleaner modular interfaces for layered control.
  • Deterministic torque computation now integrated with BodyController.
  • Enhanced internal flow-of-data clarity using Snapshots for orientation, velocity, acceleration, and torque.

⚡ Summary

v1.3.4 sets the foundation for advanced control strategies, including MPC, LQR, and future Neural Network-based policies, while keeping the SDK modular, predictable, and physics-accurate.

This release is perfect for anyone looking to move beyond simple PID cascades into more flexible and extensible flight control architectures.

Firmus-SDK v1.3.3 – Initial Stable Release

29 Jun 18:43
a9e124a
Compare
Choose a tag to compare

✨ Highlights

  • Initial stable release of the Firmus-SDK
  • Modular PID control stack: velocity, attitude
  • RigidModel<4> with real-time torque + thrust allocation
  • Mixer logic with PWM mapping
  • Example sketch showing full usage loop
  • Static allocation, real-time safe loop (50–100Hz)
  • etc...

📚 Documentation

See the docs/ folder, example sketches and README.md for setup, tuning, and control configuration.