Control Technology

Our flight control is built from the ground up for the commercial drone market. We use the latest research in state estimation, flight control, and fault tolerance, to make the most robust system possible with the newest algorithms; facilitating the next generation of drone applications.

UKF Based State Estimation

Our State Estimator is based on the Unscented Kalman Filter (UKF), as it is a generally superior method compared to the conventional Extended Kalman Filter (EKF) for nonlinear state estimation. Furthermore, the implementation of our UKF-based state estimator is extremely flexible. Additional sensors and state variables can be added with ease, to allow for optimal state estimation using all information available.

INDI Based Flight Control

Our flight controller uses a technique based on Incremental Nonlinear Dynamic Inversion (INDI): A novel method designed at TU Delft that overcomes the robustness issues of NDI by reducing the dependency on an accurate system model while still allowing for a precise and fast response. Its combination of fast sensor update rates and a nonlinear control law allows for precise and aggressive manoeuvres. The use of acceleration measurements allows the control law to capture unmodeled dynamics, such as gust wind disturbances, and effectively cancel these without any modelling assumptions.

Software Engineering

Our software platform is based on a Linux system, on top of which our own software runs. In addition, a co-processor without an operating system is used to handle real-time tasks. All our software is written in Rust, which has reliability as its main focus, while not giving up performance.

Isolated Modular Software Architecture

Software on our platform is split up in separate modules which run as independent isolated processes, such that a bug in one cannot take down other tasks. Even if important modules would crash mid-air, the drone will keep on flying just fine, as modules can be immediately restarted without interrupting communication with others. This way, an unexpected failure in for example the GPS driver will not take down the whole system. This flexible set-up also allows you to easily add your own software modules to the system, without risks.

Open Source

Fusion Engineering proudly publishes open-source software projects to contribute back to the open-source community.

At this moment, we have published several open-source projects:

  • Inline Python — A Rust library that makes it possible to write Python code directly inside Rust code, to combine the best of both worlds. We use this in simulations, to be able to make use of great Python libraries such as matplotlib.
  • rust-git-version — A Rust library to embed Git version and status information into your programs.
  • intbits — A Rust library making it easier to work with individual bits in integers.
  • bcm283x-linux-gpio — A Rust library and command line tool for working with GPIO on a BCM283x CPU.
  • spicat — A command line tool for making full-duplex SPI transactions on Linux.

See Fusion-Engineering on GitHub for all our open-source projects.

Fault-tolerant Control

In order to increase the reliability and certifiability of drones even more, we are designing fault-tolerant control systems to equip multicopters with an additional layer of safety. Relying on fast detection of rotor failures, our fault-control system is able to steer a damaged multicopter to safety, even after complete loss of one of the rotors. Despite the loss in controllability of the drone, the combination of INDI with a novel in-house developed control technique allows the damaged drone to still land safely.

Projects we contribute to

In addition to publishing our own projects, we also contribute to existing open-source projects that we make use of ourselves:

  • Rust — The Rust compiler and standard library. We are actively involved in the development of Rust compiler and standard library and regularly contribute to the Rust project.
  • Nalgebra — A library for working with linear algebra in Rust.
  • stm32f4xx-hal — Hardware abstraction layer for the STM32 F4 family of microcontrollers.

See Fusion-Engineering-forks on GitHub for many more projects we’ve contributed to.