AchtergrondTech

Experimentele Nederlandse flightcontroller-firmware biedt potentie voor veiliger dronevluchten

Softwareontwikkelaar Bart Slinger heeft een vernieuwende proof-of-concept flightcontroller-firmware ontwikkeld, geschreven in de programmeertaal Rust. Deze firmware biedt een frisse benadering van embedded software, waarbij de nadruk ligt op veiligheid, prestaties en configureerbaarheid. Terwijl de meeste flightcontrollers nog worden aangedreven door traditionele talen als C en C++, zet Slinger in op de voordelen van Rust, wat de weg vrijmaakt voor robuuste, efficiënte systemen die mogelijk de drone-industrie kunnen veranderen.

Rust: veiligheid en prestaties

Rust heeft de afgelopen jaren aan populariteit gewonnen vanwege zijn nadruk op veiligheid en prestaties. Hoewel de taal zelden wordt gebruikt voor embedded systemen zoals flightcontrollers, denkt Slinger, die een achtergrond heeft in luchtvaarttechniek en mede-oprichter is van drone-innovatiestartup Mapture.ai, dat Rust zeer geschikt kan zijn voor dergelijke toepassingen.

Volgens Slinger zijn bekende flightcontroller-firmwares zoals PX4, ArduPilot en INAV geschreven in C of C++. “Mijn ervaring met die talen is dat het heel makkelijk is om fouten te maken. Dat betekent niet dat er nu fouten in zitten, maar je moet wel erg voorzichtig zijn als je aanpassingen wilt doen. Rust biedt een aantal garanties in de compiler die hele categorieën aan fouten uitsluiten. Organisaties zoals Microsoft en Amazon gebruiken Rust steeds meer om die reden. En ook Fusion Engineering werkt aan een flightcontroller gebaseerd op Rust.”

Verse start maken

Met een aantal jaar Rust-ervaring op zak – zo draait de backend van SkySync.io bijvoorbeeld in Rust – werd de tijd volgens Slinger rijp voor een custom flightcontroller-firmware. “PX4, ArduPilot en INAV zijn inmiddels al vrij oud en een opeenstapeling van legacy code. Dit maakt het steeds minder overzichtelijk en lastiger om grote wijzigingen door te voeren. Door me te verdiepen in al deze code bases heb ik een goed beeld van de factoren die in elke firmware terugkomen. Daarmee heb ik ook een goed beeld hoe dit het best aangevlogen kan worden. Ik zie dit als een kans om een verse start te maken, en met mijn ervaring heb ik de kennis om de (naar mijn mening) beste afwegingen te maken. De keuze voor Rust is daar één van.”

Rust heeft nog een voordeel, namelijk dat de taal zich beter leent voor ‘lean&mean’ flightcontrollers. “PX4 en ArduPilot zijn vrij grote firmwares die daardoor niet geschikt zijn voor de kleinere goedkopere flight controllers. Ik wil het volledig configureerbaar maken, zodat het helemaal wordt afgestemd op de sensoren die je hebt aangesloten en de functies die je wilt gebruiken. Daardoor kun je veel meer doen met kleinere goedkopere hardware”, aldus Slinger.

Minimale functionaliteiten

Slinger begon het project met een minimale set functionaliteiten: het uitlezen van IMU-data, het berekenen van de houding van de drone, het verwerken van radiocommandosignalen, en het genereren van stabiele uitvoer naar motoren en servo’s. Hiermee is een stabiele vluchtmodus mogelijk gemaakt, specifiek voor fixed-wing drones.

Een belangrijk element in het project was de keuze voor het Real-Time Interrupt-driven Concurrency (RTIC)-framework, dat interrupt-gebaseerde multitasking mogelijk maakt zonder de complexiteit van traditionele Real-Time Operating Systems (RTOS). Hiermee werd de efficiëntie verhoogd en de overhead verminderd.

Hardware en configuratie

De firmware werd getest op een SpeedyBee F405 Wing Mini-controller. Om debugging mogelijk te maken, moest Slinger enkele hardwareaanpassingen uitvoeren, waaronder het verwijderen van twee indicator-LED’s om toegang te krijgen tot de Serial Wire Debug (SWD)-pinnen. Dankzij de uitstekende tools binnen de Rust-ecosystemen, zoals de defmt-crate en de STM32F4xx Hardware Abstraction Layer, verliep het programmeren, flashen en debuggen soepel.

De IMU (Inertial Measurement Unit) op de flightcontroller, een ICM-42688p, werd geconfigureerd voor hoge snelheid met een bemonsteringsfrequentie van 1000 Hz. Door gebruik te maken van DMA (Direct Memory Access) kon de CPU belasting verder worden verminderd, wat essentieel is voor de verwerking van complexe vluchtdata in real-time.

Innovatieve functies van Rust

Een van de opvallende kenmerken van deze firmware is het gebruik van async-functies, wat bijdraagt aan beter leesbare en onderhoudbare code. Dit werd onder meer toegepast in de parser voor Crossfire (CRSF)-radiocommunicatie, een protocol dat veel wordt gebruikt in de drone-industrie. Daarnaast biedt Rust’s type-systeem extra garanties tijdens het configureren van hardware, zoals het koppelen van GPIO-pinnen aan SPI-perifere apparaten.

Slinger experimenteerde ook met bestaande algoritmen, zoals een PIFF-controller voor stabilisatie en attitude-estimatie. Hoewel de huidige implementatie enkele beperkingen heeft, zoals een beperkte updatefrequentie van de attitude-estimator, biedt het project veelbelovende mogelijkheden voor verdere verbetering.

Verdere ontwikkeling

Hoewel de huidige versie van de firmware slechts een proof-of-concept is, ziet Slinger potentieel voor verdere ontwikkeling. De combinatie van Rust’s veiligheid, moderne functies en de eenvoud van het RTIC-framework maakt het mogelijk om robuuste en efficiënte flightcontrollers te ontwikkelen. Dit project kan de weg vrijmaken voor een breder gebruik van Rust in de drone-industrie, vooral voor toepassingen waar betrouwbaarheid en prestaties cruciaal zijn.

Weliswaar is de experimentele flightcontroller nu alleen geschikt voor fixed-wing drones, maar dat laat zich makkelijk uitbreiden, denkt Slinger. “Met een paar aanpassingen zou dit net zo goed kunnen werken voor een multirotor of zelfs een grondvoertuig of boot. Hoewel het begonnen is als een hobbyproject zie ik ook al mogelijkheden om het beroepsmatig in te zetten. Zo is dit nu al een uitstekend platform om nieuwe droneconcepten en control-algoritmes op te kunnen ontwikkelen.”

Eén van de ideeën waar Slinger mee rondloopt betreft toepassingsafhankelijke flightmodes. “Denk bijvoorbeeld aan precisie-landing of swarming. Ook control-algoritmes (zoals PID) wil ik makkelijk uitwisselbaar maken. Daarmee wordt het hopelijk ook interessant voor onderzoekers om ontwikkelingen mee te drijven.”

Broncode vrij beschikbaar

Het broncode van het project is beschikbaar op GitHub en dient als inspiratie voor andere ontwikkelaars die geïnteresseerd zijn in het verkennen van nieuwe wegen in embedded softwareontwikkeling.

Uiteindelijk hoopt Slinger dat zijn project kan uitgroeien tot een volwaardige flightcontroller. “Mijn droom is om een open-source (GPLv3) alternatief neer te zetten in het rijtje PX4, ArduPilot, INAV, BetaFlight, etc. In zoiets gaat natuurlijk ontzettend veel tijd zitten, maar het zou een stuk sneller kunnen gaan als we hier ook commerciële projecten mee kunnen doen.”

Tot slot: naam gezocht

Tot slot heeft Slinger nog een oproep: “Ik heb nog geen naam voor de firmware. Heeft het Dronewatch-publiek misschien suggesties?”

Avatar foto

Wiebe de Jager

Wiebe de Jager (@wdejager) is oprichter van Dronewatch en auteur van de boeken Dronefotografie en Dronevideo's maken. Wiebe is A1/A2/A3 gecertificeerd dronepiloot en beschikt over een exploitatievergunning voor de Specific categorie.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Meld je aan voor onze nieuwsbrief!

Vul hieronder je gegevens in en blijf op de hoogte.

Open nieuwsbrief aanmeldformulier