Releases: Keshav11-coder/Firmus-SDK
Firmus-SDK v1.3.5 Preview
✨ 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 release1.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
andSnapshot.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
✨ Highlights
-
Snapshot-Based State Flow
Introduced theSnapshot
structure for full dynamic state encapsulation, enabling more flexible and composable control strategies. -
Modern Control Stack
AddedIBodyCorrectionPolicy
,IBodyControlLayer
, andIBodyController
interfaces for clean, modular cascade control. -
PID Cascade Implementation
Default layers:BodyPIDPolicy
,BodyOrientationLayer
, andBodyRateLayer
.- Independent 3-axis PID control
- Angular wraparound for yaw
- Outputs angular velocity and acceleration in Snapshots
-
Torque Computation via Rigid Model
BodyController
integrates withIRigidModel
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
✨ 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.