Conectar dos Lego Mindstorms EV3 en modo Daisy-Chain

En este artículo se explica cómo conectar dos bloques inteligentes Lego Mindstorms EV3 en cadena (Modo Daisy-Chain), lo cual permite desde un bloque EV3 monitorear sensores y controlar motores de otros tres bloques EV3. Con un sencillo programa se muestra cómo desde el primer bloque EV3 se mide proximidad con un sensor infrarrojo conectado al segundo bloque EV3, y al presionar un sensor de contacto conectado al primer bloque, se acciona un motor mediano conectado al segundo bloque. Todo esto con un único programa cargado en el primer bloque EV3.

Introducción

El software Lego Mindstorms EV3 (Home o Education) permite hacer programas que manipulen hasta cuatro bloques EV3 conectados en cadena, activando el Modo Daisy-Chain que está en Propiedades del Proyecto.

Conexión en cadena. En este modo de conexión cada dispositivo se conecta al anterior y al posterior geográficamente, formando una cadena. A este modo de organización se le conoce también como daisy-chain (cadena margarita) [1].

Con esto es posible hacer un sistema robótico con cuatro Lego Mindstorms EV3 usando hasta 16 sensores y 16 motores.

Material

2 Bloques inteligentes Lego Mindstorms EV3.
2 Cables USB para EV3.
1 Sensor de contacto EV3.
1 Sensor infrarrojo EV3.
1 Motor mediano EV3.
1 Computadora con software Lego Mindstorms EV3 instalado.

Conexiones

Para usar el programa que se muestra posteriormente, se colocaron los dos bloques EV3, sensores y motor como se ilustra en la fotogravía siguiente:

Bloque 1 (EV3 de la izquierda)

  • Puerto mini USB (lado superior) a PC.
  • Puerto USB (lado izquierdo) al mini USB del Bloque 2.
  • Puerto de entrada 1 al sensor de contacto.

Bloque 2 (EV3 de la derecha)

  • Puerto mini USB (lado superior) al USB del Bloque 1.
  • Puerto de entrada 4 al sensor infrarrojo.
  • Puerto de salida A al motor mediano.

Programa

Asegúrate de tener encendidos ambos bloques EV3, el Bloque 1 (izquierdo) conectado a la computadora, los sensores y motor conectados a los bloques EV3 como se indica en el punto Conexiones.

Inicia el software Lego Mindstorms EV3 (Home o Education). Crea un nuevo proyecto, el cual puedes llamar Conectar 2 EV3. Abre la pestaña Propiedades el proyecto y haz clic en la casilla de verificación Modo Daisy-Chain.

Regresa a la pestaña Program, y agrega los bloques de programación como se muestra en la imagen siguiente.

Observa que en la esquina inferior derecha, al hacer clic en el icono Vista del Puerto , se puede seleccionar de qué Bloque EV3 se desean ver los puertos. En la imagen siguiente está seleccionada la pestaña Capa del bloque 2, mostrando lo que tiene conectado el Bloque 2, un motor mediano en el Puerto A y un sensor infrarrojo en el Puerto 4.

El siguiente pseudocódigo explica lo que hace el programa:

Repetir siempre (Bucle):

Si el sensor de contacto (Bloque 1, Puerto 1) es presionado:

Muestra en la pantalla la imagen Touch sensor.
Reproduce el sonido Activate.
Gira el motor mediano (Bloque 2, Puerto A) una rotación.

Si no

Lee proximidad del sensor infrarrojo (Bloque 2, Puerto 4).
Muestra en la pantalla el valor de proximidad.
Hace una pausa de 0.2 segundos.

Fin Si

Fin Repetir

El programa se ejecuta en el Bloque 1, por lo tanto, todos los bloque de programación se ejecutan en el Bloque 1, y solamente los bloques de programación en los que se puede especificar una tarea sobre un Bloque EV3 en particular, tienen un campo llamado Número de capa, el cual se refiere al número de Bloque EV3 conectado en cadena.

A continuación se describe cómo están configurados los bloques de programación que permiten especificar un Bloque EV3 en particular.

Interruptor. En este bloque se tienen que configurar las opciones como se muestra en la imagen siguiente.

Motor mediano. En este bloque se tienen que configurar las opciones como se muestra en la imagen siguiente.

Sensor infrarrojo. En este bloque se tienen que configurar las opciones como se muestra en la imagen siguiente.

Ejecutar programa

Primero, enciende ambos bloques EV3. Conecta el Bloque 1 (EV3 de la izquierda) a la computadora y descarga el programa al EV3.

Una vez terminada la descarga del programa en el Bloque 1, ejecuta el programa. Acerca algo al sensor infrarrojo y observa cómo cambia el número en la pantalla del Bloque 1. Oprime el sensor de contacto y observa la imagen de la pantalla del Bloque 1, escucha el sonido que reproduce y observa que el motor mediano gira una rotación.

En el Bloque 2 (EV3 de la derecha) no es necesario cargar algo en particular, solamente debe estar encendido para que el Bloque 1 opere el sensor y motor conectados en él.

Dónde comprar

Si deseas adquirir un paquete completo Lego Mindstorms EV3 o solamente el bloque inteligente EV3, o algún sensor o motor, puedes buscar con nuestro patrocinador RobotSA.

Referencias

[1] Sanchís, Enrique (2002). Sistemas electrónicos digitales: Fundamentos y diseño de aplicaciones. Universitat de València. Pag. 33

iRoX – Escuela de Verano Robótica 2017 – Segunda llamada

El Instituto de Robótica de Xalapa invita al público en general a su Escuela de Verano Robótica 2017 para niños, jóvenes y adultos, que se llevará a cabo del 14 al 22 de julio en Xalapa, Veracruz, México. Donde impartiremos cursos de robótica (y Raspberry Pi) independientes de dos o cuatro días:
  • Curso Raspberry Pi, 14 y 15 de julio, intensivo, 12 horas, dirigido a jóvenes y adultos.
  • Curso Robótica Lego NXT, 17 al 20 de julio, matutino, 16 horas, dirigido a niños y jóvenes.
  • Curso Robótica Arduino, 17 al 20 de julio, vespertino, 16 horas, dirigido a niños y jóvenes.
  • Curso Robótica Lego EV3, 21 y 22 de julio, intensivo, 12 horas, dirigido a jóvenes y adultos.

¿Conoces a algún niño o joven fuera de Xalapa a quien le gustaría aprender de robótica? Llévalo a Xalapa un fin de semana a tomar nuestro Curso Robótica Lego Ev3, o mejor aún, una semana completa para tomar dos o tres cursos de robótica.

NOTA: Tenemos descuentos en inscripción temprana, hasta el 30 de junio.

Puedes ver más información en nuestra página Escuela de Verano Robótica 2017, o escribirnos en nuestra página de contacto o al correo electrónico irox@robotsa.com.

El iRoX es sede de los equipos de robótica Galácticos, formados por niños que han obtenido los siguientes logros:

Lego Mindstorms EV3 código fuente disponible

Xander Soldaat publicó en 2013 un artículo en su blog botbench.com, dando a conocer que el código fuente del Lego Mindstorms EV3 está disponible para uso personal. Ver Enlace.

El código fuente está cargado en el espacio Mindboards Github: [LINK]. De donde se puede clonar el repositorio.

Entre los requisitos que Xander menciona para modificar el código fuente están:

  • Una máquina con Linux (puede ser virtual).
  • Eclipse.
  • Java JRE.
  • Code Sourcery Lite para ARM.
  • Un adaptador USB a puerto serial.
  • Una tarjeta SD.
  • Alicates de punta plana.
  • Un adaptador Netgear WNA1100 WiFi.

Si te gustan los robots Lego Mindstorms EV3, los retos de programación y te gustaría entra al mundo del desarrollo de código abierto (open source), este es un proyecto donde podrás aprender mucho e incluso hacer tus propias aportaciones.

Esta es la página de Xander: http://botbench.com/blog/2013/07/31/lego-mindstorms-ev3-source-code-available/

Robot Lego NXT Curiosito, un explorador… ¿de planetas?

Mars Rover – Lego Mindstorms NXT – Robot tipo Rover para exploración de Marte.

curiosity-mars-rover-medEn esta página se muestra el robot Lego Mindstorms NXT Curiosito, tipo Mars Rover (explorador de Marte) para simular la exploración de planetas o satélites. Está inspirado en el diseño de los robots exploradores del planeta Marte como Spirit, Oportunity o Curiosity.

Actualmente, Curiosity está explorando el planeta Marte, y se puede leer mucha información de la misión en el sitio web de la NASA, en la dirección http://mars.nasa.gov/msl/.

La misión de Curiosity es responder la pregunta: ¿Alguna vez pudo haber en Marte pequeñas formas de vida llamadas microbios?

El robot Lego NXT Curiosito, un explorador… ¿de planetas?

La intención de construir este robot fue como ejemplo para el curso Robótica en la exploración espacial del Instituto de Robótica de Xalapa, por motivo de su participación en la Semana Mundial del Espacio 2016, coordinado por la Agencia Espacial Mexicana.

lego-nxt-curiosito

Este robot está armado con las siguientes piezas:

  • Piezas de Lego Mindstorms NXT
  • 1 NXT
  • 3 Servomotores del Lego Mindstorms NXT
  • 4 ruedas omnidireccionales para eje Lego
  • 1 Cámara GoPro Hero 3

No hay instructivo, la idea de esta página es que el lector haga su propio robot Lego NXT Curiosito. En lugar de las ruedas omnidireccionales se pueden usar simplemente rines, sin la llanta para que el robot pueda girar libremente. También, en lugar de la cámara GoPro se puede usar un teléfono celular.

Programación de Robots Lego NXT con Java

En esta presentación se proporciona al lector los conocimientos básicos para programar robots Lego Mindstorms NXT usando el lenguaje de programación Java. Se construye un robot móvil con los motores y sensores del paquete NXT y se usan algunos métodos básicos Java para el NXT.

Para los ejemplos de programación en Java se usa el robot NXT TaskBot, cuyo instructivo de armado se puede descargar de la siguiente dirección:

Clase nxbot

import lejos.nxt.*;
/**
* Programación de Robots Lego NXT con Java (Noviembre-2009)
* @author Julio C. Sandria Reynoso
*/
public class nxbot {
  public static void avanza(int ms) throws InterruptedException {
    Motor.A.forward();
    Motor.C.forward();
    Thread.sleep(ms); /* espera ms milisegundos */
  }
  public static void retrocede(int ms) throws InterruptedException {
    Motor.A.backward();
    Motor.C.backward();
    Thread.sleep(ms);
  }
  public static void alto() {
    Motor.A.stop();
    Motor.C.stop();
  }
}

Presentation · October 2010
DOI: 10.13140/RG.2.2.21919.15521
Disponible en https://www.researchgate.net/publication/317300574.

Para profundizar más en la programación orientada a objetos, clases, interfaces, herencia, etc., ver la siguiente entrada:

Programación de Robots Lego Mindstorms NXT con Java. Tema 3 Java para NXT

Esta presentación, corresponde a uno de los temas tratados en el Curso de Robótica a nivel licenciatura impartido por el autor en el Tecnológico de Monterrey Campus Zacatecas.

Este tema enfatiza la programación orientada a objetos con Java para los robots Lego Mindstorms NXT. Se ilustra la creación de clases, objetos e interfaces. Se ejemplifica la herencia, el uso de métodos, tipos de datos y arreglos en Java, así como el control de flujo de programas y el manejo de excepciones. Todo esto aplicado en un robot móvil Lego.

Clase CarBot

importlejos.nxt.*;
public class CarBotextends Thread implements ManioBot {
  public void avanza() {
    Motor.B.forward(); Motor.C.backward(); pausa(500);
  }
  public void derecha() {
    Motor.B.backward(); Motor.C.backward(); pausa(500);
  }
  public void frena() {
    Motor.B.stop(); Motor.C.stop();
  }
  private void pausa(intmSegundos) {
    try {
      Thread.sleep(mSegundos);
    } catch(InterruptedExceptione) {}
  }
}

Presentation · February 2010
DOI: 10.13140/RG.2.2.24016.30721
Disponible en https://www.researchgate.net/publication/317302716.

Para detalles básicos sobre los robots Lego Mindstorms NXT y la instalación del software necesario para programarlos en Java, ver la siguiente entrada:

Prototipo de robot Lego futbolista programado en Java

En este documento se presenta un prototipo de robot futbolista construido con el paquete Lego Mindstirms Robotics Invention System 2.0 y programado en Java usando lejos. En este artículo se presenta una introducción a los robots futbolistas y la construcción inicial y programación básica del robot Lego futbolista (RoLeF).

Technical Report · February 2007
DOI: 10.13140/RG.2.2.10156.67208

Aprendiendo y aplicando Inteligencia Artificial con Robots Móviles

Aprender inteligencia artificial a veces es una tarea muy frustrante cuando intentas entenderlo con mucha teoría y un poco de práctica. Este artículo pretende ilustrar que el aprendizaje de la inteligencia artificial podría ser atractivo y de entretenimiento cuando intentas construir robots que muestren un comportamiento inteligente como ver, oír, hablar, moverse, e incluso aprender. Usamos Robots Lego móviles y Java para aprender y aplicar algunas técnicas de Inteligencia Artificial como redes neuronales, algoritmos genéticos, visión por computadora, reconocimiento de voz y síntesis de voz.

Tabla 1. Tecnologías Java usadas con robots Lego

Java Technology Mean and use
J2SDK Java 2 Software Development Kit to compile and run Java programs
LeJOS Lego Java Operating System to run Java programs inside the RCX
LMbpn A Lego Mindstorms Backpropagation Neural Network (own)
LMsga A Lego Mindstorms Simple Genetic Algorithm (own)
JFM Java Media Framework for Computer Vision
JSAPI & Sphinx Java Speech API and Sphinx for Speech Recognition
JSAPI & Sphinx Java Speech API and Sphinx for Speech Synthesis

Artículo en inglés:
Sandria Reynoso, Julio César, Mario Morales García y Arturo Mendoza Rendón. 2006. Learning and applying artificial intelligence with mobile robots. Research in Computer Science. Vol. 20, pp. 191-198.
Disponible en https://www.researchgate.net/publication/310771450.

Una red neuronal para robots Lego Java

Aprende a programar robots Lego Mindstorms inteligentes con Java

Los desarrolladores pueden construir robots inteligentes con Java, ya que proporciona APIs para sistemas de programación que pueden ver, oír, hablar, moverse e incluso aprender, utilizando redes neuronales, que son algoritmos que imitan a nuestro cerebro.

Este artículo muestra cómo desarrollar un robot que puede aprender mediante el algoritmo de propagación hacia atrás (backpropagation), una red neuronal básica, y su implementación en un Lego Roverbot. Utilizando el algoritmo y Java, el Roverbot -un robot Lego vehículo- puede aprender algunas reglas básicas para moverse hacia adelante, hacia atrás, izquierda y derecha.

Artículo:
Sandria Reynoso, Julio César. 2005. A neural network for Java Lego robots. JavaWorld, May 16.
Disponible en http://www.javaworld.com/article/2071879.
PDF en https://www.researchgate.net/publication/310771385.

Construcción y Programación de robots limpiadores con Lego Mindstorms y Java

En este Informe Técnico se muestra el proceso de construcción de robots limpiadores usando paquetes Lego Mindstorms Robotics Invention System 2.0 y su programación con el lenguaje Java sobre leJOS (Lego Java Operating System). Los dos robots mostrados son los ganadores del segundo y tercer lugar del Primer Torneo Mexicano de Robots Limpiadores organizado por el Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE), la Universidad Veracruzana (UV) y la Sección Puebla del Institute of Electric and Electronic Engineers (IEEE) en las instalaciones del INAOE en Tonantzintla, Puebla, en agosto de 2004.

Dichos robots fueron construidos y programados por los autores de este informe, profesor y alumnos de octavo semestre de la carrera de Ingeniería en Sistemas de Cómputo Administrativo de la Universidad de Xalapa (UX). Este trabajo es resultado del curso corto Programación en Java con robots Lego Mindstorms y del curso de asignatura Inteligencia Artificial, ambos impartidos por el primer autor en la UX.

Technical Report · December 2004
DOI: 10.13140/RG.2.2.25789.67048 · 
Disponible en: www.researchgate.net/publication/310674457