El cerebro humano puede ser descrito como una red biológica de neuronas. Estas neuronas forman una gran red de conexiones, y cada neurona recibe entradas de varias otras neuronas, basado en esas entradas se activa la neurona y emite una señal hacia otras neuronas o músculos efectores.
Esa misma idea se puede aplicar para hacer un robot, a través de un algoritmo, aprenda en tiempo real. Esta idea fue propuesta por McCulloch y Pitts en 1943 (acá el artículo original), y también mas tarde de manera muy similar por Alan Turing. La base de esa idea se le conoce como perceptrón, se puede decir es la red neuronal más simple, y la unidad fundamental de construcción de una red neuronal. Para de algoritmo de un perceptrón es un lo se le conoce como aprendizaje mecánico (inteligencia artificial aplicada al aprendizaje de máquinas). Fue inventado en 1957 por Frank Rosenblatt, y aunque fue inventado para ser algo físico, se implementó a nivel de software, es lo vamos a hacer en este instructable.
Más adelante explicaré es un perceptrón y como pasamos de la idea a una porción de código para hacer un robot aprenda. Lo importante es mediante el preceptrón programaremos un algoritmo de aprendizaje mecánico, y la técnica de aprendizaje se llama aprendizaje reforzado, es decir, se dará un "premio" cuando hace algo bien, o un castigo cuando algo hace más, y un mecanismo para corregir y almacenar esa información.
En este instructable aprenderemos un robot de construir Naciones Unidas, mediante una red neuronal, aprende a coordinar sus motores para dirigirse y seguir la luz. Utilizamos el SAMD21, tiene suficiente memoria y velocidad de procesador para poder hacerlo en tiempo real.