Ressourcenschonende Programmierung
Die AIfES-Funktionen arbeiten ausschließlich mit Pointer-Arithmetik und deklarieren nur die nötigsten Variablen innerhalb einer Funktion. Das bedeutet, dass die Speicherbereiche für die Trainingsdaten und die Gewichte durch das Hauptprogramm bereitgestellt werden. AIfES-Funktionen greifen durch Übergabe eines Pointers auf diese Speicherbereiche, zu ohne selbst große Ressourcen zu beanspruchen.
Plattformunabhängig und kompatibel
Durch die kompatible Programmierung mit der GCC ist eine Portierung auf nahezu alle Plattformen möglich. Dies ermöglicht die völlig autarke Integration inklusive Lernalgorithmus auf einem eingebetteten System.
Für die Nutzung unter Windows kann beispielsweise der Quellcode als »Dynamic Link Library« (DLL) kompiliert werden, um sie so in Softwaretools wie z. B. LabVIEW oder MATLAB integrieren zu können. Besonders die direkte Anbindung an MATLAB ist hilfreich um z.B. verschiedene Datenvorverarbeitungen zu testen.
Auch die Integration in verschiedene Software-Entwicklungsumgebungen wie z. B. Visual Studio oder einer Python-IDE ist möglich. Das Hauptprogramm, welches die DLL einbindet, kann somit auch in einer anderen Programmiersprache sein wie z. B. C++, C#, Python, VB.NET, Java.
Für die erste Entwicklung des individuellen FNN eignet sich der PC als Plattform besonders gut, um schnelle Berechnungen durchzuführen. Wenn die richtige Konfiguration erfolgt ist, kann die Portierung auf das eingebettete System erfolgen.
Eine kleine Auswahl von Plattformen und Mikrocontrollern, auf denen wir AIfES schon getestet haben:
- Windows (DLL)
- Raspberry Pi with Raspbian
- Arduino UNO
- Arduino Nano 33 BLE Sense
- Arduino Portenta H7
- ATMega32U4
- STM32 F4 Series (ARM Cortex-M4)