Diseño e Implementación de Un Sistema de Control para El Robot Móvil P3-AT Por Medio de Gestos Manuales
Diseño e Implementación de Un Sistema de Control para El Robot Móvil P3-AT Por Medio de Gestos Manuales
Diseño e Implementación de Un Sistema de Control para El Robot Móvil P3-AT Por Medio de Gestos Manuales
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].
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.
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
20 MASKAY
5
�
¯ =
(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
22 MASKAY