Quiero construir un robot. ¿Cómo conecto el hardware con el software?

Como no proporcionó ningún detalle específico, voy a responder esta pregunta en un sentido bastante general, para un supuesto principiante.

Para un robot bastante básico, digamos un pequeño robot con ruedas que puede seguir líneas en el suelo (como el Pololu 3pi Robot), generalmente usará una sola computadora llamada microcontrolador. Como respondió Taj Bennit, Arduino es un ejemplo de una marca de microcontroladores comúnmente utilizados en robótica. Los microcontroladores son similares a una PC típica en que tiene habilidades de programación bastante genéricas. Puede escribir una pieza de software que realice principalmente cualquier tipo de cálculo, y puede usar estructuras de datos básicas y cosas así.

Sin embargo, son especiales, ya que el microcontrolador está diseñado para comunicarse fácilmente con otras piezas de hardware, y hay algunas formas principales de hacerlo:

  • Registros para hardware especializado: puede pensar en un registro como una dirección en la memoria que se ha reservado para algún propósito específico.
  • PWM – Las señales moduladas por ancho de pulso son cómo se controlan las velocidades del motor. Esto generalmente se hace cambiando los valores de registro en el microcontrolador. Puede aprender todo sobre las señales PWM en línea, pero la mejor analogía sería encender y apagar un interruptor de luz muy rápido para simular la atenuación. Si lo deja encendido todo el tiempo, obtendrá el brillo completo, y si lo deja encendido la mitad del tiempo, obtendrá el brillo medio. Al cambiar la cantidad de tiempo que deja el interruptor encendido, puede ajustar el brillo, a pesar de que sus únicas opciones para el interruptor son encendido y apagado.
  • GPIO – Entrada-salida de propósito general: estos pines son útiles para conectar sensores simples (como un sensor infrarrojo, utilizado para la detección de línea). Básicamente, cualquier cosa que pueda crear una salida binaria se puede conectar a un pin GPIO y leer fácilmente en su programa
  • * Convertidores digitales analógicos : los ADC y DAC son útiles para trabajar con hardware que no tiene una entrada y salida binaria. Un ejemplo es un termómetro que usa un voltaje en una salida analógica para informar la temperatura. El ADC puede convertir la señal analógica en un valor digital.
  • Comunicación en serie: así es como puede hacer que su microcontrolador se comunique con una PC de escritorio para realizar cálculos más avanzados (por ejemplo, procesamiento de imágenes)

Una cosa que debe saber sobre los microcontroladores es que realmente solo ejecutan un solo programa a la vez. Generalmente, usted escribe una pieza de software que se ejecuta en un bucle y hace el mismo cálculo cada vez. Volviendo al ejemplo de seguimiento de línea, su programa probablemente haría lo siguiente:

  1. Lea el valor de los sensores IR
  2. Determine si se detecta una línea y dónde está (puede obtener más información sobre esto en línea)
  3. Calcule la velocidad a la que debe estar cada motor para seguir la línea (si necesita girar a la derecha, el motor izquierdo debe girar más rápido que el derecho)
  4. Genere una señal PWM o de control para cada motor.
  5. Repetir

Hay un último paso. Un PWM es excelente para decirle a un motor cuánto moverse, pero al provenir de un microcontrolador, la señal generalmente no tiene suficiente potencia para mover un motor. En el pasado, he usado lo que se llama un puente H, que interpreta la señal PWM para generar una nueva señal que lleva suficiente potencia para hacer funcionar un motor. El puente H se puede usar para interpretar si desea un motor hacia adelante o hacia atrás también.

Hay diferentes tipos de señales de control y hardware que se pueden usar, pero el flujo básico es el siguiente: Microcontrolador —- señal de control —–> Motor Driver —– potencia ——> Motor. Una vez que comprenda cómo hacer esto para un robot simple, puede extender la idea a controlar muchos motores al mismo tiempo, que es cómo funcionan los robots más avanzados.

* Editado el 17/01/2015: Se agregó ADC / DAC

La respuesta de David Jensen es excelente. Quiero agregar algunos comentarios generales que respondan a la pregunta que hace de una manera teórica de alto nivel.

En primer lugar, el hardware es electromecánico, el software es bits de información. La forma en que conecta el hardware al software es transfiriendo información, generalmente convirtiendo los bits de información en pulsos y voltajes eléctricos, yendo en ambas direcciones. Entonces, por ejemplo, tiene convertidores analógico a digital (ADC) como entrada al software y modulación de ancho de pulso (PWM) para leer y escribir números. Propósito general Entrada-Salida (GPIO) lee y escribe bits binarios verdadero / falso.

El hardware tiene actuadores, como motores eléctricos, para controlar el hardware en el robot. El PWM y GPIO controlan los motores: arranque, parada y configuración de niveles de control. El hardware también tiene sensores, como video, audio e incluso sensores táctiles (táctiles). Estos sensores procesan sus entradas y convierten la entrada en señales eléctricas que el software lee como bits o números y como vectores o conjuntos de bits o números.

Cuando lo piensas, esto no es muy diferente del cuerpo humano. Los nervios transfieren señales eléctricas desde el cerebro a los actuadores humanos (típicamente músculos, pero también señales a los órganos como el corazón y las glándulas) y sensores (ojos, oídos y tacto). El principio es el mismo, aunque el procesamiento de datos en el cerebro no se parece en nada al de una computadora.

Arduino es cómo conecta el hardware y el software.

Arduino utiliza el procesamiento (un lenguaje similar a C) con un IDE súper fácil de usar. Usted escribe el código y lo carga. Es muy fácil comenzar.

Puedes escribir un robot simple en un fin de semana con poco conocimiento.

Sugeriría comenzar con ROS (Alimentando los robots del mundo). ROS es un marco maravilloso. tiene muchos paquetes muy bien escritos por algunas personas muy inteligentes en la industria de la robótica que resumen una gran cantidad de hardware común para usted. entonces solo necesita enfocarse en la lógica de aplicación de software.

Arduino – Inicio