Software architecture
How our software works and interacts with existing architectures.
Embedded-ready design
Our software is written in lightweight, computationally efficient C and designed from the outset for deployment in railway environments. The computational core is fully self-contained, avoiding dependencies on external libraries. This keeps the footprint small, reduces complexity, and ensures predictable runtime behavior — a key requirement in onboard systems.
The result is a portable and robust optimization engine that can run across platforms, from resource-constrained hardware to modern multi-core onboard computers. The same code-base scales without modification, enabling a smooth transition from development to operational deployment.
Integration with onboard systems
While the computational core remains independent, the system is designed for seamless integration into existing software architectures. Communication with surrounding components of a driver advisory system is handled via standard messaging middle-ware, such as a simple MQTT broker.
This clear separation between optimization logic and communication layers ensures flexibility: interfaces can be adapted to project-specific requirements without affecting the core algorithms. The architecture supports straightforward embedding into onboard software stacks while maintaining robustness and maintainability.
Simulation and validation workflows
To support rapid development and rigorous validation, we provide Python interfaces to the optimization core. These interfaces allow the algorithms to be embedded into simulation environments, enabling fast prototyping, scenario testing, and performance evaluation without modifying the production C code.
This setup facilitates comprehensive validation workflows, including automated unit tests, integration tests, and large-scale simulation studies. Train dynamics, infrastructure data, and operational scenarios can be varied systematically to verify correctness, robustness, and numerical stability under realistic conditions.
By combining a high-performance embedded core with flexible Python-based tools, we ensure both production-grade reliability and development agility — from early-stage experimentation to validated deployment in onboard systems.