MicroPython beschleunigen mit der Bibliothek ulab
Für rechenintensive Aufgaben nutzt man die Bibliothek ulab und die eingebundenen C-Funktionen, etwa bei der Objekterkennung mittels eines Wärmebildsensors.
- Thomas Euler
Trotz schneller Mikrocontroller-Boards stößt man bei komplizierteren Berechnungen in MicroPython schnell an Grenzen bei der Performance. Wie beim „echten“ Python wird ein Python-Skript vor dem eigentlichen Start zwar in einen optimierten Bytecode umgewandelt, die Programmausführung übernimmt aber ein Interpreter, was den Prozess verlangsamt. Zum Glück gibt es Möglichkeiten, Berechnungen in MicroPython gezielt zu beschleunigen. Als Beispiel dient die Erkennung von Objekten in Bildern einer einfachen Wärmebildkamera, direkt auf einem Mikrocontroller. Dies ermöglicht dem Robotling, dem MicroPython-betriebenen Laufroboter, einer Hand autonom zu folgen.
In diesem Artikel stellen wir zwei Optimierungswege vor. Die erste Möglichkeit besteht darin, die Bibliothek ulab in die MicroPython-Firmware einzubinden, die für effiziente numerische Berechnungen optimiert wurde. Die zweite Möglichkeit ergänzt die Firmware um neue Befehle, die als C-Funktionen implementiert werden, da diese schneller ausgeführt werden. Beide Wege erfordern derzeit, die Mikrocontroller-Firmware neu zu kompilieren, was aber dank der hervorragenden MicroPython-Dokumentation relativ einfach ist.
Eine aktuelle Firmware mit ulab inklusive habe ich daher auch zum Download vorbereitet. Außerdem kann man ulab unter CircuitPython verwenden, der besonders einsteigerfreundlichen MicroPython-Variante von Hardware-Hersteller Adafruit. Dort gehört es seit Version 6 zur Grundausstattung. Dann muss man allerdings einen anderen Mikrocontroller nutzen, da CircuitPython den klassischen ESP32 derzeit nicht unterstützt.
Das war die Leseprobe unseres heise-Plus-Artikels "MicroPython beschleunigen mit der Bibliothek ulab ". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.