Skip to content

TFG de Ingeniería Robótica para teleoperar robots manipuladores a partir de la posición de la mano de una persona

Notifications You must be signed in to change notification settings

Adriagent/Proyecto-TFG

Repository files navigation

Interfaz hombre-máquina mediante estimación de pose

animated

Índice:

Introducción:

Este es el proyecto de mi trabajo de fin de grado en la carrera de Ingeniería Robótica, en la Universidad de Alicante. El proyecto se ha desarrollado en Ubuntu 20.04.4 y programando en Python 3. La interfaz permite controlar una simulación en el entorno Gazebo de un robot UR y también controlar un robot real.

Instalación:

Las dependencias necesarias para que funcione el proyecto se pueden instalar automáticamente a partir del fichero requirements.txt mediante el siguiente comando.

$ pip3 install -r requirements.txt

Por otra parte, si se quiere utilizar la interfaz para controlar un robot en Gazebo, es necesario instalar el paquete de Universal Robots para ROS. La conexión entre Gazebo y la interfaz se ha hecho en ROS Noetic.

# source global ros
$ source /opt/ros/<your_ros_version>/setup.bash

# create a catkin workspace
$ mkdir -p catkin_ws/src && cd catkin_ws

# clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver

# clone fork of the description. This is currently necessary, until the changes are merged upstream.
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot

# install dependencies
$ sudo apt update -qq
$ rosdep update
$ rosdep install --from-paths src --ignore-src -y

# build the workspace
$ catkin_make

# activate the workspace (ie: source it)
$ source devel/setup.bash

Cómo usar:

Para iniciar el proyecto, es necesario haber realizado la calibración de las cámaras y del estéreo en primer lugar. Para ello hace falta utilizar un tablero de 10x7 cuadrados. En la siguiente página se puede configurar a gusto el tablero que queramos: Generate Your Own Checkerboards.

La calibración de las cámaras se lleva a cabo ejecutando el código camera_calibration.py, tras realizarla, se puede calibrar el estéreo mediante el código stereo_calibration.py. Tras realizar estos dos pasos, ya es posible comenzar a utilizar el proyecto.

El proyecto está configurado para usarse en un UR3. En caso de que queramos utilizar otro robot podemos definirlo en el fichero main.py a mano utilizando los valores de Denavit–Hartenberg. Para saber cómo definir un robot a mano, revisar la Robotics Toolbox for Python de Peter Corke. Si se define a mano el robot, la interfaz se lanzará con una representción sencilla hecha en PyPlot. Si se carga un modelo de la Robotics Tooblox de Peter Corke que cuente con su modelo en 3D, se lanzará la interfaz con una simulación de Swift.

En caso de que no se disponga de dos cámaras, el proyecto cuenta con dos vídeos y la calibración de las cámaras y el estéreo que se utilizó para obtenerlos. Por lo que se puede ejecutar la interfaz sin necesidad de disponer de ninguna cámara ni de realizar la calibración. Para lanzar el proyecto en este modo, es necesario ejecutar el pose_stereo.py con el argumento ”-vid”:

$ python3 pose_stereo.py -vid.

Interfaz modo Base:

Para ejecutar la interfaz en modo base, hay que ejecutar el fichero main.py y elegir modo 1. Esto lanzará solamente la interfaz y se quedará a la espera de que se conecte el cliente del detector de pose. Para lanzar el detector de pose, hay que ejecutar el fichero pose_stereo.py. Tras esto, se iniciará la aplicación y se moverá la simulación de la interfaz en función de la posición detectada para la mano izquierda.

# Lanzar en un terminal:
$ python3 main.py

# Lanzar en otro terminal:
$ python3 pose_stereo.py

Interfaz modo Gazebo:

Para ejecutar la interfaz en modo gazebo, hay que ejecutar el fichero main.py y elegir modo 2. Esto lanzará la interfaz y se quedará a la espera de que se conecte el cliente del detector de pose. Además, esta vez intentará leer y publicar en los topics /joint_states y /pos_joint_traj_controller/command de ROS Noetic para controlar la simulación Gazebo que se ha iniciado. La simulación en Gazebo se puede lanzar desde el paquete ur_gazebo

# Lanzar en un terminal:
$ python3 main.py

# Lanzar en otro terminal:
roslaunch ur_gazebo ur<modelo>_gringup.launch

# Lanzar en otro terminal:
python3 pose_stereo.py

Interfaz modo Demo:

Para ejecutar la interfaz en modo demo, hay que ejecutar el fichero main.py y elegir modo 3. Esto lanzará la interfaz y se quedará a la espera de que se conecten los clientes del detector de pose y del robot real que queremos controlar. Para controlar el robot real, hay que cargarle a este el código ur3_control.urp.

# Lanzar en un terminal:
$ python3 main.py

# Lanzar en otro terminal:
python3 pose_stereo.py

# Iniciar programa en el robot real.

Nota: la aplicación está diseñada para enviar y recibir mensajes mediante conexión TCP/IP con el robot real. El programa de ur_control.urp está pensado para controlar un UR3. En caso de que se quiera controlar otro robot, es necesario modificar el fichero simulation_demo.py.

Vídeo:

Demostración probando la interfaz con un robot UR3: vídeo

Créditos:

Este proyecto es un trabajo de final de grado hecho por: Adrián Sanchis Reig

Contacto

About

TFG de Ingeniería Robótica para teleoperar robots manipuladores a partir de la posición de la mano de una persona

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages