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.
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:
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:
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
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).
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.
Ignacio Vazquez-Abrams
RYS
Bradmann175