Introducción a la Robótica con Arduino

2012 es el año en que el proyecto MVDrobotics comienza a consolidarse. Tras el éxito de la Urduino, el 1º de abril de este año anunciamos que lanzábamos el primer curso de “Introducción a la Robótica con Arduino”, y estoy seguro de que, más allá de la información que existe en nuestra web al respecto, mucha gente quiere saber más sobre esta propuesta, incluyendo los resultados de la primera experiencia. Hoy voy a hablar de todo lo que implica esta iniciativa, desde cómo surgió la idea, hasta cómo se llevó a la práctica y los planes que tenemos para la segunda edición, que va a arrancar ahora nomás.

¿Por qué un curso de robótica y por qué con Arduino?

La idea de hacer este curso surgió a mediados del año pasado, y desde un comienzo teníamos claro a dónde queríamos apuntar. En poco tiempo elaboramos el programa y definimos los lineamientos generales, pero, en cambio, no fue tan fácil encontrarle un nombre. Finalmente decidimos orientarlo hacia la robótica, que, en definitiva, funciona como un hilo conductor, en torno al cual se articula una serie de temas que bien podría haber constituido un curso sobre microcontroladores, sistemas embebidos, o lo que llaman physical computing o ubiquitous computing.

Si bien cada uno de estos términos se refiere a cosas distintas (y no siempre bien definidas), en efecto todos ellos están vinculados a un concepto común, que podríamos resumir así: existen sistemas de computación fuera de las computadoras personales, incluidos en aparatos u objetos que no tienen forma ni aspecto de lo que comúnmente llamamos “computadora”. Estos sistemas dedicados, en realidad, están allí desde hace bastante tiempo: se vienen usando en la industria (automatismos, sistemas de control), en la medicina (rayos X, electrocardiógrafo, etc.), en diversas áreas de la actividad profesional, y como procesadores secundarios en las propias computadoras (en el hardware, en los periféricos), desde hace por lo menos un par de décadas. En la electrónica de consumo, hasta no hace mucho, su uso era apenas incipiente, restringido a funciones muy concretas y muy básicas.

Pero, del mismo modo que ocurrió con la informática estándar, el avance de la tecnología hizo que estas “computadoras invisibles” finalmente llegaran al hogar, al entorno personal y a las diversas ramas del entretenimiento. Hoy en día cualquier aparato tiene, cuando menos, algún tipo de display, unos pocos botones y un modo de operación típicamente “interactivo”, propio de las computadoras. Pero, además, ha surgido una nueva generación de aparatos “inteligentes”, dotados de poderosos sistemas de cómputo, que integran muchas veces sensores, actuadores, funciones avanzadas como visión artificial o reconocimiento gestual o del habla, por lo que podríamos hablar de una verdadera “robotización” del mundo que nos rodea. Veamos algunos indicios de todo esto:

  • los antiguos aparatos como el televisor, son ahora interactivos, poseen múltiples interfaces digitales para conectarse con otros dispositivos y, por supuesto, a internet;
  • es muy común que los aparatos actuales dispongan de una opción para actualizar su firmware (o software, o sistema operativo, según el caso);
  • también existe una gama de aparatos nuevos, como por ejemplo los reproductores portátiles de música y vídeo;
  • algunos aparatos que antes eran mecánicos o físicos, ahora son digitales, como la cámara fotográfica;
  • cosas que ni siquiera eran “aparatos”, son ahora también digitales: un libro, una agenda, un portarretratos;
  • los teléfonos son ahora smart phones, pero también existen los “smart watches” y hasta los “smart shoes” (championes inteligentes);
  • la propia cámara fotográfica puede tener rasgos de “inteligencia”: ajustar automáticamente la luz, el foco, evitar que la foto salga movida, detectar cuando la persona está sonriendo, etc.;
  • las smart cards sustituyen al antiguo boleto en los sistemas de transporte, y progresivamente van siendo adoptadas como sistema de identificación nacional (DNI electrónico);
  • las computadoras portátiles incluyen cada vez más tipos de sensores: pantallas táctiles, sensores de luz, magnéticos, acelerómetros, sensores de huellas digitales, etc.;
  • he visto hasta vaporizadores de desodorante ambiental que tienen un sensor de presencia, igual que los mingitorios de algunos baños públicos;
  • al automóvil podríamos dedicarle un artículo entero, porque de hecho es aquí donde se encuentra el mayor campo de aplicación de los microcontroladores (los microcontroladores, µC, son pequeñas computadoritas en un solo chip). Solamente para las funciones del motor y la interfaz de usuario, un auto actual utiliza entre 30 y 80 µC; pero a eso se agregan las funciones más novedosas como los sensores para estacionar (asistente de aparcamiento), parabrisas que se activan solos, luces que se encienden automáticamente, comprobación de cinturones de seguridad, más sistemas de ayuda al conductor, por ejemplo para ir dentro del carril (algunos fabricantes llaman a esto “asistencia inteligente”), hasta la increíble función de estacionamiento automático. Ni que hablar de la nueva generación de autos eléctricos, donde sólo la función de administrar la energía ya justifica el uso de una buena computadora;
  • hablando de estacionamiento, algunos estacionamientos aquí ya tienen el sistema que detecta e indica dónde están los lugares libres;
  • y no olvidemos el GPS; y la alarma y el bloqueo;
  • una más de autos: en cualquier momento se viene el google driverless car;
  • en el hogar: Roomba y Scooba, los robots limpiadores, ya no son ninguna novedad;
  • también tenemos medidores de distancia láser, heladeras y sillones inteligentes;
  • y hasta la propia casa puede ser inteligente, en lo que se ha dado en llamar la domótica;
  • la iluminación con LEDs se está imponiendo, y es muy afecta a la computarización;
  • muchos sistemas que datan de hace más de 50 años, como los ascensores, la heladera o el lavarropas, aunque no han modificado su funcionalidad básica, pasaron, en algún momento, a estar gobernados por computadoras;
  • en el trabajo, podemos tener un sistema de autentificación biométrica, es decir un lector de huellas digitales para marcar el ingreso y la salida;
  • las bicicletas también tienen su computador;
  • los juguetes son cada vez más sofisticados, incluyendo muchos que son auténticos robots programables; por no hablar de las consolas de juegos, con sus interfaces hápticos, el Wiimote, el Kinect, etc.;
  • en la medicina, otro de los campos más veteranos en el uso de esta tecnología, existen numerosos ejemplos, talvez el más impactante sea la moderna cirugía robótica;
  • en música la informatización empezó hace casi 3 décadas, con el MIDI y los sequencers; hoy hay montones de cosas nuevas, por ejemplo las superficies tangibles, la clásica guitarra robot de Gibson o el Orchestrion de Pat Metheny;
  • el aeromodelismo ya no es lo que era; ahora son comunes los vehículos que vuelan solos, utilizando todo tipo de sensores y un potente procesador a bordo para la estabilización, navegación y geolocalización;
  • el arte también se ha vuelto digital: tenemos arte interactivo, arte digital, net.art, new-media art, etc. Un buen ejemplo son los “inventos” de mi amigo Alvaro Cassinelli;
  • y, evidentemente, existen muchísimos ejemplos más… por lo pronto, en Youtube hay miles de videos de robots; algunos ya son clásicos como Asimo, Aibo, Nao, etc.

A su vez, el diseño de un dispositivo electrónico se ha simplificado bastante con el uso de los µC, ya que la funcionalidad que antes debía lograrse con electrónica discreta, hoy se sustituye por un simple programa informático. Esto ha propiciado un resurgimiento de la electrónica aficionada, y del DIY a todo nivel (hasta tal punto que se habla de una revolución DIY [y, vinculada a ella, la “3D printing revolution”]). En la actualidad, hay una palabra que sintetiza perfectamente toda esta tendencia, y esa palabra no es otra que Arduino. Con su filosofía del hardware libre, Arduino es indiscutiblemente la puerta de entrada al mundo de los µC, y no hace falta explicar, entonces, por qué la elegimos como plataforma para nuestro curso. Arduino es, a su vez, la herramienta con la que vengo trabajando hace unos 5 años y con la que tengo más experiencia, por ende… ¿qué otra cosa podría enseñar?

 

3D ANN arduino artificial neural network atmega128 atmel AX-12 backpropagation computación física compás digital DSP Dynamixel encoder FFT filter filtro fing gadget hexapod hexápodo INCO Java media art microcontroller MIDI mina music Música neural network pablo gindel physical computing processing programming red neuronal robot robotics robots robótica SAMSA servo sumo.uy sumo robótico uruguay wiring

Artículos técnicos, etc. (10)
Audio e Informática (7)
General (13)
Música (7)
Physical Computing (14)

WP-cirrus by Roy Tanck requires Flash Player 9 or better.

¿Qué es un robot?

No existe una definición única y concreta sobre lo que es un robot. El término se aplica a una gran variedad de sistemas, desde los manipuladores industriales más simples, a robots “inteligentes” capaces de adaptarse a distintos entornos. Existen robots fijos, móviles, UAVs, robots teleoperados, autónomos, poliarticulados, zoomórficos, antropomórficos, etc.

Una definición bastante general, no obstante, podría ser la siguiente: un robot es una entidad que obtiene información del entorno a través de sensores, la procesa mediante un sistema de computación, y ejerce una acción sobre ese entorno por medio de actuadores. Un robot es, entonces, y en principio, un ejemplo muy claro de lo que venimos hablando, un sistema de computación dedicado, fuera de una computadora. Todos los sistemas que vimos en el apartado anterior tienen, de alguna manera, entradas, procesador y salidas, pero en el caso del robot, las entradas y salidas provienen del mundo físico directamente, a través de sensores que miden distancia, luz, sonido, etc., motores que hacen mover brazos o provocan desplazamiento, etc., con los cuales el robot interactúa con su entorno. A su vez, como vimos oportunamente, estos elementos y técnicas se utilizan también en el diseño de cosas que no son necesariamente robots.

Volviendo a nuestro curso, es evidente entonces que elegimos la robótica por ser el ejemplo más completo de “sistema computacional físico” -o como quieran llamarlo-, y además, porque nos encantan los robots. Cabe notar, de todas maneras, que la robótica abarca más elementos que los que nosotros abordamos en el curso: nuestro programa no habla de mecánica ni de inteligencia artificial, por ejemplo, ya que se trata de un curso introductorio.

Informática y electrónica

A lo largo de estos años, me fui dando cuenta de que la mayor dificultad que presenta el trabajo con µC (o la robótica, si prefieren), contando incluso con la enorme accesibilidad que le confiere Arduino, radica en que es necesario dominar simultáneamente dos disciplinas distintas como lo son la informática y la electrónica, y esto es algo que no ocurre muy a menudo.

En primer lugar, porque son cosas que se estudian separadas. El que estudió o está estudiando informática, generalmente sabe programar en lenguajes de alto nivel, no es muy afecto a las operaciones a nivel de bit o el manejo directo de memoria (cosas que, por el contrario, se usan permanentemente en un µC), y apenas sabe lo que es un cable. El que estudió electrónica, por su parte, suele mantenerse alejado de la programación, a la que ve como algo difícil y complejo.

Pero también está el que no estudió necesariamente ninguna de las dos cosas. Arduino es muy popular en el mundo del diseño, en el ambiente artístico contemporáneo, en lo que llaman el new-media art, como así también, y cada vez más, entre los aficionados a la robótica, la electrónica, los vehículos radiocontrolados; entre los amateurs, hobbistas, DIYers, makers, etc., etc. No falta gente, entre la que me incluyo, con ideas o proyectos vinculados al campo de la música y el sonido.

Vemos entonces que hay muchísima gente con ideas y proyectos en donde el uso de uno o más µC es la clave, pero para llevarlos a la práctica hace falta una combinación de conocimientos que rara vez se tiene. A eso apunta, precisamente, nuestro curso: pretendemos proporcionar de forma rápida, sintética y ordenada, los elementos necesarios para poder abordar esa tarea sin problemas. Pero además, queremos ir más allá de lo que simplemente se puede obtener buscando en la red (que no es poco): una cuidadosa selección de conocimientos en la que no faltan los fundamentos teóricos, pero tampoco las habilidades prácticas más concretas, como soldar o usar un protoboard. Creemos que ambas cosas son absolutamente necesarias para que el alumno pueda experimentar y seguir su propio camino en el universo infinito del aprendizaje.

El curso

En líneas generales, el programa de este curso comprende las siguientes unidades:

  1. Electrónica
  2. Microcontroladores
  3. Arduino
  4. Programación
  5. Sensores y actuadores
  6. Proyecto final

Como ven, es un plan bastante ambicioso: cada uno de estos temas ameritaría un curso dedicado, pero nosotros apostamos a dictar todo esto en 2 meses, con una carga total de 32 horas -2 clases de 2 horas por semana, 1 hora de teórico y 1 hora de práctico-, y sin sacrificar profundidad. La pregunta es: ¿se puede realmente? Sí, se puede, pero no sin cierto sacrificio de parte del estudiante. Cuando evaluamos el nivel de conocimientos previos que requería nuestro curso, decidimos ubicar el umbral en 4º año de liceo (o su equivalente de UTU), ya que realmente no se necesitan matemáticas avanzadas ni nada que implique nivel universitario; lo que sí enfatizamos es que el alumno debía tener una “gran disposición para aprender”. En la práctica, ya en la primera edición tuvimos grupos donde convivieron estudiantes de 2º año de liceo, con gente de 3º de facultad de ingeniería y “veteranos” autodidactas, y todo funcionó perfectamente.

En la unidad 1, por ejemplo, partimos de lo que es un electrón, pasamos por la Ley de Ohm, corriente continua, alterna, componentes, circuitos con resistencias, el condensador, semiconductores, el diodo, el transistor, el circuito integrado, hasta llegar a la electrónica digital, puertas lógicas, circuitos combinacionales y secuenciales. Todo eso. Si no me creen, aquí les dejo las diapositivas de dicha unidad:


Las siguientes unidades están planteadas con el mismo criterio: la unidad 2 trata de generalidades de los µC, desde lo que es el clock, el ADC, los timers, el PWM, los interfaces de comunicación, hasta las distintas herramientas de desarrollo disponibles; en la unidad 3 nos adentramos en lo que es la Arduino concretamente, desde su filosofía a las funciones de los pines, los shields, el IDE, las bibliotecas, etc.  En la unidad 4, partimos de lo que es un lenguaje de programación, hasta llegar a la descripción puntual de las principales funciones del core de Arduino, pasando por conceptos generales del lenguaje C y de la biblioteca estándar de los µC AVR, cosas que no suelen estar documentadas en la bibliografía específica de la placa. La unidad 5 tiene un enfoque más práctico, haciendo énfasis en cómo conectar y usar los distintos tipos de motores, sensores y dispositivos, gracias al conocimiento adquirido previamente en electrónica y programación.

Cada clase consta de una hora de teórico y otra de práctico (que con frecuencia se nos iba a 2 horas). En el práctico se trabaja en grupos de 2 estudiantes, no más de 4 grupos en total, a efectos de que, entre los 3 docentes podamos dar un apoyo casi personalizado. Cada grupo cuenta con una tarjeta Arduino, una protoboard, y los materiales necesarios para resolver el ejercicio planteado; el estudiante sólo debe traer su computadora portátil. El salón cuenta con WiFi y proyector.

Las 3 últimas clases son totalmente prácticas, y consisten en la realización del Proyecto Final, o sea, un robot móvil autónomo que realice funciones básicas como esquivar objetos o seguir una línea. El estudiante puede optar por armarse un robot desde cero con sus propios materiales, o utilizar uno ya montado, para concentrarse exclusivamente en la programación. Algunos estudiantes prefieren dedicarse a sus propios proyectos, posibilidad que también está contemplada.

1ª edición: Mayo-Junio de 2012

En mayo finalmente se concretó por primera vez la idea de este curso. Dada la gran cantidad de inscriptos, decidimos formar dos grupos, a los que llamamos “básico” y “avanzado”. El curso era el mismo para ambos, con apenas algunas sutiles diferencias en los prácticos; simplemente tratamos de agrupar a los estudiantes lo más homogéneamente posible en materia de conocimientos previos e intereses, de modo de generar una mejor experiencia para todos. Para esto nos basamos en los datos que el propio estudiante nos proporciona a través del formulario de inscripción de nuestra página. En algunos casos la opción por un grupo u otro respondió exclusivamente a temas de disponibilidad horaria.

Fue una experiencia enriquecedora, además de que salió todo muy bien, nosotros quedamos muy conformes, y los alumnos también, conocimos gente realmente “de la planta”, copados con la robótica como nosotros. Para finalizar, fuimos todos a comer una pizza al Rodelú, circunstancia en la cual entregamos los certificados de asistencia. Aquí les dejo unas cuantas fotos del curso, que realmente nos traen muy lindos recuerdos.

2ª edición y otros planes

Talvez alguien se pregunte por qué no hemos largado todavía la segunda edición del curso. Bueno, entre otras cosas, porque este artículo no estaba escrito aún 😉 Somos solamente 3 personas que nos ocupamos de todo, y los 3 tenemos varias actividades paralelas, pero finalmente hemos logrado coordinar esfuerzos nuevamente, y el curso estaría arrancando en unas pocas semanas.

Para esta oportunidad hemos decidido extender oficialmente a 2:30 horas la duración de las clases, y hemos ajustado levemente el costo (que ahora es de $6000 por todo el curso) con el propósito de brindar un mejor servicio al estudiante. Los estudiantes de esta nueva generación contarán con la ventaja de que todo el material, tanto teórico como práctico, ya está disponible antes de arrancar, objetivo que no fue posible alcanzar en la edición pasada.

Al mismo tiempo, estamos implementando una modalidad online, atendiendo a las muchas solicitudes que hemos recibido del exterior, o para gente que por diversas razones no puede desplazarse para presenciar las clases. Otra preocupación que quedó latente, es si íbamos a instrumentar un curso “superior” para la gente que quiere seguir avanzando. Por el momento no hay novedades de esto, pero lo que sí podemos adelantar es que vamos a crear un espacio tipo taller, en el que la gente pueda venir a trabajar en sus propios proyectos contando con nuestro apoyo técnico.

Pablo Gindel, 2-9-2012

(con la colaboración de Federico Andrade)

Be Sociable, Share!

19 Comentarios »

  1. avatar pabloxid Dice:
  2. avatar MVDrobotics Dice:
  3. avatar Alfredo G. Rivamar Dice:

    Consulto por este curso (Introducción a Arduino) en modalidad online. Saludos desde Argentina.

  4. avatar pabloxid Dice:

    Hola Alfredo, gracias por escribir.

    Veo que mandaste correo también a info@mvdrobotics.com, ahí Kenji te va a contestar lo del curso online. Son muchas las solicitudes que hemos recibido, pero todavía no implementamos una solución concreta.

    Espero que podamos satisfacer tu pedido.

    Saludos,
    P.G.

  5. avatar Dansar Dice:

    hola que tal quisiera informacion, de si van a empezar un curso nuevo de arduino. gracias si pueden contestar al email mejor gracias.

  6. avatar pabloxid Dice:

    Hola Dansar, gracias por comunicarte. 
     
    Vamos a seguir dictando cursos, probablemente 2 por año. El próximo comienzo va a ser en marzo-abril de 2013. Podés anotarte usando el formulario de inscripción online:
     
    http://www.mvdrobotics.com/?q=insc
     
    Te esperamos.

  7. avatar CesarG Dice:

    Pablo, estamos buscando una solucion llamada "plataforma inercial" que basicamente es la siguiente :
    Tenemos instalada una antena en un buque, esta antena tiene que estar direccionada siempre al mismo sitio, pero como el buque gira 360 grados necesitamos de algun dispositivo que siempre "mire" para el mismo sitio (por mas que el buque gire)
    Vos crees que con arduino/ardupilot se puede resolver ?
    Donde puede asesorarme ?
    Cesar

  8. avatar pabloxid Dice:

    Hola Cesar.
    Estoy desarrollando un sistema similar para un cliente en Grecia. El compás de ArduPilot es un tanto inestable y muy sensible a interferencias; ahora estamos probando con un compás OceanServer OS4000-T. En cualquier caso, el Arduino como procesador central del sistema es más que suficiente.

  9. avatar maxi Dice:

    hola, acá en montevideo se consigue el Arduino? lugar y precio aprox.? me gustaría hacer el curso, lo que no sé si podré coordinar mis horarios para el 1ero de este año 2013.
    Aguardo la respuesta, muchas gracias. Saludos,
    Maxi

  10. avatar pabloxid Dice:

    Nosotros tenemos Urduino http://www.youtube.com/watch?v=AUtqy145peA a 45 dólares.

    El curso se hace sí, marzo-abril estaría arrancando. Acá te podés inscribir http://www.mvdrobotics.com/?q=insc.

    info@mvdrobotics.com

  11. avatar TITO Dice:

    Estos cursos son en mexico o españa?
    los tendran en linea?

  12. avatar pabloxid Dice:

    Los cursos son en Uruguay. Tenemos planes de hacerlos en línea, pero todavía no lo hemos implementado. Llena el formulario en http://www.mvdrobotics.com/?q=insc y nos comunicaremos contigo cuando arranque el curso en linea.

  13. avatar maxi Dice:

    Pablo, ya saben fecha de inicio de curso (presencial) en Marzo o Abril? saludos. Maxi

  14. avatar pabloxid Dice:
  15. avatar Emiliano Dice:

    HOLA, ME INTERESA MUCHO ESE PROYECTO PARA MANEJAR LOS LED PIXEL CON MADRIX, COMO TE PODRIA CONTACTAR?
    DESDE YA MUCHAS GRACIAS

  16. avatar pabloxid Dice:
  17. avatar quitron Dice:

    Está claro que la robótica está cada vez más inmersa en nuestras vidas, y por ello creo que es muy positivo que los niños en edad escolar aprendan conocimientos básicos del tema
    http://cursosderobotica.es/

  18. avatar Carlos Russo Dice:

    Quisiera saber si me la pueden chupar un poquito. Gracias

  19. avatar pabloxid Dice:

    Sos puto y lo sabés.

RSS alimentación de los comentarios de esta entrada. TrackBack URL

Dejar un comentario