Kann ich Matlab auf einem Mikrocontroller ausführen? und wenn ja welche?

Ich arbeite an einem komplizierten Robotikprojekt, das einen MATLAB-Bildverarbeitungsalgorithmus und eine LEGO MINDSTORMS-Schnittstelle sowie ein Arduino umfasst. Das System arbeitet abhängig in einer Sequenz entsprechend jedem Messwert entweder vom Arduino oder um den LEGO-Steinen einen Befehl zu geben.

Die Frage hier ist, kann ich die Verarbeitung vom PC auf einen anderen externen Mikrocontroller wie beispielsweise Raspberry Pi ersetzen, ohne den Matlab-Code zu konvertieren, da MATLAB selbst auf dem Mikrocontroller installiert wird, um den Code zu kompilieren? Wenn ja, welcher Mikrocontroller wäre dafür geeignet und wenn nein, was ist die beste Lösung, um das System ohne die Notwendigkeit eines PCs zu steuern.

Ich spreche aus einiger Erfahrung in dieser Hinsicht und denke, Sie werden viel mehr Mühe finden, als es wert ist.
Vielleicht ist ein PC gar keine so schlechte Idee: intel.com.au/content/www/au/en/compute-stick/…

Antworten (3)

Ja, es gibt ein paar Prozessoren, die leistungsfähig genug sind, um (einige) in der MATLAB-Sprache geschriebene Programme direkt auszuführen und einen PC zu ersetzen.

Bisher kenne ich nur 4 Möglichkeiten, das zu tun:

Wenn Sie ein Motherboard haben, das leistungsfähig genug ist, um Linux auszuführen , wie z. B. BeagleBone oder das Raspberry Pi oder das Cubieboard, könnten Sie:

  • Installieren Sie das Open-Source- Octave- Tool, das viele MATLAB-Programme direkt verstehen und ausführen kann. "Matlab Computer Vision auf Raspberry Pi mit Linux Octave ausführen. Teil 1." (A)
  • Installieren Sie das Open-Source- Tool Scilab , das einige MATLAB-Programme direkt verstehen und ausführen kann.
  • Installieren Sie das Open-Source- Tool FreeMat , das einige MATLAB-Programme direkt verstehen und ausführen kann.

Oft machen sich diese Ansätze entweder überhaupt nicht die Mühe, Grafiken auf dem eingebetteten System zu erstellen, oder verwenden die Open-Source- Matplotlib-Bibliothek , die so konzipiert ist, dass sie innerhalb von MATLAB einfach zu verwenden ist und auf jedem Computer ausgeführt werden kann, auf dem Python ausgeführt werden kann -- sogar Maschinen, die MATLAB nicht ausführen können.

Während der Raspberry Pi (einige) Programme ausführen kann, die in der MATLAB-Sprache mit den oben genannten Ansätzen geschrieben wurden, ist der Raspberry Pi leider nicht PC-kompatibel genug, um MATLAB auszuführen. "MATLAB für Linux auf dem Pi? Nein." (B)

Wenn Sie einen "PC-kompatiblen" (x86-Prozessor) Mini-PC haben, wie viele PC104- und (alle?) PCI-104- Embedded-Systeme oder den NUC oder die große Anzahl von microATX- und kleineren Motherboards, können Sie jeden verwenden der oben genannten Optionen, oder Sie könnten auch:

  • Installieren Sie MATLAB für Windows oder MATLAB für Linux. „MATLAB für Linux-Systemanforderungen“ (c) (d) „Matlab unter Linux installieren“ (e)

Alternativen, die diese Kriterien nicht ganz erfüllen

Sie wissen wahrscheinlich bereits, dass das „Ausführen von MATLAB-Code direkt auf einem eigenständigen Mikrocontroller“ nicht so beliebt ist; andere Ansätze umfassen

  • Verwendung von MATLAB zur Entwicklung von Simulink-Modellen, die als eigenständige Anwendungen ausgeführt werden. "Raspberry Pi-Unterstützung von Simulink" (f) ; "Laufen Sie Simulink-Modelle auf ... Arduino ... BeagleBoard ... Gumstix ... Raspberry Pi ... LEGO Mindstorms ..." ( g) "Raspberry Pi Programming using Simulink" (h) (i) "MATLAB / Simulink auf BeagleBone Black“ (j) „Rapid BeagleBoard Prototyping with Matlab and Simulink“ (k)
  • Ausführen von MATLAB-Code auf einem PC, der mit einem Mikrocontroller hin und her kommuniziert, um Dinge zu tun, die keiner alleine tun könnte. "das MATLAB Support Package für Raspberry Pi Hardware" (l) ; "ThingSpeak-Unterstützung von MATLAB ... mit Arduino" (m)
  • Verwenden Sie MATLAB, um eine Reihe von High-Level-Algorithmen auszuprobieren, und verwenden Sie diese Implementierung, um abzuschätzen, wie viel RAM und Rechenleistung benötigt werden, und implementieren Sie diese Algorithmen später von Grund auf neu, um sie eigenständig auf praktisch jedem Mikrocontroller mit mindestens so viel auszuführen RAM und Rechenleistung. (Typischerweise in Forth oder C oder C++, da praktisch jeder Mikrocontroller einen Compiler für diese Sprachen und kaum andere Sprachen hat).

Sie können C-Code mit MATLAB CODER aus MATLAB exportieren und diesen mit einem geeigneten Compiler (oder Cross-Compiler) kompilieren. Jede geeignete Plattform verfügt wahrscheinlich über einen C-Compiler.

Ob die Ressourcen (wie RAM) auf einem Mikrocontroller verfügbar sind, um den Code überhaupt auszuführen, und wenn überhaupt, ausreichend schnell, sind andere Fragen.

Es ist auch möglich, den Code der Hardwarebeschreibungssprache aus MATLAB zu exportieren, wenn Sie eine hohe Geschwindigkeit benötigen, die zum Programmieren eines FPGA verwendet werden kann.

Die Add-Ons sind nicht billig, wenn Sie sich in einem kommerziellen Umfeld befinden (ich denke, die akademischen Bedingungen sind erheblich großzügiger).

Das Problem hier, dass ich im Zweifel bin, dass einige Funktionen von MATLAB CODER nicht in C konvertiert werden können und von ihm nicht unterstützt werden. Kann ein Mikrocontroller als PC fungieren, um MATLAB zu betreiben und den Code zu kompilieren oder entweder ein Betriebssystem zu installieren, das MATLAB unterstützt? und wenn es eine Möglichkeit gibt, wie es gemacht werden könnte und durch welchen Mikrocontroller? (dies war speziell die Frage)
Nein, Sie können MATLAB selbst nicht auf einem Mikrocontroller ausführen, es sei denn, der Mikrocontroller ist im Wesentlichen ein PC, auf dem ein von MATLAB unterstütztes Betriebssystem ausgeführt wird.
Neben dem „einfachen“ Matlab Coder gibt es auch die Embedded Coder-Erweiterung, die speziell für eingebettete MCUs/MPUs einschließlich AVRs gedacht ist.
@venny Er möchte nativen Code ausführen und MATLAB nicht als entwicklungsübergreifendes System verwenden.
@Spehro Pefhany Das geht natürlich nicht, wie du oben gesagt hast.

Einmal habe ich ein ziemlich großes Matlab-Projekt mit einem automatischen Tool (Tmc-Compiler) in C konvertiert und es auf Android mit Arm-Prozessor ausgeführt. Das Problem der Matlab-Sprache ist, dass alle Variablen dynamisch zugewiesen werden sollten und die Schriftgröße undefiniert ist. Somit hängt die Effektivität der Übersetzung von der malloc/free-Implementierung ab. Tatsächlich ist die dynamische Speicherzuweisung gefährlich und für Sicherheitsanwendungen nicht akzeptabel.