Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado

Página creada Ruben Zaplana
 
SEGUIR LEYENDO
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Escuela
                                           Politécnica
                                           Superior

Teleoperación del robot
Pepper con métodos
de realidad virtual
            Grado en Ingeniería Robótica

Trabajo Fin de Grado
Autor:
Ángel Rodríguez Quevedo
Tutor/es:
Miguel Ángel Cazorla Quevedo
Francisco Gómez Donoso

Mayo 2021
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Teleoperación del robot Pepper con
    métodos de realidad virtual

                              Autor
                      Ángel Rodríguez Quevedo

                             Tutor/es
                    Miguel Ángel Cazorla Quevedo
   Departamento de Ciencia de la Computación e Inteligencia Artificial
                       Francisco Gómez Donoso
   Departamento de Ciencia de la Computación e Inteligencia Artificial

                    Grado en Ingeniería Robótica

                 Escuela
                 Politécnica
                 Superior

                       ALICANTE, Mayo 2021
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Preámbulo
  La motivación de este trabajo se basa en el aprendizaje de nuevas técnicas de programación
y del uso de dispositivos tecnológicos, relacionados con la realidad virtual y visión 3D como
es el caso de las gafas de realidad virtual y controladores Oculus Quest 2, y relacionados
con la robótica, en general, como el robot Pepper. También, cabe destacar la importancia de
desarrollar este TFG relacionándolo con la visión artificial ya que es un apartado que tiene
mucho auge y futuro en el mundo de la robótica y que personalmente, me fascina.
  De esta forma, la motivación personal para el desarrollo de este trabajo ha sido:

  • Profundizar en el uso de ROS.

  • Mejorar el nivel del lenguaje de programación Python.

  • Aprender a controlar el robot Pepper.

  • Emplear técnicas de visión artificial y realidad virtual en el proyecto.

  • Aprender y mejorar en el uso de nuevos lenguajes de programación como C#.

  • Aprender a programar en Unity.

  • Realizar una comunicación entre varias plataformas de manera exitosa.

  Concretamente, los objetivos se podrían resumir en los siguientes:

  • Integrar y programar diferentes dispositivos para lograr un sistema capaz de ser tele-
    operado en el que se comuniquen varias plataformas al mismo tiempo sin problemas
    usando:
        – Robot Pepper.
        – Gafas de realidad virtual y controladores Oculus Quest 2.

  • Desarrollar un sistema de teleoperación o pantalla del operador sencilla, intuitiva e
    inmersiva que, mediante realidad virtual, permita proporcionar información al usuario.
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Agradecimientos

   Personalmente, este trabajo me ha ayudado a ver el desarrollo que he hecho en el transcurso
del grado. Durante este tiempo, se han tenido que afrontar muchos momentos difíciles que,
junto con mi familia y amigos más cercanos, se han vencido. En muchas ocasiones, el estado
anímico de una persona es vital para el desarrollo de su trabajo y en este aspecto sé que mis
seres más queridos han estado para apoyarme y ayudarme a seguir. Es por ello, que les dedico
este trabajo.
   Quiero hacer mención especial a mi familia que han tenido que soportar todos los momentos
duros y muchas noches largas para seguir aprendiendo y poder llegar hasta dónde he llegado
en el presente. Este apoyo siempre lo tendré presente.
   De la misma forma, estimo oportuno destacar aquellas personas que me han apoyado desde
que era muy pequeño y que actualmente no pueden estar entre nosotros, pero sé que seguirán
dándome fuerza y espero que este trabajo les haya enorgullecido.
   En adición, quiero mencionar a los compañeros de mi grado ya que hemos formado una
pequeña familia en la que nos hemos apoyado mutuamente en el transcurso del grado.
   También, les quiero dedicar este proyecto a mis tutores, Miguel Ángel Cazorla Quevedo y
Francisco Gómez Donoso, que gracias a su ayuda, su tiempo y su forma de ser me han apoyado
en todo momento y me han ayudado a realizar este proyecto disfrutando y aprendiendo de
él y de ellos. Además, gracias a ellos, he podido disfrutar de herramientas, como las gafas de
realidad virtual Oculus Quest 2 o el robot Pepper, las cuales no podía haber tenido acceso.
   Además, se han realizado una serie de experimentos en los que se han ofrecido voluntarios
varias personas (Miguel Ángel Cazorla, Gonzalo Ferrando, Carlos Torrá, Iván Torá, Alberto
García, Andrés Plaza, Miguel Rodríguez, Alejandra Miralles, Eduardo Torres y Rafael Villar),
sin las cuales estas pruebas no se habrían podido cumplir.
   Les agradezco enormemente a todos, ya que sin ellos, este trabajo no habría sido posible.
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Si tú sabes lo que vales,
                            ve y consigue lo que mereces,
                    pero tendrás que aguantar los golpes.

                      Rocky Balboa (Sylvester Stallone).

      La razón por la que las personas fracasan realmente
no es porque pusieron sus metas muy altas y no llegaron,
     sino porque las pusieron muy bajas y las alcanzaron.

                                          Jordan Belfort.

                                                        ix
Teleoperación del robot Pepper con métodos de realidad virtual - Grado en Ingeniería Robótica Trabajo Fin de Grado
Índice general
1 Introducción                                                                                   1

2 Estado del arte                                                                                5

3 Objetivos y motivación                                                                         11

4 Metodología                                                                                    13
  4.1 Gafas de realidad virtual y controladores Oculus Quest 2 . . . . . . . . . . .             13
  4.2 Robot Pepper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       13
  4.3 Unity/Unity Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        15
  4.4 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     16
  4.5 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       16
  4.6 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       16
  4.7 PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      16
  4.8 TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       17
  4.9 Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      17
  4.10 CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      17
  4.11 Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      18
  4.12 Pipelines de detección de manos . . . . . . . . . . . . . . . . . . . . . . . . .         18
       4.12.1 Pipeline I2L-MeshNet: Image-to-Lixel Prediction Network for Accurate
              3D Human Pose and Mesh Estimation from a Single RGB Image . . .                    19
       4.12.2 Pipeline 3D Hand Shape and Pose Estimation from a Single RGB Image                 19
       4.12.3 Pipeline ColorHandPose3D network . . . . . . . . . . . . . . . . . . .             20
  4.13 ARToolKit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       21
  4.14 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     22
  4.15 WSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     23
  4.16 Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      23
  4.17 XLaunch/Xming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         23
  4.18 Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   24
  4.19 Códigos QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      24
  4.20 Choreographe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      25
  4.21 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    25
  4.22 Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   25

5 Desarrollo                                                                                     27
  5.1 Aproximación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       27
  5.2 Gafas de realidad virtual y controladores Oculus Quest 2 . . . . . . . . . . .             29
      5.2.1 Primeros pasos y puesta en marcha de las Oculus Quest 2 . . . . . . .                29

                                                                                                 xi
xii                                                                                          Índice general

      5.3   Servidor web y ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                       31
            5.3.1 Lectura de imágenes con ImageGrabber.cs . . . . . . . . . . . . . . . .                            32
      5.4   ROS y el movimiento del robot en Gazebo . . . . . . . . . . . . . . . . . . . .                          33
            5.4.1 Movimiento del robot en Gazebo . . . . . . . . . . . . . . . . . . . . .                           33
            5.4.2 Instalación de ROS, Gazebo y Turtlebot en Windows . . . . . . . . .                                33
            5.4.3 Instalación de ROS, Gazebo y Turtlebot en Ubuntu . . . . . . . . . .                               36
      5.5   ROS y el movimiento del Turtlebot con los controladores de Oculus Quest 2 .                              37
      5.6   Unity/Unity Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                      37
            5.6.1 Configuración de Unity/Unity Hub y carga de la aplicación . . . . . .                              37
            5.6.2 Pantalla del operador . . . . . . . . . . . . . . . . . . . . . . . . . . .                        38
            5.6.3 Representación de imágenes tomadas de la cámara del PC en Unity/U-
                   nity Hub en tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . .                       39
            5.6.4 Obtención de la imagen de la cámara del robot . . . . . . . . . . . . .                            39
            5.6.5 Representación del movimiento del robot Pepper en Unity/Unity Hub
                   de forma simulada con el teclado . . . . . . . . . . . . . . . . . . . . .                        40
            5.6.6 Detección de QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                        40
            5.6.7 Movimiento del robot . . . . . . . . . . . . . . . . . . . . . . . . . . .                         41
      5.7   Robot Pepper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                     41
            5.7.1 Instalación de prerrequisitos y paquetes . . . . . . . . . . . . . . . . .                         41
            5.7.2 Preparación para el manejo físico del robot Pepper . . . . . . . . . . .                           43
            5.7.3 Instalación de Docker y preparación del entorno . . . . . . . . . . . .                            43
                   5.7.3.1 Pasos para instalar Docker y preparación del entorno para el
                             manejo del robot Pepper . . . . . . . . . . . . . . . . . . . .                         43
            5.7.4 Recomendaciones Choreographe . . . . . . . . . . . . . . . . . . . . .                             44
            5.7.5 Primeras pruebas con el robot Pepper . . . . . . . . . . . . . . . . . .                           45
            5.7.6 Ejemplo de visualización en RViz . . . . . . . . . . . . . . . . . . . . .                         47
            5.7.7 Visualización de la cámara del robot Pepper . . . . . . . . . . . . . . .                          47
            5.7.8 Primeros movimientos del robot Pepper . . . . . . . . . . . . . . . . .                            48
      5.8   Ejecución de la aplicación en las gafas de realidad virtual . . . . . . . . . . .                        48
      5.9   Detección facial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   50

6 Experimentación                                                                                                    55
  6.1 Experimentos sobre los tiempos de respuesta de cada proceso                .   .   .   .   .   .   .   .   .   55
  6.2 Experimentos en la detección QR . . . . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   57
      6.2.1 Detección QR con la cámara del PC . . . . . . . . . .                .   .   .   .   .   .   .   .   .   57
      6.2.2 ROS y la detección de los QR en Gazebo . . . . . . .                 .   .   .   .   .   .   .   .   .   59
      6.2.3 ROS y la detección de los QR con el robot Pepper . .                 .   .   .   .   .   .   .   .   .   60
  6.3 Experimentos sobre el movimiento del robot . . . . . . . . . .             .   .   .   .   .   .   .   .   .   61
      6.3.1 Movimiento del robot Pepper . . . . . . . . . . . . . .              .   .   .   .   .   .   .   .   .   61
      6.3.2 Movimiento del robot simulado en Gazebo . . . . . . .                .   .   .   .   .   .   .   .   .   62
  6.4 Experimentos relacionados con detección facial . . . . . . . .             .   .   .   .   .   .   .   .   .   67
      6.4.1 Detección facial con la cámara del ordenador . . . . .               .   .   .   .   .   .   .   .   .   67
      6.4.2 Detección facial con fotografías . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   70

7 Conclusiones                                                                                                       73
Índice general                      xiii

Bibliografía                        75

Lista de Acrónimos y Abreviaturas   79
Índice de figuras
 1.1   Descripción de la interacción de los elementos en la teleoperación. Fuente:
       (Madueño, 2013) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        2

 2.1   Robot Da Vinci teleoperado. Fuente: (Investors, 2019) . . . . . . . . . . . . .            5
 2.2   Representación del sistema inteligente del Instituto de Tecnología de Massa-
       chusetts (MIT) en la realidad y virtualmente. Fuente: (Oliver, 2017) . . . . .             6
 2.3   Modelo T controlado por el operador con realidad virtual. Fuente: (Polo, 2020)             7
 2.4   Robot Tactical Robotic System (TAROS). Fuente: (Kot y Petr, 2018) . . . .                  7
 2.5   Representación esquemática del contenido de la estación virtual del operador.
       Fuente: (Kot y Petr, 2018) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       8
 2.6   Imagen que verá el operador en la estación virtual. Fuente: (Kot y Petr, 2018)             9

 4.1   Gafas de realidad virtual y controladores Oculus Quest 2. Fuente: (Oculus,
       2021b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    13
 4.2   Sensorización del robot Pepper. Fuente: (JAVIERBUHIGAS, 2018) . . . . . .                 14
 4.3   Pantalla del operador recién abierto el programa Unity/Unity Hub. . . . . . .             15
 4.4   Funcionamiento de I2L-MeshNet. Fuente: (mks0601, 2021) . . . . . . . . . . .              19
 4.5   Funcionamiento de 3D Hand Shape and Pose Estimation. Fuente: (geliuhao,
       2019) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   20
 4.6   Funcionamiento de ColorHandPose3D network. Fuente: (zimmermc, 2017) . .                   20
 4.7   Resultados con el pipeline 3D Hand Shape and Pose Estimation from a Single
       RGB Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      21
 4.8   Estructura Publication-Subscription. Fuente: (Sugata y cols., 2017) . . . . . .           22
 4.9   Ejemplo de código Quick Response code (QR). . . . . . . . . . . . . . . . . .             24

 5.1  Esquema representativo sobre el funcionamiento del proyecto. . . . . . . . . .             27
 5.2  Set up del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       28
 5.3  Baile con el robot en el primer videojuego de first steps. Fuente: (realovirtual,
      2019) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    31
 5.4 Descripción esquemática de todas las interacciones del servidor web en la apli-
      cación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    32
 5.5 Ejemplo de salida de la prueba del movimiento del Turtlebot con las teclas del
      teclado en Gazebo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       36
 5.6 Imagen que refleja lo que aprecia el operador en esta prueba. . . . . . . . . .             38
 5.7 Pantalla del operador resultante. . . . . . . . . . . . . . . . . . . . . . . . . .         39
 5.8 Panel en el que se aprecia el movimiento del robot en la pantalla del operador.             40
 5.9 Salida de la verificación de la instalación. Fuente: (ykoga, 2016a) . . . . . . .           44
 5.10 Programa Choreographe con los botones de vida (marcado en rojo) y desper-
      tarse (marcado en azul). Fuente: (sunzhida, 2017) . . . . . . . . . . . . . . . .          45

                                                                                                 xv
xvi                                                                               Índice de figuras

      5.11 Salida de los primeros comandos de inicio con el robot Pepper. Fuente: (ykoga,
           2016a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   46
      5.12 Nodos del robot Pepper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      46
      5.13 Salida de RViz. Fuente: (ykoga, 2016a) . . . . . . . . . . . . . . . . . . . . . .       47
      5.14 Salida de la prueba de visualización de la cámara desde el robot Pepper. . . .           48
      5.15 Ubicación de Oculus Link en las gafas de realidad virtual. . . . . . . . . . . .         50
      5.16 Algunos resultados de la detección facial. . . . . . . . . . . . . . . . . . . . .       51
      5.17 Composición del modelo de Caffe empleado durante el entrenamiento y durante
           el test. Fuente: (Figueroa Quintero, 2020) . . . . . . . . . . . . . . . . . . . .       53

      6.1   Gráfica con los tiempos de ejecución de todos los programas. . . . . . . . . .          56
      6.2   Gráfica con los tiempos de ejecución de todos los programas con la modificación.        57
      6.3   Tipos de posiciones durante la prueba de detección del QR. . . . . . . . . . .          58
      6.4   Mundo de Gazebo con los QR insertados. . . . . . . . . . . . . . . . . . . . .          60
      6.5   Diferentes resultados del experimento. . . . . . . . . . . . . . . . . . . . . . .      68
      6.6   Diferentes resultados erróneos llamativos del experimento. . . . . . . . . . . .        72
Índice de tablas
 6.1   Resultados de cada una de las pruebas realizadas en este experimento.        . . . .    58
 6.2   Resultados de cada una de las pruebas realizadas en este experimento.        . . . .    69
 6.3   Resultados de cada una de las pruebas realizadas en este experimento.        . . . .    71
 6.4   Resultados de cada una de las pruebas realizadas en este experimento         elimi-
       nando las imágenes más conflictivas. . . . . . . . . . . . . . . . . . . .   . . . .    71

                                                                                              xvii
1 Introducción
   Para entender los temas centrales de este proyecto, se ha de definir primeramente la tele-
operación y la realidad virtual.
   La teleoperación es un conjunto de tecnologías que comprenden la operación o gobierno a
distancia de un dispositivo por un ser humano. Por tanto, teleoperar es la acción que realiza
un ser humano de operar o gobernar a distancia un dispositivo; mientras que un sistema de
teleoperación será aquel que permita teleoperar un dispositivo, que se denominará dispositivo
teleoperado.
   La realidad virtual es una situación o circunstancia que se da cuando un ser humano
tiene la sensación de encontrarse en un lugar distinto de dónde físicamente está gracias a la
información generada exclusivamente por un computador. El entorno que se genera, y en el
que el operador se encuentra inmerso se denomina entorno virtual, y la situación de estar en
él, también se conoce como presencia virtual.
   Cabe mencionar que con la unión de ambos nace un nuevo concepto: la telepresencia
que es una situación o circunstancia que se da cuando un ser humano tiene la sensación
de encontrarse físicamente en el lugar remoto. La telepresencia se consigue realimentando
coherentemente al ser humano con suficiente cantidad de información sobre el entorno remoto.
   Por tanto, aprovechando tecnologías de realidad virtual como las gafas 3D, se puede man-
tener una situación de telepresencia e interactuar con los elementos de la escena mediante
teleoperación.
   Consecuentemente, la teleoperación debería significar que se puede ver de forma remota
a través de los ojos y manipular las extremidades de nuestra robótica sin limitación. Para
lograrlo se emplean unos elementos que son esenciales:

  • Sistema maestro: elemento que se encarga de controlar el proceso haciendo uso de
    diferentes tecnologías de comunicación para enviar la información al sistema esclavo, es
    decir, se trataría del operador humano situado en el entorno o zona local controlando
    el proceso.

  • Sistema esclavo: elemento que se encarga de recibir la información desde el sistema
    maestro gracias a los elementos de procesamiento de los que dispone. Se sitúa en el
    entorno o zona remota y dispone de una realimentación local para aportar cierta auto-
    nomía en el momento de llevar a cabo la tarea.

  • Barreras: elemento que separa ambos entornos o zonas, remoto y local, debido a am-
    bientes peligrosos, escalas muy grandes o pequeñas, distancia o que el usuario no pueda
    alcanzar o interactuar directamente con el entorno. Son la principal causa del empleo
    de la teleoperación.

  Estos tres elementos interactúan entre sí en la teleoperación. Esto se puede observar en la
Figura 1.1.

                                                                                           1
2                                                                                 Introducción

Figura 1.1: Descripción de la interacción de los elementos en la teleoperación. Fuente: (Madueño,
            2013)

   En este sentido, la teleoperación es el control electrónico remoto de una máquina y junto a
la capacidad First Person View (FPV) se espera que juegue un papel importante en el futuro
de la automatización y el control tecnológico.
   La capacidad FPV permite al operador, colocándose un casco de realidad virtual previa-
mente, asumir el control de una máquina, viendo con los ”ojos” y manipulando las ”extremi-
dades”. Las ventajas tienen implicaciones en numerosas aplicaciones, ya sea entrenamiento y
despliegue militar, minería e inspección industrial o desempeño laboral repetitivo. En lugar de
enviar humanos a entornos hostiles, inaccesibles o peligrosos, se podrá enviar robots, mientras
el operador permanece a una distancia segura. Básicamente, la capacidad FPV permite el
despliegue de una máquina en circunstancias fuera del alcance de la línea de visión humana.
   Por ello, el uso de la realidad virtual en la teleoperación hace que se disponga de un sistema
inmersivo, realista e intuitivo para que al operador le resulte sencillo enviar las órdenes y
controlar al esclavo simulando que dicha persona se encuentre en el entorno del esclavo.
   En consecuencia, la finalidad de este proyecto es la de poder disponer de un sistema inmer-
sivo, interactivo e intuitivo (pantalla del operador) que la persona pueda manejar de forma
sencilla, sin complicaciones, con la misión de controlar el robot Pepper que estará situado en
otro lugar distante al operador (entorno remoto) y así poder llevar a cabo tareas sin necesidad
de que este se localice en el mismo lugar que el robot. Además, Pepper puede reconocer QR
para realizar una cierta actividad en dicha zona remota.
   De esta forma, el usuario podrá realizar tareas desde cualquier sitio pudiendo observar lo
que ve el robot y moviéndose como lo haría si él estuviera en el lugar del Pepper. Así, se
evitan los posibles problemas causados por las barreras por las que se impone la teleoperación
(entornos peligrosos, distancia, escalas grandes o pequeñas...) y, además, el operador puede
tener una visión mucho más realista que la que podría obtener sin el uso de las gafas de
realidad virtual ya que se le sitúa en un entorno inmersivo e intuitivo en el que se puede
teleoperar el robot disponiendo de una mayor concentración en la tarea y sabiendo en cada
momento lo que se puede realizar.
   Concluyendo, en el Capítulo 2 se explicarán varios ejemplos de proyectos con objetivos
similares a este trabajo. En el Capítulo 3, se presentarán cada uno de los objetivos propuestos
y alcanzados. Luego, en el Capítulo 4, se trata la metodología empleada con cada uno de
los materiales usados para llevar a cabo el proyecto. Posteriormente, en el Capítulo 5, se
expone la forma de usar cada una de las herramientas expuestas en la sección previa y se
explica el proyecto de forma detallada. Más tarde, en el Capítulo 6, se añaden cada uno de los
experimentos y pruebas realizadas para completar el trabajo de forma exitosa. Seguidamente,
3

en el Capítulo 7, se introducirán una serie de conclusiones sobre el trabajo y se plantearán
algunas ideas de futuro que se han pensado llevar a cabo teniendo en cuenta el estado final
del proyecto. Para finalizar, se mostrará la bibliografía con los enlaces empleados como ayuda
para completar el trabajo.
2 Estado del arte
   Actualmente, los robots son entidades que se utilizan cada vez más, tanto para ampliar
los sentidos humanos como para realizar tareas particulares que implican repetición, mani-
pulación, precisión. En el primer caso, la amplia gama de sensores disponibles actualmente
permite que un robot recopile varios tipos de datos ambientales. Dependiendo de la aplica-
ción, dichos datos se pueden procesar internamente para lograr una autonomía completa o,
en caso de que se requiera una intervención humana, los datos observados se pueden analizar
fuera de línea (robots para imágenes médicas) o en tiempo real (robots para manipulaciones
quirúrgicas como el robot Da Vinci, de la Figura 2.1). Una característica interesante de los
robots con acceso en tiempo real es la gestión remota por parte de los operadores lo que
lleva al concepto de telerobótica. Este es el caso cuando se deben explorar sitios inaccesibles
o peligrosos, para evitar situaciones que pongan en peligro la vida de los seres humanos (si-
tios subterráneos, submarinos o espaciales, edificios con temperatura o concentración de gas
excesivas). Además, si se consideran los enfoques cognitivos para el diseño de una interfaz in-
teligente entre hombres y máquinas, se le aporta un realismo mayor al operador que controla
al robot.

               Figura 2.1: Robot Da Vinci teleoperado. Fuente: (Investors, 2019)

  Cualquier tarea de teleoperación es más efectiva cuando se logra un grado aceptable de
inmersión. En caso contrario, los operadores tienen una percepción distorsionada del mundo
distante, comprometiendo potencialmente la tarea con artefactos. La investigación se ha cen-
trado en hacer que la teleoperación evolucione hacia la telepresencia, donde el usuario ya no
es consciente del entorno local y se proyecta por completo en la ubicación lejana. Para que
esta proyección sea factible, la inmersión es la característica clave.
  En resonancia, existen multitud de proyectos e investigaciones que incluyen la realidad
virtual en la teleoperación de robots. Algunos de ellos se describirán a continuación, ya que

                                                                                             5
6                                                                             Estado del arte

comparten objetivos con este trabajo.
  Primeramente, los investigadores del Computer Science and Artificial Intelligence Lab
(CSAIL) del MIT, utilizando uno de los robots Baxter de Rethink Robotics, un dispositivo
Virtual Reality (VR) y, seguramente, también el clásico Mobile Suit Gundam Wing, crearon
un inteligente sistema de sensor display montado en la cabeza que coloca a los operadores
humanos en la cabeza del robot que están controlando.
  El sistema inteligente del MIT integra al usuario en una sala de control de realidad virtual
con múltiples pantallas de sensores, lo que permite al usuario ver todo lo que el robot está
viendo en un momento dado, como se puede observar en la Figura 2.2.

Figura 2.2: Representación del sistema inteligente del MIT en la realidad y virtualmente. Fuente:
            (Oliver, 2017)

   Para ejecutar tareas, el humano emplea gestos, recogidos a través de unos controles manua-
les, que son reflejados por el robot. Los controles accesibles por el usuario humano aparecen
virtualmente, en lugar de ser controles físicos. Esto permite cambiar dependiendo de lo que
el robot tiene que llevar a cabo en un momento dado.
   El trabajo que se ha realizado es muy parecido al ejemplo anteriormente mencionado.
Sin embargo, la pantalla del operador del anterior dispone de demasiada información para
controlar el robot. De esta manera, el usuario puede confundir los controles y necesita tiempo
para acostumbrarse a ellos y poder realizar la teleoperación adecuadamente. En el trabajo
hecho, la pantalla del operador muestra la información relevante únicamente y la manera de
controlar el robot es muy sencilla.
   En segundo lugar, la empresa japonesa Telexistence, desde septiembre de 2020, ha co-
menzado a probar en tiendas de conveniencia un robot apilador de estantes que puede ser
controlado por un humano a través de la realidad virtual.
7

  Este robot, el Modelo T (Figura 2.3), usa dos brazos articulados y manos complejas para
poder coger artículos de diversos tamaños, pero no tiene ningún tipo de inteligencia, está
controlado directamente por un ser humano mediante una configuración de realidad virtual
estándar desde cualquier lugar del mundo que tenga conexión a Internet.

   Figura 2.3: Modelo T controlado por el operador con realidad virtual. Fuente: (Polo, 2020)

  Las articulaciones del robot tienen 22 grados de libertad, y la conexión de vídeo entre el
robot y el operador humano tiene una latencia de 50 milisegundos, lo que significa que desde
que el usuario realiza una acción hasta que el robot la imita, el tiempo es prácticamente
imperceptible. No obstante, tiene un problema fundamental: el ritmo de trabajo, ya que la
precisión y la velocidad se han de seguir trabajando e investigando en busca de una mejoría.
Esto no ocurre en el proyecto que se ha realizado debido a que se puede controlar el robot
Pepper a una velocidad buena sin perder un buen ritmo de trabajo.
  Por último, se encuentra TAROS (Figura 2.4) que es un sistema móvil robótico no tripula-
do desarrollado en cooperación con universidades checas en el marco del Centro de Robótica
Avanzada de Campo. El robot fue diseñado para combate y apoyo logístico de fuerzas meca-
nizadas, de reconocimiento y especiales en un entorno operativo complejo y arriesgado.
  El robot se puede adaptar modularmente a los requisitos reales de la unidad militar y
uno de los módulos básicos tiene un brazo manipulador con cinco grados de libertad y pinza
universal y contiene cámaras montadas cerca de la pinza. Además, el operador controla el
brazo mediante el sistema de control avanzado con realidad virtual.

                    Figura 2.4: Robot TAROS. Fuente: (Kot y Petr, 2018)
8                                                                             Estado del arte

   La interfaz gráfica del sistema de control está diseñada como una innovadora estación de
operador virtual. El sistema se ejecuta en una estación de operador física y el usuario lleva un
dispositivo de visualización montado en la cabeza (Head-Mounted Display (HMD)), Oculus
Rift, que crea la impresión de estar en un espacio virtual, la estación del operador virtual,
representada por el sistema de control.
   Todo ello, permite crear una estación del operador mejor de lo que sería físicamente, en
especial, en condiciones de campo. Dicha estación podría contener una o varias pantallas pla-
nas pequeñas, pudiendo constar de varias pantallas muy grandes e incluso mostrar imágenes
de estereovisión.
   El contenido de la estación del operador virtual es observado por el operador desde dos
cámaras virtuales ubicadas en el espacio 3D. Estas dos cámaras no corresponden a ninguna
cámara física real del robot, sus parámetros ópticos están configurados exactamente para los
requisitos de Oculus Rift y su rotación. También, se ve afectado por los movimientos de la
cabeza del operador por medio de los sensores de seguimiento Oculus Rift. De esta manera,
el operador puede mirar libremente a su alrededor en el espacio virtual.
   La sala virtual (Figuras 2.5 y 2.6) contiene varios planos grandes que simulan monitores de
computadora colocados delante y ligeramente alrededor del operador. Cada pantalla tiene las
imágenes de algunas cámaras físicas asignadas. El plano más grande muestra imágenes de las
cámaras de estereovisión localizadas en el brazo cerca de la pinza. Los planos ligeramente más
pequeños a su alrededor muestran imágenes de la cámara de conducción principal ubicada en
el chasis del robot, imágenes de una cámara de termovisión o cámara de visión nocturna y
otros datos importantes (lecturas de sensores, iconos de estado, iconos de advertencia, etc.).
Los iconos importantes también se pueden representar directamente sobre las imágenes de la
cámara.

Figura 2.5: Representación esquemática del contenido de la estación virtual del operador. Fuente:
            (Kot y Petr, 2018)

 También, para darle más realismo al sistema de realidad virtual, se representa un pequeño
modelo 3D que refleja la posición real del brazo manipulador del robot real.
9

    Figura 2.6: Imagen que verá el operador en la estación virtual. Fuente: (Kot y Petr, 2018)

   Todo ello, puede provocar que el operario disponga de demasiada información que no le
permita realizar su objetivo si no tiene mucha experiencia con dicha aplicación, como ocurría
en el primer ejemplo expuesto ya que se desea una interfaz clara, intuitiva, sencilla y que
represente únicamente la información que sea de utilidad al usuario como se ha realizado en
el trabajo.
3 Objetivos y motivación
   La motivación en el desarrollo de este proyecto consiste en la solución a los posibles pro-
blemas que se pueden dar en el trabajo de la persona en algunos lugares o la imposibilidad
de realizarlo ya sea por ambientes peligrosos, escalas muy grandes o pequeñas, distancia o
que el usuario no pueda alcanzar o interactuar directamente con el entorno.
   Existen varios casos en los que la distancia es un factor importante. Por ejemplo: en el
campo de la medicina, si hay una operación que la tiene que realizar un cirujano específico
debido a diferentes factores y este cirujano no puede desplazarse al lugar del paciente porque
la urgencia del estado de este es grave y no le da tiempo, la mejor solución sería operar en el
momento con un robot (conocido como Da Vinci), que permite ser controlado por el cirujano
en un lugar distinto al que se está tratando al paciente.
   Hay otros casos en los que los entornos peligrosos imposibilitan la realización de la tarea
o la dificultan mucho. Esto se podría solucionar teleoperando un robot como ocurre en la
desactivación de bombas o en situaciones de rescate.
   Sin embargo, hay veces que los operarios no pueden tener una sensación de realismo como
si verdaderamente estuvieran en el lugar del robot. Esto impide que se concentren en la
realización de la tarea o que no se sientan tan cómodos como podrían. La solución a ello
consiste en incluir las gafas de realidad virtual en la teleoperación.
   Por tanto, para solucionar estos problemas se incluye la teleoperación del robot Pepper, el
cual es controlado por el usuario y como se pretende que el robot sustituya al usuario para
que este pueda realizar la tarea de la forma más realista, intuitiva, simple y eficaz posible,
evitando todas las dificultades previamente mencionadas, se incluyen las gafas de realidad
virtual con sus controladores para manejarlo. De esta manera, se consigue tener un mayor
realismo en la teleoperación y es la forma más idónea para que el operador sienta que en
realidad es él quién está haciendo la tarea y no el robot; así, le da una mayor comodidad y
concentración.
   Consecuentemente, los objetivos de este proyecto se pueden resumir en los siguientes:
  • Evitar los problemas de distancia, entornos peligrosos, escalas grandes o pequeñas y de
    alcance por parte del usuario.
        – Solucionado con la teleoperación del robot Pepper.
  • Hacer que el operario disponga de una mayor comodidad y realismo en el momento de
    realizar la teleoperación.
        – Solucionado con la inclusión de las gafas de realidad virtual junto con sus contro-
          ladores.
  • Integración de un sistema de gafas de realidad virtual con un robot real.
        – Logrado usando las gafas de realidad virtual Oculus Quest 2 junto con el robot
          Pepper.

                                                                                            11
4 Metodología
  En este proyecto se ha empleado el uso de diferentes elementos, dispositivos, programas,
software… que se describirán brevemente a continuación:

4.1 Gafas de realidad virtual y controladores Oculus Quest 2
  El uso de las gafas de realidad virtual Oculus Quest 2 con sus controladores son primordiales
para este proyecto ya que sin ellas los conceptos de inmersión y realidad virtual no se logran
de una forma tan notoria.

  Figura 4.1: Gafas de realidad virtual y controladores Oculus Quest 2. Fuente: (Oculus, 2021b)

   Estas gafas (Figura 4.1) incorporan un panel único Liquid Cristal Display (LCD) por el que
su portador puede observar la imagen que se desea mostrar, lleva unos altavoces integrados
para obtener un mayor realismo y se pueden conectar al ordenador para cargar aplicaciones
desde este a las propias gafas.
   Además, también tienen unas cámaras que permiten captar su entorno y las propias manos
del usuario que sin el uso de los controladores puede disfrutar de la experiencia de realidad
virtual.
   Este dispositivo logra la inmersión del operador en el mundo virtual diseñado en Unity, en
este caso, pero también puede lanzar una serie de juegos de forma autónoma de manera que
el usuario disfrute de una experiencia totalmente diferente a los videojuegos de consola o PC.
Con esta experiencia se consigue que el usuario pueda “vivir” los videojuegos como si fueran
reales.

4.2 Robot Pepper
  Pepper es un robot humanoide fabricado por SoftBank Robotics de 120 centímetros, pro-
gramable y diseñado para interactuar con personas. Su tecnología le permite detectar tanto el
lenguaje verbal como el no verbal, la posición de la cabeza y el tono de voz, para reconocer el

                                                                                              13
14                                                                              Metodología

estado emocional e individualizar cada interacción. Esto provoca un sentimiento de empatía
y una conexión entre robot-cliente que favorecen una comunicación eficaz.
   A través de sus sensores, cámara en 3D y sus cuatro micrófonos, el humanoide se comu-
nica de forma fluida, presenta movimientos muy flexibles, imitando los gestos humanos, y
se desplaza en cualquier dirección hasta 3 km/h. Acompaña todas sus intervenciones con un
elaborado lenguaje corporal totalmente programable para intensificar sus discursos e inter-
acciones.
   En este caso, el robot Pepper tiene una función primordial en el proyecto ya que se va
a simular que el portador de las gafas sea el propio Pepper por lo que sin este humanoide,
el experimento carece de sentido. Se usará la cámara delantera situada en su cabeza para
poder observar lo que está viendo el Pepper en tiempo real. Sin embargo, aunque no se usen
todos ellos en este proyecto, el robot dispone de múltiples sensores, inerciales (acelerómetro
y giroscopio), láseres y sónares para calcular distancias y profundidad; botones en la pantalla
y bumpers; sensores táctiles en la cabeza y las dos manos. Respecto a los actuadores, son las
articulaciones del propio robot (Figura 4.2). Se pueden encontrar más especificaciones en su
documentación oficial: (Softbank Robotiks, 2021b).

         Figura 4.2: Sensorización del robot Pepper. Fuente: (JAVIERBUHIGAS, 2018)
4.3. Unity/Unity Hub                                                                     15

4.3 Unity/Unity Hub
   Unity es un motor de desarrollo o motor de juegos. El término motor de videojuego hace
referencia a un software el cual tiene una serie de rutinas de programación que permiten el
diseño, la creación y el funcionamiento de un entorno interactivo.
   Unity es una herramienta que permite crear videojuegos para diversas plataformas, median-
te un editor visual y programación vía scripting, y pudiendo conseguir resultados totalmente
profesionales.
   A su vez, Unity Hub es una herramienta para la gestión de proyectos Unity. Además, se
pueden gestionar múltiples instalaciones del editor Unity junto con sus componentes, crear
nuevos proyectos y abrir proyectos existentes. La herramienta Unity Hub se puede usar para:

  • Administrar la cuenta de Unity y licencias de editor.

  • Crear un proyecto, asociar una versión predeterminada del editor Unity con el proyecto
    y administrar la instalación de varias versiones del editor.

  • Iniciar diferentes versiones de Unity desde la vista de un proyecto.

  • Ejecutar dos versiones de Unity al mismo tiempo.

  • Añadir componentes a las instalaciones existentes del Editor. Cuando se descarga una
    versión del Editor a través de Unity Hub, se puede buscar y agregar componentes adi-
    cionales (como compatibilidad con plataformas específicas, Visual Studio, documentos
    sin conexión y activos estándar) durante la instalación inicial o después.

   Para obtener más información acerca de esta herramienta, se puede acceder a su documen-
tación oficial: (Unity, 2021).
   Ambos se han usado en este proyecto para poder generar la pantalla del operador con
la que el usuario interactúa. Esta pantalla, si no se ejecuta ningún programa, inicialmente,
abriendo Unity únicamente, se muestra como aparece en la Figura 4.3.

         Figura 4.3: Pantalla del operador recién abierto el programa Unity/Unity Hub.
16                                                                                Metodología

4.4 C#
   C# es un lenguaje de programación diseñado por la compañía Microsoft y está orientado
a objetos que es una rama de la informática la cual se usan los objetos y las interacciones
de estos para diseñar aplicaciones y programas informáticos. Cabe destacar que un objeto
en programación es una entidad que combina el estado (datos del objeto), comportamiento
o método (define qué operaciones puede hacer el objeto) e identidad (factor diferenciador de
los otros objetos).
   Para disponer de más información acerca de C#, se puede acceder a un blog acerca de la
documentación sobre este lenguaje de programación hecho por Microsoft: (Microsoft, 2021).
   En este lenguaje se han realizado muchos de los programas creados.

4.5 Python
   Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en la
legibilidad de su código. Se trata de un lenguaje de programación multiparadigma, ya que
soporta parcialmente la orientación a objetos, programación imperativa y, en menor medida,
programación funcional. Es un lenguaje interpretado, dinámico y multiplataforma.
   Para obtener más información sobre Python, se puede acceder a su documentación oficial:
(Python, 2021).
   En este lenguaje se han realizado algunos de los programas creados.

4.6 OpenCV
  Open Source Computer Vision (OpenCV) es una librería software open-source de visión
artificial y machine learning. Provee una infraestructura para aplicaciones de visión artificial,
está escrito en C++, tiene interfaces en C++, C, Python, Java y MATLAB y funciona en
Windows, Linux, Android y Mac Os.
  La librería tiene más de 2500 algoritmos, que incluye algoritmos de machine learning y
de visión artificial para usar. Estos algoritmos permiten identificar objetos, caras, clasificar
acciones humanas en vídeo, hacer seguimiento de movimientos de objetos, extraer modelos 3D,
encontrar imágenes similares, eliminar ojos rojos, seguir el movimiento de los ojos, reconocer
escenarios…
  Para disponer de más información sobre esta herramienta, se puede acceder a su documen-
tación oficial: (OpenCV, 2021).
  Esta biblioteca se ha empleado para la detección de los QR gracias a la cámara delantera
del robot Pepper. Además, se ha empleado su uso en la detección de los diferentes pipelines
de detección de manos y en la identificación facial.

4.7 PyTorch
   PyTorch es una biblioteca de aprendizaje automático de código abierto basada en la bi-
blioteca de Torch, utilizado para aplicaciones que implementan funcionalidades como visión
artificial y procesamiento de lenguaje natural, principalmente desarrollado por el Facebook
4.8. TensorFlow                                                                             17

Artificial Intelligence Research (FAIR). Es un software libre y de código abierto liberado bajo
la Licencia Modificada de BSD.
   PyTorch proporciona dos características de alto nivel:
  • Computación de tensores con una aceleración fuerte a través de unidades de procesa-
    mientos gráficos (GPU).
  • Redes neuronales profundas construidas en un sistema de Diferenciación Automática
    de Bases de Datos.
   Para acceder a más información sobre PyTorch, se puede acceder a su documentación
oficial: (PyTorch, 2021).
   En este caso, PyTorch se ha empleado en las instalaciones de los pipelines de detección de
manos.

4.8 TensorFlow
  TensorFlow es una biblioteca de código abierto para aprendizaje automático a través de un
rango de tareas, y desarrollado por Google para satisfacer sus necesidades de sistemas capaces
de construir y entrenar redes neuronales para detectar y descifrar patrones y correlaciones,
análogos al aprendizaje y razonamiento usados por los humanos.
  Para disponer de más información sobre esta herramienta, se puede acceder a su documen-
tación oficial: (Keras, 2021a).
  En este caso, TensorFlow se ha empleado en las instalaciones de los pipelines de detección
de manos.

4.9 Keras
   Keras es una biblioteca de código abierto (con licencia MIT) escrita en Python. Es una
biblioteca que funciona a nivel de modelo: proporciona bloques modulares sobre los que se
pueden desarrollar modelos complejos de aprendizaje profundo. A diferencia de los frame-
works, este software de código abierto no se utiliza para operaciones sencillas de bajo nivel,
sino que emplea las bibliotecas de los frameworks de aprendizaje automático vinculadas, que
en cierto modo actúan como un motor de backend para Keras. Las capas de la red neuronal
que se quieren configurar se relacionan entre sí de acuerdo con el principio modular, sin que
el usuario de Keras tenga que comprender o controlar directamente el propio backend del
framework elegido.
   Para más información sobre Keras, se puede acceder a su documentación oficial: (Keras,
2021b).
   En este caso, Keras se ha empleado en las instalaciones de los pipelines de detección de
manos.

4.10 CUDA
  Compute Unified Device Architecture (CUDA) hace referencia a una plataforma de compu-
tación en paralelo incluyendo un compilador y un conjunto de herramientas de desarrollo
18                                                                             Metodología

creadas por nVidia que permiten a los programadores usar una variación del lenguaje de
programación C para codificar algoritmos en GPU de nVidia. Además, usando wrappers se
puede usar Python, Fortran y Java en vez de C o C++.
  CUDA intenta explotar las ventajas de las GPU frente a las CPU de propósito general
utilizando el paralelismo que ofrecen sus múltiples núcleos, que permiten el lanzamiento de
un alto número de hilos simultáneos. Por ello, si una aplicación está diseñada utilizando
numerosos hilos que realizan tareas independientes (que es lo que hacen las GPU al procesar
gráficos), una GPU podrá ofrecer un gran rendimiento.
  Para obtener más información sobre esta plataforma de computación, se puede acceder a
su documentación oficial: (NVIDIA, 2021).
  En este caso, CUDA se ha empleado en las instalaciones de los pipelines de detección de
manos.

4.11 Anaconda
  Anaconda es un programa de Python que contiene los paquetes más utilizados en temas
de ingeniería, matemáticas o ciencia, como pueden ser Matplotlib, SciPy y NumPy. Cuenta
con versiones para los tres sistemas operativos más importantes: Mac Os, Windows y Linux.
  Anaconda funciona como un completo gestor de paquetes que dispone de más de setecientos
de ellos en código abierto. Anaconda ofrece una gran cantidad de funciones que permiten
desarrollar aplicaciones de una forma sencilla, rápida y eficiente. Es gratis para uso personal
y comercial en las versiones de 32 y 64 bits, y se puede instalar junto a otras distribuciones
o versiones de Python sin el menor problema. Posee una interfaz gráfica de usuario muy
sencilla, pero con un gran potencial.
  Para más información sobre Anaconda, se puede acceder a su documentación oficial: (Anacon-
da, 2021).
  En este caso, Anaconda se ha empleado en las instalaciones de los pipelines de detección
de manos.

4.12 Pipelines de detección de manos
   En primer lugar, se probó a realizar un pipeline en el que se reconociera la mano para
poder interactuar con los objetos virtuales generados por ordenador.
   Consecuentemente, se pensó en realizar el proyecto en un soporte de Linux e instalando
TensorFlow, Keras y Python.
   Tras varios errores de instalación como el caso en el que se solventó el error No se pudo
bloquear /var/lib/dpkg/lock – open (11: Recurso no disponible temporalmente) durante la
instalación de Tensorflow, se decidió realizar la instalación mediante entornos virtuales.
   No obstante, se encontraron otros pipelines mejores que necesitaban otras especificaciones
diferentes a las dadas previamente por lo que el trabajo se encaminó en el intento de hacer
funcionar dichos pipelines.
4.12. Pipelines de detección de manos                                                     19

4.12.1 Pipeline I2L-MeshNet: Image-to-Lixel Prediction Network for Accurate
       3D Human Pose and Mesh Estimation from a Single RGB Image

   El primero de ellos se llama I2L-MeshNet: Image-to-Lixel Prediction Network for Accurate
3D Human Pose and Mesh Estimation from a Single RGB Image, que permitía obtener el
modelo 3D del cuerpo de las personas y también el de la manos, como se puede apreciar en
la Figura 4.4.

             Figura 4.4: Funcionamiento de I2L-MeshNet. Fuente: (mks0601, 2021)

   Sin embargo, no se pudo poner en marcha debido a sus especificaciones: Pytorch, Python
y CUDA. Algunos de los problemas que se solventaron fueron: la compatibilidad de las ver-
siones entre Pytorch, Python y CUDA, la descarga del contextlib2 adecuado para el pip, la
equivocación en la instalación para realizarlo con pip3 en lugar de pip2.
  Tras estos errores y al apreciar que no se podía llevarlo a cabo de esta forma, se probó a
instalarlo con entornos virtuales, usando Anaconda y utilizando CUDA con CPU.
  Tras observar que no funcionaba de esta forma tampoco y que se necesitaba CUDA con
GPU y consecuentemente Linux de forma nativa, se decidió desechar este pipeline ya que
tras realizar una partición de disco e instalar Linux para disponer de él de forma nativa, no
se obtuvo ningún resultado concluyente.

4.12.2 Pipeline 3D Hand Shape and Pose Estimation from a Single RGB Image

  El segundo pipeline encontrado se denomina 3D Hand Shape and Pose Estimation from
a Single RGB Image y permite obtener el modelo y esqueleto de la mano, pero al tener las
mismas especificaciones que el primero no funcionó ya que se tiene que pasar la posición XYZ
del root joint que no se conoce si no se obtiene con una cámara de depth o similar por lo que
también se desechó.
  Algunos de los resultados de este pipeline se pueden observar en la Figura 4.5
20                                                                                Metodología

     Figura 4.5: Funcionamiento de 3D Hand Shape and Pose Estimation. Fuente: (geliuhao, 2019)

4.12.3 Pipeline ColorHandPose3D network

  El último pipeline que se investigó fue el que se desechó por su mala precisión, llamado
ColorHandPose3D network. Este pipeline permitía obtener el esqueleto de la mano como se
puede apreciar en la Figura 4.6

        Figura 4.6: Funcionamiento de ColorHandPose3D network. Fuente: (zimmermc, 2017)

  Los prerrequisitos para ponerlo en marcha son: Python, TensorFlow (CUDA) y Ubuntu
Xenial. Esta vez al disponer de Linux de forma nativa con la partición, no dio problemas de
instalación aprovechando CUDA con GPU, pero degradando previamente la versión que se
tenía de TensorFlow.

  No obstante, tras varios errores como la necesidad de instalar pillow usando entornos
virtuales y Anaconda, se obtuvo el resultado esperado y se pudo observar la mala precisión
de este método.

  Los resultados se pueden observar en la Figura 4.7.
4.13. ARToolKit                                                                           21

Figura 4.7: Resultados con el pipeline 3D Hand Shape and Pose Estimation from a Single RGB
            Image.

  Como se ha comentado previamente y como se puede apreciar en los diferentes resultados
expuestos con anterioridad, este método no tiene una buena precisión sobre la que apoyarse
para realizar este proyecto.

4.13 ARToolKit
   ARToolKit es una biblioteca que permite la creación de aplicaciones de realidad aumentada,
en las que se sobrepone imágenes virtuales al mundo real. Para ello, utiliza las capacidades
de seguimiento de vídeo, con el fin de calcular, en tiempo real, la posición de la cámara y
la orientación relativa a la posición de los marcadores físicos. Una vez que la posición de
la cámara real se sabe, la cámara virtual se pueden colocar en el mismo punto y modelos
3D son sobrepuestos exactamente sobre el marcador real. Así, ARToolKit resuelve dos de
los principales problemas en la realidad aumentada: el seguimiento de punto de vista y la
interacción con el objeto virtual.
   Para obtener más información sobre ARToolKit, se puede acceder a su documentación
oficial: (Lab, 2021).
   En este caso, se trató de instalar ARToolKit en Linux para obtener un software parecido a
Vuforia en el que se pueda trabajar de forma libre con la realidad virtual y aumentada. Esto
se hizo paralelamente a las pruebas de los pipelines de detección de manos.
   Sin embargo, la instalación ocasionó muchos problemas y errores. Algunos se consiguieron
solventar como en el caso de que cuando se hacía un make, saltaba un error que no encontraba
glib.h ya que no había sido instalado correctamente.
   No obstante, ocurrieron otros errores que por ser un software desactualizado y anticuado
22                                                                                 Metodología

no se pudo llevar a cabo y hacerlo funcionar por lo que se desechó la idea de trabajar con
este programa.

4.14 ROS
   El Robot Operating System (ROS) no es realmente un sistema operativo sino un framework
y un set de herramientas, las cuales proveen la funcionalidad de un sistema operativo en un
grupo heterogéneo de ordenadores.
   La característica clave de ROS es la manera en cómo se ejecuta el software y cómo se
comunica, ya que permite diseñar software complejo sin saber cómo funciona cierto hardware.
ROS proporciona una manera de conectar una red de procesos (nodos) con el eje central. Los
nodos se pueden ejecutar en dispositivos múltiples y se conectan a ese eje en varias maneras.
   Existen tres formas de comunicación en ROS: mediante topics, servicios o acciones.
   En los topics, el nodo publicador (“Publisher”) publica de forma constante los datos que
se desean enviar y el nodo suscriptor (“Subscriber”) recoge esos datos y los utiliza en su
código. En cambio, los servicios, pese a que el funcionamiento es muy similar al de los topics,
tienen una diferencia clave, y es que, cuando envía los datos al suscriptor, necesita que este
le devuelva un resultado como feedback para poder continuar el programa, en otras palabras,
es una estructura síncrona. Por último, las acciones, que son iguales a los servicios, pero
estas son asíncronas, lo que permite enviar los datos y seguir con el programa del publicador
mientras que el suscriptor ejecuta el suyo y, una vez acabe, enviarle la respuesta al publicador.
   Por ello, se selecciona usar los topics en este proyecto porque no se necesita una respuesta
por parte del suscriptor a los datos que se envían desde el publicador. Así, el suscriptor,
posteriormente, procesaría la información y ejecutaría el programa. Además, la opción de
usar los servicios no es válida ya que se desea tener una comunicación en tiempo real y con
los servicios, al tener que esperar la respuesta para seguir ejecutando, son poco prácticos en
este sentido.
   De esta forma, en la comunicación mediante topics se podrían distinguir 5 elementos clave
en ROS, como se puede observar en la Figura 4.8:

          Figura 4.8: Estructura Publication-Subscription. Fuente: (Sugata y cols., 2017)

     • Node (nodo): ejecutable utilizado por ROS para comunicarse con otros nodos.
4.15. WSL                                                                               23

  • Msg (mensaje): archivo de texto simple para especificar la estructura de datos de un
    mensaje.

  • Topic: bus con nombre en el que los nodos intercambian mensajes, es decir, pueden
    publicar mensajes en este bus o canal y pueden suscribirse a este para recibirlos.

  • Subscriber (suscriptor): nodo especial que se encarga de recibir los mensajes de un
    topic concreto.

  • Publisher (publicador): nodo especial que se encarga de enviar los mensajes a un
    topic concreto.

  Para más información acerca de ROS, se puede acceder a su documentación oficial: (ROS,
2021).
  En este caso, ROS se usa para simular el robot Pepper y obtener una representación del
movimiento de este con el uso de Gazebo. Además, se usa también para mover el robot Pepper
en la realidad.

4.15 WSL
  Windows Subsystem for Linux (WSL) es una capa de compatibilidad desarrollada por
Microsoft para correr ejecutables de Linux (en formato ELF) nativamente en Windows 10 y
Windows Server 2019.
  Para obtener más información sobre WSL, se puede acceder a un blog acerca de la docu-
mentación sobre esta capa de compatibilidad desarrollada por Microsoft: (Microsoft, 2020).
  En este caso se ha empleado el uso de WSL para disponer de Linux en Windows y poder
tener tanto Unity como ROS en el mismo sistema operativo.

4.16 Gazebo
   Gazebo es un simulador de entornos 3D que posibilita evaluar el comportamiento de un
robot en un mundo virtual. Permite, entre muchas otras opciones, diseñar robots de forma
personalizada, crear mundos virtuales usando sencillas herramientas Computer-Aided Design
(CAD) e importar modelos ya creados.
   Además, es posible sincronizarlo con ROS de forma que los robots emulados publiquen la
información de sus sensores en nodos, así como implementar una lógica y un control que dé
órdenes al robot.
   Para obtener más información acerca de Gazebo, se puede acceder a su documentación
oficial: (Gazebo, 2021).
   En el caso del proyecto, Gazebo se usa como simulador para poder observar cómo se
interactúa con el robot que simula el Pepper y ver sus movimientos.

4.17 XLaunch/Xming
  Xming es un servicio de aplicaciones gráficas para Windows. Esto significa que accediendo
de forma remota a un sistema Linux, por ejemplo a través de un cliente SSH, podremos
También puede leer