Estoy trabajando en un proyecto de robótica complicado que involucra el algoritmo de procesamiento de imágenes de MATLAB y la interfaz LEGO MINDSTORMS, así como un Arduino. El sistema funciona de forma dependiente en una secuencia de acuerdo con cada lectura, ya sea del Arduino o para dar un comando a los ladrillos LEGO.
La pregunta aquí es ¿puedo reemplazar el procesamiento de la 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? De ser así, qué microcontrolador sería conveniente para esto y si no cuál es la mejor solución para controlar el sistema sin necesidad de una PC.
Sí, hay algunos procesadores lo suficientemente potentes 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 base lo suficientemente potente como para ejecutar Linux , como BeagleBone o Raspberry Pi o Cubieboard, podría:
A menudo, estos enfoques no se molestan en producir ningún gráfico en el sistema integrado, o utilizan la biblioteca matplotlib de código abierto que está diseñada para ser fácil de usar desde MATLAB, así como para ejecutarse en cualquier máquina que pueda ejecutar Python. -- incluso máquinas que no pueden ejecutar MATLAB.
Si bien Raspberry Pi puede ejecutar (algunos) programas escritos en el lenguaje MATLAB utilizando los enfoques anteriores, por desgracia, Raspberry Pi no es lo suficientemente compatible con PC para ejecutar MATLAB. "¿MATLAB para Linux en Pi? No". (b)
Si tiene alguna mini-PC "compatible con PC" (procesador x86), como muchos sistemas integrados PC104 y (¿todos?) PCI-104 , o el NUC , o la gran cantidad de microATX y placas base más pequeñas, podría usar cualquier de las opciones anteriores, o también podría:
Probablemente ya sepa que "ejecutar código MATLAB directamente en un microcontrolador independiente" no es tan popular; otros enfoques incluyen
Puede exportar código C desde MATLAB utilizando MATLAB CODER y compilarlo con un compilador adecuado (o compilador cruzado). 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, de ser así, lo suficientemente rápido, son otras cuestiones.
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 estás en un entorno comercial (creo que los términos académicos son considerablemente más generosos).
Una vez convertí un 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 de letra no está definido. Por lo tanto, la eficacia de la traducción depende de la implementación de malloc/free. De hecho, la asignación de memoria dinámica es peligrosa e inaceptable para aplicaciones de seguridad.
Ignacio Vázquez-Abrams
rys
bradman175