Diseño e Implementación de Un Sistema de Control para El Robot Móvil P3-AT Por Medio de Gestos Manuales

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

MASKAY 5(1), Dic 2015 Recibido (Received): 2015/06/15

ISSN 1390-6712 Aceptado (Accepted): 2015/09/10


1

Diseño e implementación de un sistema de control


para el robot móvil P3-AT por medio de gestos
manuales
Manuel Veintimilla, Rodolfo Gordillo, Paúl Ayala

Resumen—Este documento detalla como se construyó una manipulación del robot, impidiendo los choques o roces con
relación entre un usuario y un robot móvil a través de una objetos en el campo.
red cliente servidor inalámbrica utilizando el sensor Kinect para
la respectiva adquisicion de datos. El robot se mueve con los
gestos indicados por la persona, ya sea que se necesite explorar II. F UNDAMENTOS
o simplemente trasladar el robot. El usuario debe desarrollar la
destreza para manipular el robot siguiendo el manual de usuario Kinect fue presentado por Microsoft como el dispositivo
e iniciar con el simulador, así con este procedimiento se evita complementario para la consola de videojuegos Xbox 360®.
tener errores desde la conexión con el robot hasta la ejecución Es un controlador de juego que utiliza un sensor de mo-
de los comportamientos. Los comportamientos se ejecutan con vimiento para controlar todo el cuerpo, su interfaz natural
botones en la interfaz del cliente, y cada uno de forma exclusiva.
reconoce gestos, comandos de voz y objetos o imágenes, su
lanzamiento comercial se realizó en el 2010. La utilización
Index Terms—Kinect, simulador. de este dispositivo supone grandes avances en la tecnología
que presenta diferentes oportunidades para la investigación
I. I NTRODUCCIÓN en diversas áreas tanto científicas como médicas y hasta
espaciales[1].

E L siguiente trabajo sirve de base para proyectos a


futuro, debido a su configuración se puede utilizar en
actividades exploratorias y militares más concretamente; está
Tanto el sensor Kinect como el SDK, nos permiten realizar
a una amplia gama de aplicaciones como captura de video
en tiempo real, realizar análisis y modelación en tercera
diseñado para que a través de una red informática cliente- dimensión, reconocimiento de voz humana y desarrollo de
servidor el robot móvil interactúe con una persona quien va aplicaciones de manos libres, que se puedan controlar median-
a comandar los movimientos del mismo. Dentro de la red te la voz. Podemos construir una serie de aplicaciones para el
el cliente estará conectado a un sensor Kinect, que permitirá mundo real que dependiendo del área de desempeño nos abren
receptar los distintos gestos de una persona, los mismos que las puertas de diferentes estudios:
se transmitirán hacia el robot, no solo se enviaran estos gestos
Salud: Se puede construir diferentes aplicaciones para la
corporales sino que también se enviara diferentes comandos
salud, tales como la medición de ejercicio, los pacientes
para realizar tareas diversas como eventos de parada, o avanzar
de control, sus movimientos corporales, y entre otras.
a cierta posición ya sea de frente o en sentido opuesto,
Robótica: Se puede utilizar como un sistema de nave-
todas estos comportamientos serán descritos en detalle en la
gación para los robots, ya sea mediante el seguimiento
configuración de comportamientos del robot. En concreto la
de los gestos humanos, comandos de voz, o por los
función principal del proyecto será la de manejar el robot
movimientos corporales humanos.
móvil por medio de gestos realizados con las manos, dentro
Educación: Se puede construir diversas aplicaciones para
de esta área estará comprendido el avanzar de frente, parada,
los estudiantes y niños para educar y ayudar a que apren-
giros y retroceder. Cada conducta del robot, desde el manejo
dan las materias, por medio de sus gestos y comandos
por gestos manuales así como las introducidas por comandos
de voz.
deberán ser exclusivas, es decir, no se podrán realizar dos
Sistema de seguridad: Kinect se puede usar para el
comportamientos a la vez para evitar errores graves, que
desarrollo de los sistemas de seguridad donde se puede
afectarían la funcionalidad del robot o incluso la de todo el
realizar un seguimiento de los movimientos del cuerpo
proyecto. El servidor finalmente será el encargado de receptar
humano o de la cara y enviar las notificaciones.
todos los mensajes enviados por el cliente a través de la red,
Realidad virtual: Con la ayuda de la tecnología 3D y de
principalmente debe evitar que efectúen errores en la ejecución
seguimiento de gestos humanos, muchas aplicaciones de
de las órdenes del cliente y también permitir la fluidez en la
realidad virtual se puede construir utilizando el sensor de
Manuel Veintimilla Universidad de las Fuerzas Armadas ESPE, Sanqolquí, Kinect.
Ecuador, e-mail: [email protected]. Entrenamiento: Se puede utilizar como un entrenador
Rodolfo Gordillo Universidad de las Fuerzas Armadas ESPE, Sangolquí, mediante la medición de los movimientos de las arti-
Ecuador
Paúl Ayala, Universidad de las Fuerzas Armadas ESPE, Sangolquí, Ecuador, culaciones del cuerpo humano, proporcionando retroali-
[email protected] mentación en directo a los usuarios, si las articulaciones

17 MASKAY
2

se mueven de una manera apropiada mediante la com- etiquetados del “decision forrest” y genera los segmentos
paración de los movimientos con los datos almacenados corporales deducidos.
previamente. Una vez que todas las piezas están identificadas basados
Militar: Se puede usar para manipular aviones no tripu- en los datos etiquetados, el sensor identifica las articula-
lados inteligentes para espiar a las líneas enemigas ciones del cuerpo.
El sensor calcula entonces la vista 3D desde la parte
II-A. Funcionamiento del sensor superior, frontal y la izquierda de las articulaciones
propuestas.
El sensor Kinect tiene la capacidad de capturar una imagen
Finalmente, el sensor inicia el seguimiento del movimien-
3D primitiva de los objetos en frente, sin importar las con-
to del esqueleto y del cuerpo humano en base a los puntos
diciones de iluminación de la habitación. Utiliza un emisor
de articulación propuestos y la vista 3D.
infrarrojo y un receptor de profundidad infrarrojo que es un
sensor CMOS monocromo (semiconductor complementario de
III. A RQUITECTURA DEL SISTEMA
óxido de metal). La columna vertebral detrás de esta tecnología
es del chip PrimeSense, la figura(1) muestra el procedimiento Existen dos partes principales en este proyecto, el cliente y
del sensor para la captura de datos. el servidor, el cliente-PC está conectado a un sensor de Kinect.
Con la ayuda de este sensor se reconocerán varios gestos
diferentes. El cliente está conectado a través de Wi-Fi a un
servidor que procesa los comandos y los movimientos, en este
proyecto el servidor es una pc montada sobre la plataforma
del robot móvil ya que la comunicación inalámbrica de los
robots no está disponible. Esta aplicación se puede utilizar
en cualquiera de los robots móviles del laboratorio pues el
proyecto se enfoca en el movimiento de los robots y no
en las características individuales de cada uno, es decir se
podrá utilizar tanto en los robots Pioneer 3-DX como con
el Pioneer P3-AT, a excepción de elementos propios de cada
modelo como gripper o bumpers. El usuario escoge el modo
de conducir, el sensor percibe los movimientos y los transmite
al cliente, luego éste calcula el respectivo ángulo entre las
manos, y lo envía como texto al servidor por medio de la red
Figura 1. Procesamiento de datos de profundidad previamente configurada, el servidor realiza comparaciones
con la información enviada y ejecuta los movimientos, la
figura (2) describe la configuracion del sistema.
II-B. Funcionamiento de Skeleton Traking
El sensor Kinect devuelve los datos de profundidad de los
que podemos identificar fácilmente los píxeles que representan
a los individuos. El “skeleton traking” no sólo es sobre
la detección de las articulaciones mediante la lectura de la
información de los individuos; más bien, se trata de la lectura
del movimiento del cuerpo completo. En tiempo real se plantea
que el reconocimiento es difícil y desafiante debido a las
diferentes formas, tamaños, alturas y posturas del ser humano.
Para superar estos problemas y para realizar una localización
de diferentes articulaciones independientemente de la pose del
cuerpo, Kinect utiliza el “rendering pipeline”, que típicamente,
recibe la representación de una escena tridimensional como
entrada y genera una imagen en 2 dimensiones como salida.
Lo que sigue en el reconocimiento inmediato de poses, es
etiquetar las partes del cuerpo mediante la creación de segmen-
tos, esta creación segmentos se realiza haciendo coincidir los
datos probables con similitudes. Kinect utiliza una estructura Figura 2. Arquitectura de comunicación y adquisición de datos
de árbol de decisiones para que coincida con los datos de un
determinado tipo de cuerpo humano, este procedimiento se El cliente se desempeña a través de una interfaz de usuario,
conoce como “Decision Forrest”[2]. Son varios los algoritmos con las respectivas órdenes y/o comandos a ejecutar, al ponerse
y actividades que se realiza para usar el skeleton tracking: una persona frente al sensor, este comienza inmediatamente
Los datos de profundidad entran en el proceso de “ren- a detectar los movimientos, realiza un modelo del esqueleto
dering pipelines” y los hace coincidir con los datos de la persona en frente y posiciona las articulaciones, estos

18 MASKAY
3

datos son transmitidos al cliente para realizar operaciones. La la comunicación total, desde el usuario hasta el robot. El
interfaz de usuario se encarga de inicializar las funciones del P3-AT se moverá dependiendo de las acciones que envíe el
Kinect y del socket de comunicación, la figura(3) muestra el cliente, cada uno de los comportamientos está configurado en
diagrama de las operaciones del cliente, se busca conectar con el programa servidor, cuando se pida realizar una acción, ésta
el servidor, luego se puede escoger un modo de operación se realizará excluyendo a las demás, la figura(4) muestra la
hasta que el usuario opte por salir, en tal caso se finaliza la configuracion del servidor.
aplicación.

Figura 4. Diagrama de flujo del funcionamiento del programa servidor


Figura 3. Diagrama de flujo del funcionamiento del programa cliente

Después de ingresar la dirección IP y el puerto de comu- El primer paso es la inicialización de las librerías y se crea
nicación el cliente espera por la réplica del servidor, si se el grupo de acciones configuradas para cada comportamiento
concreta la conexión entonces se muestra el mensaje recibido. del robot. Al final el servidor siempre está esperando una
Si se selecciona el modo conducir, el método lanza un proceso respuesta del cliente si se envía “salir” termina la aplicación. El
asíncrono, para enviar el ángulo de rotación del robot. Una subproceso inicialización carga las librerías necesarias y crea
vez que se calcula el ángulo el proceso asíncrono toma los objetos robot y sonar, este último es agregado al robot y
ese dato y lo envía por el socket hacia el servidor, luego sirven para evitar las colisiones en cada comportamiento. La
actualiza el ángulo tomado de las posiciones de las manos y selección de comportamientos se realiza en un lazo donde cada
se vuelve a enviar, mientras no se cancele la acción mandar el dato recibido se compara para determinar la acción solicitada
ángulo el proceso se mantiene. Todo este proceso se mantiene por el cliente, y se mantiene en este lazo hasta que se pide
independiente del programa principal, así se ahorra tiempo de salir. Este proyecto propone una serie de comportamientos
procesamiento, y es más eficiente el uso de la memoria del para el robot, a continuación se muestra el conjunto de
computador. comportamientos que se permitirán para el robot móvil:
La aplicación del servidor se desarrolla en el robot Pioneer Comportamiento paseo: Realiza los movimientos y las
P3-AT, es necesario montar una PC tipo laptop en la plata- funciones del programa se aseguran que el robot no
forma del robot, en esta computadora se instala el servidor colisione con ningún obstáculo. Además se deben evitar
del proyecto, y se comunica con el robot por medio de puerto los obstáculos que están más lejos, finalmente cuando no
USB, cabe aclarar que para dicha comunicación es necesario hay ningún objeto frente al robot, éste se mueve con una
utilizar un cable de transmisión USB a serial, porque la pla- velocidad constante de 250 mm/s.
taforma del Pioneer no cuenta con este puerto. La aplicación Comportamiento distancia: Permite conducir el robot
del servidor con la programación de sus comportamientos en en una distancia específica, el robot se desplaza hacia
lenguaje C++, se puede realizar en el sistema operativo que se adelante si el parámetro es positivo y hacia atrás si es
desee, en este caso se usó Windows, y se debe incluir la librería negativo.
ARIA, exclusiva para la programación de los robots Pioneer. Comportamiento conducir: Este comportamiento se eje-
Una vez que se logra la comunicación entre el robot y la PC cuta directamente desde el cliente, para lo cual se re-
servidor, ya se puede interactuar con el cliente y así completar quiere de dos parámetros, ángulo y velocidad. En el

19 MASKAY
4

proceso de conducir por gestos, el dato que se recibe


principalmente es el ángulo, la velocidad es constante
para evitar que robot acelere indiscriminadamente, esta
es una forma de limitar los posibles errores que el usuario
puede cometer cuando se conduce el robot, dentro de este
coportamiento tambien se puede ejecutar la acciones de
parar por completo al robot o conducir en retroceso.
Comportamiento atrás: Este modo de operación permite
al robot la conducción en retroceso, con una velocidad
constante de 150 mm/s., así se evita que el usuario
conduzca el robot hacia un obstaculo.

III-A. Interfaz de usuario


La interfaz gráfica es el programa que interactúa direc-
tamente con el usuario y que le permite realizar todas las Figura 6. Interfaz de usuario, ventana de manejo por medio de gestos y
comportamientos
tareas definidas en este proyecto, aquí se valida todo aquello
que el cliente emite al servidor, para que este último se
dedique específicamente a ejecutar los comportamientos del
robot descritos anteriormente. El cliente debe empezar la es posible la comunicación con el robot se lanza una excepción
conexión con el servidor, el mismo que debe estar previamente informando un error y saliendo del programa, una vez que se
inicializado y en comunicación con el robot o el simulador, el establece la comunicación el programa se dispone a esperar al
usuario ingresar la dirección IP y el puerto de comunicación, usuario, la comunicación se establece principalmente entre el
así el servidor envía un mensaje “Hola Cliente” reconociendo servidor que opera directamente el robot y el cliente que envía
la conexión con el usuario, como se muestra en la figura(5). las instrucciones de movimiento ya sea por comandos o por
gestos manuales. Estas pruebas están realizadas tanto parar el
simulador como para el robot P3-AT. Para iniciar la aplicación
completa es necesario que el servidor esté conectado con robot
y el cliente debe estar conectado con el sensor, una vez hecho
esto ya se puede manejar el robot.
El programa controla el robot por medio de comandos
o por gestos manuales el cual es la aplicación principal,
para el correcto funcionamiento, el robot toma los valores de
velocidad y ángulo determinados por la posición de las manos.
El rango de ángulos que se puede ingresar va de -90° a 90°,
aunque no es necesario llegar a estos valores máximos pues el
robot gira con una velocidad de rotación y no con un ángulo
directamente. Para obtener el ángulo es necesario conseguir las
posiciones de las manos, luego se traza una línea horizontal
imaginaria, desde la mano izquierda hasta la posición de XD
de la mano derecha, esta línea será la referencia para marcar
el ángulo de giro de las manos y posteriormente del robot, la
Figura 5. Interfaz de usuario, ventana de configuración y conexión posición Y en ambas manos es igual así se mantiene una línea
horizontal, por tanto YI = YD . Una vez que se tiene la línea
En la sección de configuración se puede observar el título y de referencia se traza una línea dada por la posición de las
los campos a ingresar, seguido de respuesta de reconocimiento manos como se muestra en la figura(7) la cual determina el
del servidor, en ese instante se puede seleccionar la pestaña ángulo que será enviado al robot.
“Manejo”, donde se opta por los distintos comportamientos.
La figura(6) muetra la pestaña manejo que permite escoger los
comportamientos a ejecutar y se visualiza los gestos realiza-
dos, el dato enviado al servidor, la ilustración del “skeleton
tracking” con el ángulo obtenido entre las manos del usuario
y los botones para cada comportamiento.

IV. A NÁLISIS Y PRUEBAS DEL SISTEMA


El sistema está diseñado para que ejecute el servidor,
estando éste conectado al robot o al simulador, luego se espera Figura 7. Ángulo entre las manos y línea de referencia, con sus respectivas
a que el cliente se comunique para iniciar la aplicación. Si no coordenadas

20 MASKAY
5

Para obtener el ángulo α se utiliza la definición trigo-


nométrica de coseno, donde el coseno de un ángulo está
¯ y
determinado por el cociente entre el cateto adyacenteIR
¯
la hipotenusaID (3). Ahora obtenemos la dimensión de la
hipotenusa y del cateto, como se usa en (1) y (2):

¯ = ((XD − XI )2 + (YD − YI )2 )
(ID) (1)


¯ =
(IR) ((XD − XI )2 ) (2)

¯
IR
α = cos−1 ¯ (3)
ID

Cuadro I
Á NGULOS ENVIADOS AL SERVIDOR
Figura 8. Tasa de cambio de los ángulos enviados al servidor
α α α
α 2 3 5
1 03.1233 00.0140 00.6020 00.1307
2 05.1826 03.4693 00.7434 01.6580 La utilidad de los sensores de profundidad, es muy amplia, no
3 19.2739 07.9349 01.4244 04.0390
4 33.0039 10.2589 06.1634 05.6904 solo se puede manejar un robot móvil por medio de gestos sino
5 42.2090 13.8514 08.5950 07.2268 que también, se pueden diseñar sistemas donde se manipule
6 51.3436 17.4088 12.3703 08.4278 robots en áreas de riesgo de forma sencilla, al imitar los
7 54.13.54 24.5446 14.7429 09.3981
8 53.8911 22.9922 18.3775 11.0203
movimientos humanos.
9 48.4466 24.5446 19.5532 12.0223 La comunicación entre cliente y servidor se estableció
10 35.1111 26.1011 19.5532 13.3193 correctamente, y es necesario que el envío de datos del sensor
11 04.5604 27.7545 18.1034 12.8708 se haga en un subproceso asíncrono de la aplicación principal,
12 03.2308 28.6312 12.1036 09.2864
13 -06.4376 27.6133 08.9370 06.0075 así se pudo evitar que el modo “conducir” interfiera con los
14 -18.8650 20.2385 06.4740 03.3045 procesos de la aplicación.
15 -26.7977 13.0157 04.5478 01.9365 La cámara y el sensor de profundidad son eficientes, pero
16 -35.1878 09.2853 02.4528 00.6450 sin embargo tiene limitantes ya que si el usuario se encuentra
17 -41.4424 05.3992 -00.4931 -00.5881
18 -42.4420 02.9769 -03.1681 -02.3996 muy cerca de él o muy lejos, los datos obtenidos serán
19 -43.1771 -01.4422 -08.4258 -05.8059 erróneos, haciendo que robot se mueva de forma muy irregular
20 -40.5505 -05.8563 -12.8674 -06.4522 y errática.
21 -19.5209 -08.7922 -14.6944 -05.6465
El ángulo de rotación tuvo que ser reducido al 50 %, pues
la función que permite girar al robot admite una velocidad de
La prueba se realizó desde una posición donde el ángulo es
rotación y no directamente un ángulo específico, así el ángulo
cercano a cero, luego se gira lentamente los brazos hacia arriba
α se divide para dos, porque con este valor se obtienen mejores
para tomar ángulos positivos y después se gira hacia abajo
resultados en cuanto a la respuesta del sistema.
para tomar los ángulos negativos, cada adquisición se hizo
La utilización de la clase ArActionGroup, facilita la progra-
dividiendo el ángulo obtenido para un número determinado.
mación de los comportamientos del robot haciendo que todos
El robot tiene en su programación interna un método para
ellos se desarrollen en un solo grupo de acciones, permitiendo
girar setRotVel(), pero este dato es la velocidad de rotación
que el servidor pueda pasar de un comportamiento a otro
y no el ángulo de rotación que se está obteniendo, por ello
inmediatamente, con el llamado de funciones.
cuadro(1) muestra algunos resultados de los valores dados al
Una ventaja de agrupar los comportamientos es que se pue-
método setRotVel(), para escoger el mejor desempeño.
de ampliar la interacción del cliente con el robot programando
Como se ve en la figura(8) si se envía directamente el ángulo
movimientos adicionales, que complementen las utilidades de
dado por el sensor, el robot haría giros demasiado bruscos,
la aplicación.
lo cual pude llegar a ser peligroso es por eso que se opta
por dividir el ángulo para que la tasa de cambio sea menor,
que si se envía el dato sin cambios. Para esta configuración R EFERENCIAS
es preferible escoger un flujo de datos que no de cambios [1] Abhijit Jana, Kinect for Windows SDK Programming Guide. Birming-
ham, U.K.: Packt Publishing Ltd, 2012
bruscos, por ello es que Ang/2(donde Ang =α ) cumple con [2] John MacCormick. (2015) How does the Kinect work? [En línea].
estos requerimientos mínimos http://www.cs.bham.ac.uk/~vvk201/Teach/Graphics/kinect.pdf
[3] Gabriela Andaluz, "Modelación Identificación y Control de Robots
Móviles," Escuela Politecnica Nacional, Quito, Tesis de Ingeniería en
V. C ONCLUSIONES Electrónica y Control 2011.
El diseño del sistema permitió el manejo del robot móvil [4] Aníbal Ollero, ROBÓTICA Manipuladores y robots móviles. Barcelona,
España: Marcombo, 2001.
con gestos manuales, y a través de botones en la interfaz del [5] Lukas Häfele. (2012, Marzo) Gesture Control. [En línea].
cliente, con los que se controla acciones aún más específicas. http://www.gesture-control.com.eu/

21 MASKAY
6

[6] MobileRobots Inc., Pioneer 3 Operations Manual with MobileRobots


Exclusive Advanced Robot Control & Operations Software, 2006.
[7] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby
Sharp, and Mark Finocchio. (2011) Real-Time Human
Pose Recognition in Parts from Single Depth. [En línea].
http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf
[8] Jarrett Webb and James Ashley, Beginning Kinect Programming with the
Microsoft Kinect SDK. Nueva York, N. Y.: Apress, 2012.

22 MASKAY

También podría gustarte