¿Es Wi-Fi con Arduino lo suficientemente rápido para controlar un vehículo?

2

Estoy construyendo un vehículo motorizado simple que deseo hacer autónomo mediante el uso de redes neuronales. Estoy usando Arduino porque soy nuevo en electrónica pero tengo más experiencia en programación. Estoy seguro de que hay microcontroladores mucho más potentes, pero para mis propósitos (y fondos) un Arduino Mega 2560 es lo que preferiría usar (y ya tengo uno). Ahora sospecho que la Mega, aunque es mucho más capaz que una Uno o placas Arduino similarmente pequeñas, no es capaz de ejecutar una red neuronal que recibe entradas de una serie de sensores numerados decentemente y genera varias salidas (¿quizás 5?) .

Mi idea, entonces, es ejecutar la red neuronal en mi teléfono si es lo suficientemente rápida, o mi computadora de escritorio si no lo es. De cualquier manera, pensé que la mejor manera de transmitir los datos de entrada y salida entre la unidad de procesamiento externa (teléfono / escritorio) y el Arduino sería WiFi. Vi un video en YouTube de alguien que controlaba un auto RC con una aplicación de Android que crearon, transmitiendo datos a través de WiFi, y aunque un poco retrasado para los propósitos de RC, parecía estar dentro de 1 segundo de latencia.

¿Alguien sabe si WiFi sería lo suficientemente rápido / confiable para controlar un pequeño vehículo autónomo? Supongamos que viajará al ritmo de un adulto caminando, y reaccionará a su entorno basándose en el barrido del sonar. (La latencia de la transmisión de datos será importante porque los datos de la sonda deberán ser procesados por la computadora, pero lo ideal es que el robot continúe moviéndose sin disminuir la velocidad o deteniéndose para esperar los datos).

    
pregunta JonathonG

4 respuestas

3

Sí, esto es posible. Incluso hay personas que controlan sus Quadrocopters con WiFi, pero la latencia realmente es un problema. esta cosa es un producto comercial y le permiten al usuario controlarlo con wifi, pero tienen una gran carga de algoritmos a bordo para que sea controlable. . en su aplicación nunca usaría WiFi, pero a 433MHz / 868MHz puede comprar módulos por alrededor de 5 €, llamados RFM12 ( de hoperf ). Hay una gran cantidad de bibliotecas para estos en internet. Pequeño consejo: no haga todo el procesamiento en el gran host, el retraso demora más que el procesamiento a bordo.

    
respondido por el milch
1

Considere usar múltiples microcontroladores para delegar algunos cálculos. Si tiene varias capas en su red, podría encadenar varios procesadores. Recomiendo encarecidamente que la hélice paralax funcione a 80 mhz y tenga múltiples núcleos de 32 bits. Es bastante fácil de programar. La complejidad aumenta dramáticamente cuando a. Usando múltiples procesadores y b. utilizando un procesador de múltiples núcleos, pero no tendrá problemas para procesar datos en una red y podrá seguir procesando en el vehículo.

    
respondido por el Richard Foley
1

Estás pidiendo algunas cosas aquí:

  • ¿Es capaz el arduino de leer varios sensores / actualizar varias salidas de control lo suficientemente rápido para manejar un vehículo?

    • Absolutamente. Debería ser bastante trivial administrar ~ 1-10 entradas y 1-5 salidas más de 100 veces por segundo.
    • Nota: Esto depende un poco de los sensores que alimentan las entradas. Si tiene cámaras, o cualquier otro dispositivo que produzca lotes de datos, un arduino no es la herramienta adecuada. Probablemente sea mejor pensar, por ejemplo, una cámara de 640px * 480px como 307,200 (por ejemplo, 640 * 480) sensores separados. Eso le dará una mejor idea de las tasas de actualización que puede lograr, al menos sin una gran optimización.
      Se debe aplicar una regla similar para cualquier sensor que devuelva más de un valor.
  • Es WiFI una idea razonable para la comunicación de baja latencia.

    • NO
      • Los productos comerciales que usan wifi para el control remoto usualmente solo lo hacen porque están diseñados para interactuar con dispositivos básicos (tabletas, teléfonos, etc.). WiFi es en realidad bastante terrible desde una perspectiva de latencia. Sin duda, es posible , pero si desea utilizar wifi, debe darse cuenta de que realmente está haciendo dos proyectos. Tu cosa de red neuronal y la escritura de una capa de comunicación predictiva para wifi que trata de ocultar la latencia tanto como sea posible.
    • Personalmente, buscaría hacer solo un proyecto complicado a la vez.
    • Si puedes, usa el USB para conectividad. Es bastante a prueba de balas.
    • Si realmente necesita conectividad inalámbrica, los módulos inalámbricos XBee son muy buenos. Obtiene una buena cantidad de ancho de banda, y la mayor parte de la complejidad de la capa inalámbrica real está bastante oculta para usted. Los módulos manejan la retransmisión de errores, la suma de comprobación, etc ... en silencio, por lo que no necesita preocuparse por ellos.
    • Los módulos RFM12 también son buenos, pero no son tan plug-and-play como los módulos XBee. Una vez más, buscaría minimizar la complejidad del hardware (exposed) tanto como sea posible (XBees es muy complejo, pero viene como un módulo completo, por lo que no debe preocuparse por esa complejidad, al menos inicialmente) , especialmente porque no tiene mucha experiencia con el hardware.

No se deje disuadir por el hecho de que el arduino parece "lento". Cosas como el ChipKIT tienen mucho más poder de procesamiento, pero para muchas cosas, el ATmega es bastante rápido. 16 Mhz es 16 MIPS. Si necesita administrar 100 actualizaciones / segundo, eso es 160000 ciclos de actualización por actualización. Puedes hacer mucho en eso.

    
respondido por el Connor Wolf
0

Este blog puede ser útil. El relé wifi y el controlador iMatic son bastante buenos. Sin embargo, no puedo hacer que funcione. :-(

    
respondido por el baranenkovalekseevich

Lea otras preguntas en las etiquetas