AdaPilot is a new open-source project to develop a safety-critical flight-controller system based on Ada-SPARK. It just started, so the website is a bit sparse, but it could be something worth following or getting involved with.
Safety-critical operation is an important reason behind the AdaPilot project. Ada-SPARK and contracts are part of the puzzle for important safety-critical applications already.
The initial code targets multicopters with up to eight rotors, but the platform is flexible so it can be adapted for fixed-wing or single-rotor platforms as well as for ground and sea applications. Three key architecture components are Ada-SPARK (of course), ARM Cortex-M and -R hardware, and CANaerospace. CANaerospace is a lightweight protocol/data format definition for airborne applications using Controller Area Network (CAN) hardware.
The AdaPilot Reference Hardware Development Kit (RHDK) is based on the NECSarm Computer on Module (Fig. 1) featuring an STmicrosystems STM32F4 ARM Cortex-M processor. The module also has an isolated CAN bus interface. The Robotic Application Board is a matching carrier board that exposes interfaces including USB, SD, PWM, USART, and CAN. The environment is designed to handle 10-DOF mAHRS (micro Altitude and Heading Reference System) platforms available from a variety of third parties.
The project is ambitious. There are other autopilot open-source projects already out there like OpenPilot and ArduPilot. Like most projects, AdaPilot is looking for supporters and contributors. That may be harder given Ada’s more limited community, but it is a good way to get started with Ada since this is a well-defined application area.
The development platform at this point is from AdaCore. They sell Ada tools commercially, but there are free, open-source versions at libre.adacore.com. The platforms address Ada across the board down to a configurable/customizable run-time library consisting of the “Small Footprint” (SFP) and Ravenscar profiles.
Ada and SPARK are used in the aviation and military industries for a reason.