¿Puedo ejecutar matlab en un microcontrolador? y si si ¿cuál?

1

Estoy trabajando en un complejo proyecto de robótica que involucra el algoritmo de procesamiento de imágenes MATLAB y la interfaz LEGO MINDSTORMS, así como un Arduino. El sistema funciona de forma dependiente en una secuencia de acuerdo con cada lectura del Arduino o para dar un comando a los ladrillos LEGO.

La pregunta aquí es ¿puedo reemplazar el procesamiento de PC a otro microcontrolador externo como Raspberry Pi, por ejemplo, pero sin convertir el código matlab como instalar MATLAB en el microcontrolador para compilar el código? Si es así, qué microcontrolador sería conveniente para esto y si no, cuál es la mejor solución para controlar el sistema sin la necesidad de una PC.

    
pregunta Ahmed Mesbah

3 respuestas

3

Sí, hay algunos procesadores lo suficientemente poderosos como para ejecutar (algunos) programas escritos en el lenguaje MATLAB directamente, reemplazando una PC.

Hasta ahora, solo conozco 4 formas de hacerlo:

Si tiene una placa madre lo suficientemente potente como para ejecutar Linux , como BeagleBone o Raspberry Pi o Cubieboard, podría :

  • Instale la herramienta Octave de código abierto, que puede entender y ejecutar muchos programas en lenguaje MATLAB directamente. "Ejecución de Matlab Computer Vision en Raspberry Pi con Linux Octave. Parte 1." (a)
  • Instale la herramienta Scilab de código abierto, que puede entender y ejecutar algunos programas en lenguaje MATLAB directamente.
  • Instale la herramienta de código abierto FreeMat , que puede entender y ejecutar algunos programas de MATLAB directamente.

A menudo, estos enfoques no se molestan en producir ningún gráfico en absoluto en el sistema integrado, o use la biblioteca matplotlib de código abierto que está diseñada para que sea fácil de usar desde MATLAB y que se pueda ejecutar cualquier máquina que pueda ejecutar Python, incluso máquinas que no pueden ejecutar MATLAB.

Mientras que la Raspberry Pi puede ejecutar (algunos) programas escritos en el lenguaje MATLAB usando los métodos anteriores, Lamentablemente, la Raspberry Pi no es lo suficientemente compatible con PC para ejecutar MATLAB. "¿MATLAB para Linux en el Pi? No." (b)

Si tiene alguna mini PC "compatible con PC" (procesador x86), como muchos PC104 y (todos?) PCI-104 sistemas integrados, o el NUC , o la gran cantidad de microATX y placas base más pequeñas, podría usar cualquiera de las opciones anteriores o también podría:

  • Instale MATLAB para Windows o MATLAB para Linux. "MATLAB para los requisitos del sistema Linux" (c) (d) " Instalar Matlab en Linux " (e)

alternativas que no cumplen con ese criterio

Probablemente ya sepa que "ejecutar código MATLAB directamente en un microcontrolador independiente" no es tan popular; otros enfoques incluyen

  • Usar MATLAB para desarrollar modelos de Simulink que se ejecutan como aplicaciones independientes. "Raspberry Pi Support from Simulink" (f) ; "Ejecute modelos de Simulink en ... Arduino ... BeagleBoard ... Gumstix ... Raspberry Pi ... LEGO Mindstorms ..." (g) " Programación de Raspberry Pi utilizando Simulink " (h) (i) " MATLAB / Simulink en BeagleBone Black "< a href="http://forum.beaglefu.com/topic/205-matlab-simulink-on-beaglebone-black/"> (j) "Prototipos rápidos de BeagleBoard con Matlab y Simulink" (k)
  • ejecutar el código MATLAB en una PC que se comunica de un lado a otro con un microcontrolador, para hacer cosas que ninguno podría hacer solo. "el paquete de soporte de MATLAB para el hardware Raspberry Pi" (l) ; "ThingSpeak Support de MATLAB ... con Arduino" (m)
  • Use MATLAB para probar un montón de algoritmos de alto nivel y use esa implementación para estimar la cantidad de RAM y la potencia de procesamiento que necesita, y luego vuelva a implementar esos algoritmos desde cero para ejecutar de forma independiente prácticamente en cualquier microcontrolador. Al menos esa cantidad de RAM y potencia de procesamiento. (Por lo general, en Forth o C o C ++, ya que prácticamente todos los microcontroladores tienen un compilador para esos idiomas y casi ningún otro).
respondido por el davidcary
2

Puede exportar el código C de MATLAB utilizando MATLAB CODER y compilarlo con un compilador adecuado (o cruzar compilador). Cualquier plataforma adecuada probablemente tenga un compilador de C disponible.

Si los recursos (como la RAM) están disponibles en un microcontrolador para ejecutar el código, y si es que lo son, lo suficientemente rápidos, son otras preguntas.

También es posible exportar código de lenguaje de descripción de hardware desde MATLAB si necesita alta velocidad, que se puede usar para programar un FPGA.

Los complementos no son económicos si se encuentra en un entorno comercial (creo que los términos académicos son considerablemente más generosos).

    
respondido por el Spehro Pefhany
0

Una vez convertí el proyecto Matlab bastante grande a C mediante una herramienta automática (compilador Tmc) y lo ejecuté en Android con el procesador Arm. El problema del lenguaje Matlab es que todas las variables deben asignarse dinámicamente y el tamaño del tipo no está definido. Por lo tanto, la efectividad de la traducción depende de la implementación de malloc / free. De hecho, la asignación de memoria dinámica es peligrosa y no es aceptable para aplicaciones de seguridad.

    
respondido por el csafonov

Lea otras preguntas en las etiquetas