¿Arduino es adecuado para ser un controlador Humanoid Robot?

6

No soy un desarrollador de Arduino aquí. Sin embargo, me gustaría preguntar si algún desarrollador que tenga experiencia en la capacidad de Arduino, ¿es Arduino adecuado para desarrollar un robot humanoide? El robot humanoide consta de una cámara visual, sensores y servos, un transceptor inalámbrico, una brújula, un acelerómetro, etc.

Corrígeme si menciono algo incorrectamente.

    
pregunta

6 respuestas

11

El Arduino Duemilanove solo tiene 14 E / S digitales y seis entradas analógicas, y un máximo de 2k SRAM. No parece que pueda manejar todos esos periféricos sin la expansión de puertos, y no tiene suficiente memoria para el procesamiento de imágenes.

    
respondido por el Leon Heller
8

Un Arduino en sí mismo tiene muy poca E / S y muy poca potencia de CPU y memoria. Puedes usar múltiples Arduinos (como lo sugiere el vicatu) o usar algo más poderoso como el mbed (como lo sugiere Joby Taffey). Yo sugeriría un híbrido de ambas ideas. Use un procesador potente para proporcionar control global y de inteligencia artificial y use microcontroladores más simples como administradores de E / S. De hecho, sugeriría una jerarquía completa con tantas capas como sea necesario con procesadores más potentes a medida que ascienda a través de la jerarquía.

Por ejemplo, he usado el Gameboy Advance como el 'cerebro' de un robot mientras la I / O fue administrada por los microcontroladores PIC16F84. Creo que un arreglo ideal sería algo tan poderoso como una PC (tal vez una mini placa ITX) o algo como una placa Beagle como el cerebro, una capa intermedia con múltiples MBED o Zilog Z8 como administradores de subsistemas (control de movimiento, gestión de sensores , algún preprocesamiento de sensores etc). y muchos microcontroladores pequeños / baratos (Atmel / PIC / TI MSP430, etc.) para gestionar el trabajo de la pierna. La capa superior puede usar Ethernet o USB, las niveles inferiores pueden usar RS232, I2C, etc.

Una ventaja de todo este enfoque es que puede modularizar su desarrollo (bueno para grupos de amigos o estudiantes). Los módulos individuales pueden tener objetivos mejor definidos (y más fáciles de alcanzar) y ser proyectos completos en sí mismos. En los niveles más altos puede concentrarse en la inteligencia artificial y en el control total del robot sin tener que preocuparse por los detalles de bajo nivel (por ejemplo, si puede emitir un comando para girar el robot 45 grados, ha dividido efectivamente su problema en dos. El nivel más alto puede concentrarse sobre las decisiones en qué dirección girar (toma de decisiones), mientras que un controlador de nivel inferior solo tiene que satisfacer a los motores simples y bien definidos desde arriba. En cierto modo, esto es modelar nuestro robot de la forma en que funcionan nuestros cerebros (no a nivel neurológico). Cuando decidimos acercarnos y tomar una taza, no tenemos que pensar concienzudamente sobre la mecánica de lo que estamos haciendo. Podríamos ver que esta acción ocurre en tres niveles:

1) High level - the decison to pick up the cup.

2) Mid level - co-ordinate motor actions and basic analysis of senory inputs.

3) Low level - perform motor action, collect sensor data.

Espero que esto sea útil.

    
respondido por el ttt
3

Puede que estés mejor con algo más robusto que el Arduino. Quizás un mbed (basado en ARM Cortex-M3).

Aunque, incluso puede que no tenga suficientes líneas para controlar todos esos periféricos.

    
respondido por el Toby Jaffey
1

Como sugirió Tim Ring, la mejor opción sería combinar un Arduino con un dispositivo más potente. Si utiliza una Netbook barata como cerebro le daría esa potencia adicional, incluso podría usar la cámara web incorporada como cámara y hacer todo el procesamiento de su imagen en la Netbook.

El Arduino se conectaría a un puerto USB de la netbook y podría enviar y recibir comandos fácilmente a través de un puerto serie. De esta manera, podría programar todo su código IO en el Arduino y escribir su código de "cerebro" de nivel superior para ejecutarse en la netbook. Por ejemplo, la Netbook podría luego emitir comandos como "Conducir hacia adelante durante 2 segundos" para el Arduino y el Arduino podría controlar los motores para realizar la tarea. Puede solicitar la lectura desde la brújula o el GPS y Arduino puede devolver el valor.

También puede hacer que su código "cerebral" controle el puerto serie para detectar cualquier información que Arduino quisiera enviar, por ejemplo, si estaba conduciendo hacia adelante y un sensor de parachoques detectó una colisión, podría enviar un comando de "Colisión" a el cerebro y el cerebro podrían decidir qué hacer al respecto.

El gran beneficio de usar una Netbook sería la capacidad de mostrar información de diagnóstico y depuración en su LCD. Desde un fondo de programación de PC, me parece que la depuración de un Arduino sin retroalimentación visual es muy complicada.

El Arduino también obtendría su poder de la Netbook, lo que significa que solo necesitaba suministrar una fuente de alimentación separada para los motores / servos.

    
respondido por el littlecharva
0

Tal vez un Arduino más un montón de Shields, o múltiples Arduinos y múltiples Shields que se comunican entre sí (de forma inalámbrica o de otro tipo ...). Todo es posible :)

    
respondido por el vicatcu
0

Considere un módulo ESMini junto con un Arduino. Con 95x55mm no debería tener problemas para encajarlo dentro del torso o incluso la cabeza de un pequeño robot humanoide, y tiene el poder de procesamiento de una netbook de gama baja.

    
respondido por el finnw

Lea otras preguntas en las etiquetas