Beruflich Dokumente
Kultur Dokumente
ELECTRÓNICA
TABLA DE CONTENIDOS
1. OBJETIVOS .......................................................................................................................................................... 1
2. INTRODUCCIÓN .................................................................................................................................................. 2
2.1. LEGO MINDSTORMS EV3 ............................................................................................................................................... 2
2.2. COMUNICACIONES INALÁMBRICAS EN EL LEGO MIDNSTORMS EV3 ......................................................................................... 4
2.3. EMPAREJAMIENTO CON EL EV3 USANDO BLUETOOTH ........................................................................................................... 4
2.4. COMUNICACIÓN USANDO SOCKETS ................................................................................................................................... 5
2.5. MODELO CINEMÁTICO DIFERENCIAL ................................................................................................................................. 6
2.6. MODELO CINEMÁTICO ACKERMAN ................................................................................................................................... 7
3. LEJOS .................................................................................................................................................................. 7
3.1. INSTALACIÓN ................................................................................................................................................................ 8
3.2. JAVA........................................................................................................................................................................... 8
3.3. LEJOS ......................................................................................................................................................................... 8
3.4. VARIABLES DE ENTORNO – OPCIONAL ............................................................................................................................. 11
3.5. COMPILAR Y CORRER UN PROGRAMA EN EL ROBOT ........................................................................................................... 12
3.6. DESCARGAR Y EJECUTAR PROGRAMAS EN EL BLOQUE EV3 .................................................................................................. 13
4. PROCEDIMIENTO ...............................................................................................................................................14
4.1. PROCEDIMIENTO PARA ARMAR EL ROBOT EXPLORER.......................................................................................................... 14
4.2. ROBOT MÓVIL DIFERENCIAL.......................................................................................................................................... 28
4.3. ROBOT MÓVIL ACKERMAN ........................................................................................................................................... 29
5. BIBLIOGRAFÍA ....................................................................................................................................................29
1. OBJETIVOS
Experimentar con la API de LeJos para la programación de robots usando el Kit Lego
Mindstorms.
Experimentar con el modelo de movimiento de un robot diferencial.
Experimentar con el modelo de movimiento de un robot con configuración Ackerman.
1
2. INTRODUCCIÓN
2.1. LEGO MINDSTORMS EV3
Los productos Lego fueron diseñados con el propósito de ofrecer recursos de aprendizaje
manipulables que permitieran construir conocimiento. La plataforma Mindstorm EV3 es un
conjunto de piezas listas para ensamblarse, que nos permite crear objetos libremente o
siguiendo los modelos incluidos. Además nos brinda la posibilidad de animarlos a través de la
utilización de motores y de tener contacto con el ambiente por medio de los sensores que son
controlados por el bloque EV3 y así desarrollar una acción. En la Figura 2.1 se muestran las
piezas más importantes del kit:
2
Figura 2.2 Bloque EV3
El área de los botones de navegación se ilumina de diferentes colores dependiendo si el bloque
realiza alguna acción específica, esto es:
El kit tiene por defecto un modo de programación sencillo, destinado a personas sin ninguna
experiencia a previa en programación. En este curso se usará LeJOS, que es un entorno que
permite programar los Lego Mindstorms en Java. Este pequeño sistema operativo es de libre
distribución y código abierto y soporta Programación Orientada a Objetos, Hilos, Arreglos de
varias dimensiones, Sincronización, Operaciones en punto flotante y Herramientas matemáticas.
Para realizar esta práctica se le entrega a cada grupo (de máximo 4 estudiantes) un robot
construido con el kit Lego MindStorms NXT. Para que el robot ejecute las tareas se debe escribir
el código fuente del programa en lenguaje Java en cualquier editor de texto. Posteriormente el
programa debe compilarse desde la línea de comandos para generar un archivo ejecutable que
debe ser transmitido por medio de un cable USB al robot.
3
2.2. COMUNICACIONES INALÁMBRICAS EN EL LEGO MIDNSTORMS EV3
En esta guía de laboratorio se introducirá el trabajo del LEGO EV3 usando una comunicación
Bluetooth con el PC. Esta comunicación no puede ser realizada usando los métodos que se
empleaban con el LEGO NXT, en su lugar se tienen dos metodologías:
1. Usando RPC (Remote Procedure Calls), una tecnología de Java que permite instanciar
objetos remotamente. A través de esta tecnología se pude tener acceso a los motores y
sensores del EV3 remotamente y usando una comunicación Bluetooth.
2. Usando comunicación con Sockets, la cual es una tecnología de comunicación muy
sencilla de manejar y a través de la cual se puede crear un protocolo de comunicación
entre el PC y el EV3.
En esta guía de laboratorio se necesita tener una realimentación de posición del LEGO EV3 para
realizar la corrección de los errores sistemáticos. Con lo cual, la primera opción se descarta ya
que la API de LeJOS no posee realimentación de la posición de manera remota. Por tanto, se
usará la segunda opción en la cual el EV3 grabará los datos de posición y luego los transmitirá
al PC, donde se almacenarán en un archivo. Para lo cual, en esta sección de introducción se
deben realizar y entender ciertas tareas y conceptos previos.
4
Figura 2.4 Procedimiento para conectar el EV3 como un punto de acceso a través de Bluetooth.
5
Básicamente se requieren dos datos importantes: 1. El nombre o dirección IP del servidor, y 2.
El número del puerto a través del cual se está prestando el servicio. Desde el punto de vista de
programación, básicamente se tienen las clases servidora o ServerSocket y la clase cliente
Socket.
En este caso, el servidor será el robot EV3 quien proveerá los datos hacia el PC quien será el
cliente. El IP en el cual se presta el servicio es el 10.0.1.1 y a través del puerto 8080.
(1)
Donde, CR es el radio de las ruedas, bR es la separación de las ruedas, WdR y WiR son las
velocidades rotacionales de las ruedas derecha e izquierda, y [x’ y’ ’]T es el vector de estado
del robot.
En esta práctica de laboratorio la clase de LeJos que implementa este modelo se llama
DifferentialPilot. Y se empleará para mover un robot diferencial a lo largo de una trayectoria
predeterminada.
6
2.6. MODELO CINEMÁTICO ACKERMAN
(2)
Donde, VW es la velocidad lineal de las ruedas delanteras, R es la orientación de las ruedas
delanteras, LR es la separación entre ejes, y [x’ y’ ’]T es el vector de estado.
3. LEJOS
leJOS LEGO MINDSTORMS es un ambiente de programación en Java para LEGO MINDSTORMS
® que permite programar robots LEGO en Java. Consiste en:
Firmware de Remplazo para el bloque LEGO MINDSTORMS, que incluye Máquina Virtual
de Java.
Una biblioteca de clases Java (classes.jar) que implementan el API (Application
Programming Interface) de leJOS.
Una conexión entre clases Java de los usuarios con classes.jar para crear un archivo
binario que puede cargarse y ejecutarse en el bloque LEGO MINDSTORMS.
Herramientas de PC para actualizar el firmware, cargar programas, depurar, y muchas
otras funciones.
Un API para el PC, para escribir programas que se comunican con programas de lejos
LEGO MINDSTORMS vía USB o Bluetooth, o bien usando el Protocolo de Comunicaciones
de LEGO.
Muchos Archivos de ejemplos
7
Como leJOS es un reemplazo de firmware, se debe descargar el nuevo firmware de leJOS, y se
borrará el firmware estándar de LEGO MINDSTORMS. Esto borrará cualquier archivo asociado al
firmware de LEGO. Sin embargo, este se puede recuperar usando el software de LEGO.
Finalmente es importante destacar que esta guía fue creada usando información de la página
oficial de leJOS, http://lejos.sourceforge.net/
3.1. INSTALACIÓN
Usted tiene disponible el siguiente software:
JAVA - Java 7 u 8, preferiblemente Java 7.
Win32DiskImager 0.9.5 -
https://sourceforge.net/projects/win32diskimager/files/Archive/
SD Card Formatter V4 - https://www.sdcard.org/downloads/formatter_4/
HARDWARE – Memoria SD de mínimo 2Gb y máximo 32Gb.
LEJOS - leJOS_EV3_0.9.1-beta_win32_setup.exe
Oracle JRE para EV3 - ejre-7u60-fcs-b13-linux-arm-sflt-headless-18_dec_2014.tar
3.2. JAVA
Usted necesitará tener instalado el software de JAVA JDK (Java Development Kit) en su
computador. No es suficiente tener instalado JRE (Java Runtime Environment), ya que éste no
le permitirá compilar programas JAVA.
La última actualización de JDK puede descargarse de http://java.com/. Los trabajos en leJOS
EV3 se ejecutan con las versiones 7 u 8 de Java, pero se prefiere la 7 de 32bits.
3.3. LEJOS
Puede descargar el software de LeJOS EV3 de la página de lejos:
http://sourceforge.net/projects/ev3.lejos.p/files/ Se le recomienda que use el Instalador de
Windows, pero hay una versión ZIP que puede usar si prefiere realizar una instalación manual.
Los programas de ejemplo de la presente guía fueron realizados usando leJOS_0.9. Sin embargo,
usted puede elegir instalar una versión posterior sin que haya conflicto entre los programas,
pero teniendo en cuenta que deberá cambiar algunas instrucciones en el código de tal forma que
el programa pueda ser compilado.
Ejecute leJOS_EV3_0.9.0-beta_win32_setup.exe y siga las instrucciones en pantalla. Puede
instalar el software y guardar los proyectos creados en las carpetas que prefiera (no es necesario
que sea en la misma carpeta que JDK). Las pantallas que verá son las mostradas en la Figura
3.1.
8
9
Figura 3.1 Instalación LeJos EV3
Luego de terminar la instalación del software, el último paso es la creación de la imagen de inicio
del EV3 para LeJos. Esto requiere de una SD de mínimo 2GB y máximo 32Gb, la cual debe tener
un formato de FAT32 y debe estar completamente vacía.
En este punto se necesitan dos archivos: la imagen de LeJos que se solicita en el primer cuadro
de texto, y el JRE de Oracle para EV3 que debe ser descargado previamente. Luego estos
archivos se copian en la SD y al terminar el bloque EV3 iniciará con el firmware de LeJos en lugar
de su original.
Sin embargo, existe la posibilidad que la SD quede mal formateada. En este caso, existe un
método alternativo que se resume a continuación (Ver Figura 3.2):
1. Introducir la SD en el slot de su PC y darle formato con el SDFormatter V4, Figura 3.2a y 3.2b.
2. Al acabar el formato, se necesita crear una imagen sobre la SD usando el programa
Win32DiskImager y el archivo imagen SD500.img que se encuentra en el directorio de
instalación de LeJos, ver Figura 3.2c y 3.2d.
3. Una vez la imagen está creada, la SD no tiene archivo alguno. El próximo paso es descomprimir el
archivo lejosimage.zip el cual se encuentra en el directorio de instalación de LeJos, ver Figura
3.2e. Finalmente, los archivos descomprimidos quedan como se muestra en la Figura 3.2f.
4. El último paso es grabar la JRE de ARM en la SD, es decir el archivo: ejre-7u60-fcs-b13-linux-
arm-sflt-headless-18_dec_2014.tar.
5. Al finalizar se extrae la SD, se ubica en el slot del bloque EV3 y LeJos estará disponible para usarse.
a) b)
10
c) d)
e) f)
g)
11
NXJ_HOME C:\Archivos de programa\leJOS NXJ
JAVA_HOME C:\Archivos de programa (x86)\Java\jdk1.7.0_79
Si alguna de estas no está creada, haga clic en “nueva” e introduzca estos datos.
La diferencia en crear estas variables como variables de sistema o usuario implica que Lejos NXJ
esté disponible sólo para todos los usuarios ó para el usuario actual.
Así mismo, identifique la variable “Path” en la ventana inferior de la ventana de “variables del
entorno” y haga doble clic sobre ella. Usted debe verificar que se encuentren:
C:\Archivos de programa\leJOS NXJ\bin; C:\Archivos de programa (x86)\Java\jdk1.7.0_79\bin
Note que se trata de las direcciones dadas arriba a las variables JAVA_HOME y NXT_HOME
adicionando \bin al final. Si no existen, escriba las líneas separando las precedentes con un punto
y coma.
El incluir al camino la sentencia “C:\Archivos de programa (x86)\Java\jdk1.7.0_79\bin”, permite
que se puedan usar desde la consola de comandos (cmd) los comandos como javac y java. Estos
comandos se introducen en la siguiente sección.
a) b)
12
Figura 3.4 Crear un proyecto en Eclipse para LeJOS EV3.
a) b)
13
c) d)
e) f)
Figura 3.5 Creación del dispositivo de red por USB para el bloque EV3.
4. PROCEDIMIENTO
En términos generales en esta práctica se usará el robot móvil para validar el modelo cinemático
de una plataforma diferencial. La sección 4.1 muestra el procedimiento de construcción del robot
diferencial. La sección 4.2 muestra cómo obtener los datos de odometría de un robot diferencial
y graficarlos en el PC. La sección 4.3 propone al estudiante la realización del mismo esquema,
pero para un robot Ackerman.
14
Figura 4.1 Explorer EV3 y tamaño de las fichas en el Lego EV3
El set de Lego EV3 cuenta con piezas las cuales se miden contando la cantidad de agujeros que
posean (en el caso de las fichas tipo A de la Figura 4.1, el tamaño está dado por su equivalente
a las fichas tipo B) y se especifican en las guías de construcción.
Para la realización del ejercicio guiado, se necesitan algunos obstáculos para ubicar en un espacio
plano y despejado, que pueden ser cajas, pues éstas se pueden cambiar de posición y ubicarlas
para ponerle “trampas” al robot que se va a programar. Por otro lado es necesaria una fuente
de luz, ya sea una linterna, un flash, o cualquier elemento que pueda emitir luz más potente que
la luz ambiente. Para construir el Explorer mostrado en la Figura 4.1, se necesita la lista de
elementos que se muestran en la Tabla 4.1.
Cantida Cantida
Componente Componente
d d
2 2
4 2
15
2 1
2 1
1 2
2 2
4 2
4 28
2 2
4 4
16
2 10
1 1
1 1
1 1
Después de tener las piezas necesarias mostradas en la Tabla 4.1, se debe seguir la guía de
construcción del Explorer EV3 mostrada a continuación, la cual indica paso a paso la construcción
del robot para poder realizar el ejercicio guiado. NOTA IMPORTANTE: al final se debe modificar
la construcción para incluir DOS y no UN sensor de contacto.
17
2 3
4 5
18
7
8
10
19
1 1
1 2
13
1
5
20
1
4
16
1 1
7 8
21
1 2
9 0
2
1
22
22
2 2
3 4
2 2
5 6
23
2 2
7 8
2
9
24
30
3 3
1 2
3 3
3 4
25
3
5
36
3
7
26
3 3
8 9
4 4
0 1
27
4 4
2 3
Figura 4.2 Pasos del procedimiento para la realización del cuadrado por el EV3 y el PC.
Una vez haya conectado su EV3 como un punto de acceso a través de Bluetooth, el siguiente
procedimiento debe ser realizado, ver Figura 4.2:
28
1. Importe a Eclipse los proyectos RMev3PCSquareNET y RMev3SquareNET.
2. Ejecute el proyecto RMev3SquareNET en el EV3.
3. Ejecute el proyecto RMev3PCSquareNET en el PC.
4. El programa en el PC enviará una petición de conexión al Servidor que se está ejecutando
en el EV3, una vez se conectan, se envía una trama de datos informando que se desea
hacer un cuadrado de tamaño 100cm.
5. Luego, el robot inicia la realización del cuadrado.
6. Al terminar, el EV3 envía los datos de posición X, Y, al PC.
7. El PC recibe estos datos y los almacena en un archivo titulado “robotSquare.txt” que se
encuentra en la raíz de su proyecto de Elclipse.
8. Usando Matlab, Excel o cualquier software de graficación observe la trayectoria reportada
por el robot. Observará una figura similar a la mostrada en la Figura No. 4.3.
5. BIBLIOGRAFÍA
[1] Sitio WEB LeJOS, http://lejos.sourceforge.net/
[2] Sebastian Thrun, Wolfram Burgard, Dieter Fox, “Probabilistic Robotics”, MIT Press, 2006.
[3] Sitio WEB de Allan Caine, http://lejosnxt.blogspot.com/
[4] OLLERO, Aníbal. Robótica. Manipuladores y robots móviles. España: Marcombo Editores, 2001.
[5] J. Craig, "Introduction to robotics," in Addison Wesley, 2da ed, 1989.
[6] Borenstein, J.; Liqiang Feng, "Measurement and correction of systematic odometry errors in mobile robots," Robotics
and Automation, IEEE Transactions on , vol.12, no.6, pp.869,880, Dec 1996.
29