Aplicación iRobot Create y LynxMotion
UNIVERSIDAD NACIONAL DE INGENIERÍAFacultad de Ingeniería Industrial y de Sistemas
INTELIGENCIA ARTIFICIAL
Planteamiento del ProblemaEn nuestra vida diaria, hay tareas rutinarias que quisiéramos que puedan ser realizadas por máquinas. Una de ellas es el encendido de la luz al entrar a una habitación o apagarla cuando nos disponemos a salir. Pues en la actualidad, es posible utilizar robots para realizar estas tareas.¿Cómo hacer que dos robots realicen esta
tarea?
Objetivo del ProyectoLograr que el iRobot Create y el LynxMotion puedan trabajar en conjunto para lograr un
objetivo: Prender un foco y llevarlo de un punto a otro.
Modelo de la Solución
Acondicionar el Ambiente y a los robots para el desarrollo de la
tarea asignada.
Elaborar el programa en VPL para una trayectoria (Zig-Zag) definida para
el iRobot
Desarrollar un Controlador de propósito
general para el LynxMotion
Ejecución, por parte de los robots, de la Tarea
Asignada
Descripción del Medio Ambiente
Accesible, determinístico, estático y discreto
Descripción del AgenteSensores: Para el presente trabajo no hicimos uso de
ningún sensor.Efectores: Los motores del iRobot Create y el gripper del
Lynx Motion.Medios de Comunicación: El espacio por donde se
trasmite la señal del Bluetooth para el iRobot Create y el Cable Serial para Lynx Motion.
Descripción del Agente Percepciones: Por el momento, ninguno de los robots usados realiza
alguna percepción del medio en el que se encuentra. Acciones: El iRobot Create realiza un desplazamiento en zigzag
mediante sus ruedas y el LynxMotion realiza movimientos mediante sus motores y enciende el interruptor usando su gripper, para luego recoger el foco.
Protocolos de comunicación: Bluetooth para el iRobot Create y protocolo RS232 para Lynx Motion.
Trayectoria del iRobot Create(Zigzag)
Iniciamos el iRobot Create en modo Full, luego podemos iniciar el movimiento con el Prompt que sale del SimpleDialog.
Lo que permite habilitar el movimiento con EnableDrive.
Trayectoria del iRobot Create(Zigzag)
Mediante conexiones RotateDegrees y DriveDistance, iremos formando el zigzag cambiando ángulos y distancias, todo esto usando el servicio de iRobotGenericDrive.
Trayectoria del iRobot Create(Zigzag)
Al finalizar la primera parte del recorrido, usamos la conexión RoombaPlaySong en el servicio iRobotCreateRoomba para marcar esta etapa.
Finalmente, hacemos uso de la actividad Regreso que contiene el recorrido de vuelta.
Movimiento del LynxMotionMODELO CINEMÁTICO:
Para la programación del movimiento, se tuvo que construir una base de datos con todas las posibles combinaciones de movimientos en el espacio. Para lo cual se necesitó construir el Modelo Cinemático.
Matriz DH:Articulación α1 ai θi di
θ1 d1π/2
2 -π/2 θ23 0 θ3
a2 θ4a3
1
4
Articulación α1 ai θi di
4 0 θ43 0 θ3
a1 θ20
π/2 - π/21 θ1
2
De la Base al Efector Del Efector a la Base
Movimiento del LynxMotionMatriz de Transformación:
Función G:
T =
− St1(a3 ∗C(t2 + t3 + t4) + a2 ∗C(t2 + t3) + a1 ∗St2)Ct1(a3 ∗C(t2 + t3 + t4) + a2 ∗C(t2 + t3) + a1 ∗St2) − a3 ∗S(t2 + t3 + t4) − a2 ∗S(t2 + t3) + a1 ∗Ct2 + d1 g =
Movimiento del LynxMotionCONTROLADOR EN VB .NET:
Comunicación con el LynxMotion: Modelo de Comunicación:
Movimiento del LynxMotion Secuencia de Comandos:
En primer lugar, debemos tener en cuenta la enumeración de los motores según el protocolo utilizado. El siguiente esquema muestra esta enumeración de los motores del robot:
Movimiento del LynxMotion Secuencia de Comandos:
La forma general de los comandos (cadena de caracteres) con este protocolo es:
De donde, los números que van antes de cada letra P, hacen referencia a cada uno de los motores del LynxMotion.
Movimiento del LynxMotion Secuencia de Comandos:
Los valores <pw0>, <pw1>, <pw2>, <pw3> y <pw4> son, en un lenguaje entendible, el “posición de giro” de cada motor, que determinará los ángulos que éste recorra. Las unidades originales de esta “posición de giro” está en microsegundos y los valores van desde 500 hasta 2500 en cada uno de los motores.La proporción entre la variación de estos valores y el sistema angular sexagesimal es el siguiente (para cada motor):
Microsegundosen el Protocolo
RS232Estado
500 Abierto2500 Cerrado
Para el Motor 0 (Gripper)Nro.Motor
Microsegundosen el Protocolo RS232
GradosSexagesimales
1 100 µs 10°2 100 µs -10°3 100 µs 10°4 100 µs 11.1111°
Movimiento del LynxMotion
Secuencia de Comandos: El valor de <time> es el tiempo, en milisegundos, que tomará el robot
en ejecutar todas las órdenes (las ejecuta de manera simultánea). Y por último, <cr> es el retorno de carro (el ASCII 13 o el presionado
de la tecla ENTER).
Movimiento del LynxMotion Controlador de Propósito General en Visual Basic .NET
Tomando en cuenta los conceptos previos, sobre el Modelo de Cinemática y el Protocolo de Comunicación usado, desarrollamos un programa Controlador de Propósito General para el LynxMotion.
Movimiento del LynxMotionControlador de Propósito General en Visual Basic .NET
Zona de Conexión:En esta zona ejecutamos la conexión y desconexión del Robot
a la interfaz de comunicaciones del Puerto Serial.Aquí son requeridos dos parámetros de entrada: el Puerto al
que se haya conectado el Robot (En nuestro caso “COM1”) y el valor del parámetro Baud Rate para el funcionamiento del Robot (esto depende de la configuración física de la tarjeta del robot, usamos el valor de 115,200 por ser la configuración física que nosotros tenemos) (Para mayor información sobre este parámetro revisar el SSC-32 Manual que se encuentra en la web del fabricante http://www.lynxmotion.com).
Movimiento del LynxMotion Controlador de Propósito General en Visual Basic .NET
Cuadro de comandos enviados: Aquí se muestran todas las cadenzas de caracteres que se hayan enviado a
través del puerto serial durante la ejecución del programa.
• Zona de envío de comandos de forma manual:• En esta sección se puede digitar la secuencia de comandos que se deseen
enviar por el puerto serial de forma manual (El programa no incluye ninguna validación sobre el tipo de cadenas de texto que se envíen).
Movimiento del LynxMotion Controlador de Propósito General en Visual Basic .NET
Zona de Secuencias de comandos predeterminados: En esta sección se muestran botones que incluyen algunas
secuencias de comandos predeterminados, como son la ubicación del robot en la posición inicial que definimos anteriormente, y las secuencias Pick y Leave, que son ejemplos de secuencias de comandos que se envían en intervalos de tiempo definidos para generar un movimiento contínuo del robot (Al igual que estas secuencias de comandos, se pueden programar otras usando la misma lógica y dependiendo de la aplicación).
Movimiento del LynxMotion Controlador de Propósito General en Visual Basic .NET
Zona de Movimiento independiente de los motores: Esta sección del Controlador nos permite rotar independientemente los
motores, las entradas para cada motor están en ángulos sexagesimales (valores enteros). Esta sección se puede utilizar para hacer medidas y experimentos con el robot.
Movimiento del LynxMotion Controlador de Propósito General en Visual Basic .NET
Zona de Ubicación directa del Gripper en cualquier posición del espacio:
Ésta es la sección principal de este controlador para efectos del presente proyecto. Pues recibe como entrada las coordenadas (centímetros en números reales), y consigue la secuencia de comandos necesaria para ubicar el efector del robot en dicha posición.
• Para esto el programa hace uso de una base de datos en MS ACCESS, y el contenido de esta base de datos en el que describimos en la sección de “Construcción del Modelo de Cinemática Inversa” del presente trabajo. Cabe resaltar que la velocidad con la que se consiga el resultado dependerá de las características de la PC del usuario.
Movimiento del LynxMotionUso del Controlador en la solución del problema:Finalmente, para usar este controlador desarrollado en
la aplicación del presente proyecto, usaremos la sección de ubicación directa del Gripper en el espacio, de modo que podamos darle las coordenadas de puntos específicos en el espacio, que queremos que recorra para ejecutar una determinada tarea, y el programa nos devuelva la secuencia de comandos para alcanzar cada uno de esos puntos. De ese modo poder enviar luego un grupo de comandos es forma secuencial para que el robot ejecute el movimiento de forma continua.
Cabe resaltar que para cada experimento, la secuencia de coordenadas que se vayan a ingresar, y por consiguiente la secuencia de comandos del resultado, serán distintas.
Movimiento del LynxMotion Uso del Controlador en la solución del problema:
A modo de ejemplo, para uno de los experimentos que realizamos, se determinó la siguiente secuencia de coordenadas del actuador del robot para poder encender un foco y luego asirlo.
Para presionar el interruptor:
Para encender el foco:
.
Posición x y z Estado del Gripper1 (home) 0 25 18 Cerrado
2 1.76 0.88 -7.25 Cerrado
3 -9.06 -4.54 11.23 Cerrado
4 1.76 0.88 -7.25 Cerrado
Posición x y z Estado del Gripper5 2.48 -2.34 0.14 Abierto
6 -6.92 6.52 6.06 Abierto
7 -6.92 6.52 6.06 Cerrado
8 (home) 0 25 18 Cerrado
Movimiento del LynxMotionUso del Controlador en la solución del
problema:De ese modo la secuencia de comandos (obtenidas por
el programa) que necesitaríamos para completar la tarea con el robot es la siguiente:
Orden Secuencia de Comandos1 #0p 500 #1p 1800 #2p 1700 #3p 1400 #4p 1500 T2500
2 #0p 2500 #1p 2400 #2p 900 #3p 1050 #4p 500 T2500
3 #0p 2500 #1p 1600 #2p 1400 #3p 550 #4p 500 T20
4 #0p 2500 #1p 2400 #2p 900 #3p 1050 #4p 500 T1500
5 #0p 500 #1p 1450 #2p 1100 #3p 800 #4p 723 T2500
6 #0p 500 #1p 1450 #2p 1300 #3p 500 #4p 723 T2500
7 #0p 2500 #1p 1450 #2p 1300 #3p 500 #4p 723 T500
8 #0p 2500 #1p 1800 #2p 1700 #3p 1400 #4p 1500 T2500
Movimiento del LynxMotionUso del Controlador en la solución del problema:
Cabe resaltar que los valores para el tiempo lo determinamos de forma independiente, dependiendo en cada caso de la velocidad a la que queríamos que se ejecute el movimiento.
Finalmente procedemos a ingresar cada uno de estos comandos en la Zona de envío de comandos de forma manual, dándole el intervalo de tiempo necesario para cada movimiento.
Orden Secuencia de Comandos1 #0p 500 #1p 1800 #2p 1700 #3p 1400 #4p 1500 T2500
2 #0p 2500 #1p 2400 #2p 900 #3p 1050 #4p 500 T2500
3 #0p 2500 #1p 1600 #2p 1400 #3p 550 #4p 500 T20
4 #0p 2500 #1p 2400 #2p 900 #3p 1050 #4p 500 T1500
5 #0p 500 #1p 1450 #2p 1100 #3p 800 #4p 723 T2500
6 #0p 500 #1p 1450 #2p 1300 #3p 500 #4p 723 T2500
7 #0p 2500 #1p 1450 #2p 1300 #3p 500 #4p 723 T500
8 #0p 2500 #1p 1800 #2p 1700 #3p 1400 #4p 1500 T2500
Análisis de ResultadosiRobot Create:
RecorridoReal 296 598 597 600 298 297 599 601 599 299Teórico 300 600 600 600 300 300 600 600 600 300Error 0.0133 0.0033 0.0050 0.0000 0.0067 0.0100 0.0017 0.0017 0.0017 0.0033
Error 4.67%
GirosReal -58 119 -118 121 -117 59 178 -59 121 -119 121 -118 59Teórico -60 120 -120 120 -120 60 180 -60 120 -120 120 -120 60Error 0.0333 0.0083 0.0167 0.0083 0.0250 0.0167 0.0111 0.0167 0.0083 0.0083 0.0083 0.0167 0.0167
Error 19.44%
De lo anterior, podemos obtener que el rendimiento es de 87.94%
Análisis de ResultadosLynxMotion:
Para el caso de Lynxmotion en esta aplicación, podemos determinar el rendimiento en función de si consiguió encender y asir el foco, o no. Y como resultado del experimento, de un total de 20 pruebas, logró conseguir su objetivo 18 veces. De donde deducimos un rendimiento del 90%.
Conclusiones y RecomendacionesEs importante realizar varias pruebas, pues como
hemos calculado el error que se presenta en las acciones del agente puede mermar el rendimiento del mismo y por tanto, dificultar el cumplimiento del objetivo.
La operativa de montaje también es un punto a tomar en cuenta, dado que el LynxMotion usa un medio alámbrico para su comunicación con el computador fue un poco dificultoso realizar los movimientos junto al iRobot Create. Es por eso, que es recomendable para futuras aplicaciones usar un medio inalámbrico, como un dispositivo Bluetooth con puerto serial.
Conclusiones y RecomendacionesSi bien el método para calcular la cinemática inversa
del LynxMotion es preciso, el usar una base de datos de más de trece millones de registros disminuye su eficiencia. Debido a que si se ejecuta el programa con una computadora personal promedio, a la fecha actual, tarda aproximadamente 1 minuto en conseguir cada resultado.
El hecho de desarrollar un Controlador de propósito general para el LynxMotion, facilita en gran medida cualquier proceso de investigación que se pretenda realizar con este robot. Y por otro lado, permite agregar funcionalidad a cada aplicación que se desarrolle.
BibliografíaiRobot Corporation, Create Community : Projects
using iRobot Create : RoboMaid, 2006, SSC-32 Manual, v. 2.01XE. Jim Frye, 2009Sitio web sobre Robótica:
http://www.superrobotica.comSitio web del Departamento de Ingeniería de
Sistemas Telemáticos. Universidad Politécnica de Madrid:http: //polaris.dit.upm.es
Foro iRobot Create:http://crateforums.irobot.com/irobotcreate/board/message?board.id=Create_projects&thread.id=18 [Consulta: jueves, 28 de mayo de 2009]
Top Related