Tecnolgy 819
Tecnolgy 819
Tecnolgy 819
Tema:
Ambato - Ecuador
septiembre – 2021
i
APROBACIÓN DEL TUTOR
------------------------------------------
Ing. Franklin Salazar Logroño Mg.
TUTOR
ii
AUTORÍA
iii
APROBACIÓN TRIBUNAL DE GRADO
En calidad de par calificador del Informe Final del Trabajo de Titulación presentado
por el señor Alexis Geovanny Peñaloza Leguisamo, estudiante de la Carrera de
Ingeniería en Electrónica y Comunicaciones, de la Facultad de Ingeniería en Sistemas,
Electrónica e Industrial, bajo la Modalidad Proyecto de Investigación, titulado
SISTEMA DE CONTROL PARA LA TELEOPERACIÓN DEL ROBOT KUKA
YOUBOT MEDIANTE COMUNICACIONES INALÁMBRICAS Y EL USO DE
TARJETAS EMBEBIDAS, nos permitimos informar que el trabajo ha sido revisado
y calificado de acuerdo al Artículo 17 del Reglamento para obtener el Título de Tercer
Nivel, de Grado de la Universidad Técnica de Ambato, y al numeral 7.6 del respectivo
instructivo. Para cuya constancia suscribimos, conjuntamente con la señora Presidenta
del Tribunal.
ELSA PILAR
URRUTIA
------------------------------------------
Ing. Pilar Urrutia, Mg.
PRESIDENTA DEL TRIBUNAL
------------------------------- -------------------------------
Ing. Pamela Castro Mg. PhD. Carlos Gordón Gallegos
PROFESOR CALIFICADOR PROFESOR CALIFICADOR
iv
DERECHOS DE AUTOR
DERECHOS DE AUTOR
v
DEDICATORIA
vi
AGRADECIMIENTO
vii
ÍNDICE GENERAL
Contenido
APROBACIÓN DEL TUTOR .................................................................................. ii
AUTORÍA .................................................................................................................. iii
APROBACIÓN TRIBUNAL DE GRADO ............................................................. iii
DERECHOS DE AUTOR ......................................................................................... v
DERECHOS DE AUTOR ......................................................................................... v
DEDICATORIA ........................................................................................................ vi
AGRADECIMIENTO ............................................................................................. vii
ÍNDICE GENERAL................................................................................................ viii
ÍNDICE DE TABLAS ............................................................................................. xiii
ÍNDICE DE FIGURAS ........................................................................................... xiv
RESUMEN ............................................................................................................... xvi
ABSTRACT ............................................................................................................ xvii
CAPÍTULO I ............................................................................................................ 18
MARCO TEÓRICO ................................................................................................ 18
1.1 Tema de investigación .............................................................................. 18
1.2 Antecedentes investigativos ..................................................................... 18
1.3 Contextualización del problema.............................................................. 20
1.4 Fundamentación teórica .......................................................................... 22
1.4.1 Historia de la robótica moderna ............................................................. 22
1.4.2 Robótica..................................................................................................... 22
1.4.3 Robótica de desarrollo ............................................................................. 23
1.4.4 Robot ......................................................................................................... 23
1.4.5 Robot Kuka Youbot ................................................................................. 23
1.4.6 Estructura Física del Kuka Youbot ........................................................ 24
1.4.7 Motores del Kuka Youbot ....................................................................... 25
1.4.8 Encoder del Kuka Youbot ....................................................................... 26
1.4.9 Modelo cinemático del Kuka Youbot ..................................................... 27
1.4.10 Cadena cinemática para el manipulador del Youbot............................ 27
viii
1.4.11 Sistema Operativo Robótico .................................................................... 28
Tema (topic) .............................................................................................. 28
Paquete (package) .................................................................................... 28
Nodo (node) ............................................................................................... 28
Pila (stack) ................................................................................................. 29
Comandos de ROS ................................................................................... 29
1.4.12 Simulador 3D Gazebo .............................................................................. 30
1.4.13 Circuitos Electrónicos .............................................................................. 30
1.4.14 Microcontrolador ..................................................................................... 30
1.4.15 Tarjeta Embebidas ................................................................................... 31
1.4.16 Teleoperación ............................................................................................ 32
1.4.17 Telerobótica .............................................................................................. 32
1.4.18 Tecnologías de comunicación inalámbrica ............................................ 32
1.4.19 Modelo TCP/IP ......................................................................................... 33
1.4.20 Protocolos de comunicación sobre TCP/IP ............................................ 33
1.4.21 Socket......................................................................................................... 34
1.5 OBJETIVOS ............................................................................................. 35
1.5.1 Objetivo general ....................................................................................... 35
1.5.2 Objetivos específicos................................................................................. 35
CAPÍTULO II........................................................................................................... 36
METODOLOGÍA .................................................................................................... 36
2.1 Materiales .................................................................................................. 36
2.2 Métodos ..................................................................................................... 36
2.2.1 Modalidad de la Investigación ................................................................ 36
2.2.2 Recolección de la Información ................................................................ 37
2.2.3 Procesamiento y Análisis de Datos ......................................................... 37
2.2.4 Desarrollo del Proyecto ............................................................................ 37
CAPÍTULO III ......................................................................................................... 39
RESULTADOS Y DISCUSIÓN ............................................................................. 39
3.1 INTRODUCCIÓN .................................................................................... 39
3.2 DESARROLLO DE LA PROPUESTA .................................................. 40
3.2.1 Robot Kuka Youbot ................................................................................. 40
3.2.2 Sensores Disponibles de Kuka para Youbot .......................................... 46
ix
3.2.3 Comunicación Inalámbrica del Robot Kuka Youbot ........................... 47
3.2.4 Versiones de ROS ..................................................................................... 47
3.2.5 Comparación entre distintas versiones de ROS mayormente usadas . 47
3.2.6 Versión de ROS utilizadas ....................................................................... 48
3.2.7 Lenguajes de programación para comunicarse con ROS .................... 49
3.2.8 Diferencias entre lenguajes de programación usados con ROS ........... 49
3.2.9 Lenguaje de programación usado en el proyecto .................................. 50
3.2.10 Simuladores para ROS ............................................................................ 50
3.2.11 Simulador usado para ROS ..................................................................... 51
3.2.12 Requerimientos Técnicos del Sistema .................................................... 51
3.2.13 Diseño General del Sistema ..................................................................... 52
3.2.14 Interfaz de Comunicación ....................................................................... 54
3.2.15 Configuración del Hardware para el Youbot ........................................ 55
3.2.16 Configuración del Software para Youbot .............................................. 58
3.2.17 Nodo publicador en el robot Youbot ...................................................... 59
3.2.18 Configuración del Software para Youbot dentro de Gazebo ............... 60
3.2.19 Software programado del Kuka Youbot en Python .............................. 62
3.2.20 Simuladores de circuitos electrónicos para diseño de placas PCB ...... 65
3.2.21 Diferencias entre simuladores de circuitos electrónicos ....................... 65
3.2.22 Simulador utilizado para la creación del circuito electrónico .............. 66
3.2.23 Diagrama de pistas de la placa PCB ....................................................... 67
3.2.24 Microcontroladores con comunicación wifi ........................................... 70
3.2.25 Microcontrolador utilizado en la placa de control ................................ 71
3.2.26 Placa Electrónica de Control Wifi .......................................................... 71
Esquema del Núcleo de Control y Comunicación ICSP y USB ........... 72
Varistores de protección .......................................................................... 72
Reguladores de voltaje disponibles ......................................................... 73
Reguladores de voltaje utilizados............................................................ 73
Esquema del Circuito de Potencia .......................................................... 73
Esquema de Entradas Digitales y Análogas ........................................... 75
3.2.27 Código de Control .................................................................................... 78
Código del Kuka Youbot Real ................................................................. 78
Código del Kuka Youbot en Gazebo ...................................................... 79
x
Código del Controlador ........................................................................... 79
3.3 Presupuesto ............................................................................................... 79
3.4 ANÁLISIS Y DISCUSIÓN DE RESULTADOS ................................... 81
3.4.1 Pruebas de envío de datos al robot ......................................................... 81
3.4.2 Prueba de ejecución de datos recibidos para el movimiento de la
plataforma Youbot simulada en Gazebo ............................................... 82
3.4.3 Prueba de ejecución de datos recibidos para el movimiento de brazo
y pinza Youbot simulados en Gazebo .................................................... 82
3.4.4 Script creado para identificar los datos recibidos ................................. 83
3.4.5 Prueba de ejecución de datos recibidos para el movimiento de la
plataforma Youbot del robot real .......................................................... 84
3.4.6 Prueba de ejecución de datos recibidos para el movimiento del brazo
y pinza Youbot del robot real ................................................................. 85
3.4.7 Trayectorias predeterminadas controladas a ejecutar mediante
WiFi........................................................................................................... 86
3.4.8 Trayectoria predeterminada controlada a ejecutar mediante teclado
del computador ........................................................................................ 87
3.4.9 Trayectoria automática evitando colisionar con objetos ...................... 87
CAPÍTULO IV ......................................................................................................... 89
CONCLUSIONES Y RECOMENDACIONES ..................................................... 89
4.1 Conclusiones ............................................................................................. 89
4.2 Recomendaciones ..................................................................................... 90
C. MATERIAL DE REFERENCIA ....................................................................... 92
Bibliografía ............................................................................................................... 92
ANEXO A ................................................................................................................. 97
Código del controlador ............................................................................ 97
ANEXO B ................................................................................................................ 100
Código en el nodo del robot Kuka Youbot real ................................... 100
ANEXO C ............................................................................................................... 104
Código en el nodo del robot Kuka Youbot simulado en Gazebo ....... 104
ANEXO D ............................................................................................................... 109
Diagrama del circuito electrónico del controlador .............................. 109
ANEXO E ................................................................................................................ 110
Dimensiones de la placa PCB para la construcción del case .............. 110
ANEXO F ................................................................................................................ 111
xi
Diseño 2D en EasyEDA en comparación con la placa completamente
terminada ................................................................................................ 111
ANEXO G ............................................................................................................... 112
Diseño del diagrama de pistas por capas.............................................. 112
ANEXO H ............................................................................................................... 113
Hoja de datos técnicos del microcontrolador ESP32 .......................... 113
xii
ÍNDICE DE TABLAS
xiii
ÍNDICE DE FIGURAS
xiv
Figura 21: Diseño 3D en EasyEDA y la placa real soldado todos los elementos ..... 67
Figura 22: Modelado 2D en EasyEDA y la placa real sin soldar los elementos ........ 67
Figura 33: Prueba de movimiento del brazo y pinza del robot simulado................... 83
Figura 36: Prueba de movimiento del brazo y pinza del robot Youbot ..................... 85
xv
RESUMEN EJECUTIVO
Debido al alto costo que representa comprar accesorios para el control de maquinaria
dentro de la industria es indispensable el conocimiento necesario para poder resolver
este tipo de inconvenientes por el bienestar de cualquier empresa. El presente proyecto
de investigación tiene como objetivo la creación de un sistema de control para la
teleoperación del robot Kuka Youbot con el uso de hardware y software libre debido
a que las aplicaciones actuales con el robot en su mayoría son con secuencias
previamente programadas, limitando así un uso continuo e independiente en tiempo
real si es requerido, dentro del proyecto se explica el diseño de un circuito electrónico
creado en EasyEDA con la utilización del microcontrolador ESP32-WROOM-32, el
cual es un módulo dirigido a una amplia variedad de aplicaciones debido a su
comunicación inalámbrica Wi-Fi y Bluetooth, además de doble núcleo de CPU los
cuales pueden ser controlados individualmente. Aprovechando que este
microcontrolador se puede programar con una variedad de lenguajes se usó para la
creación de una comunicación inalámbrica con el Kuka Youbot usando el protocolo
TCP y el empleo de sockets en cada extremo. Para poder recibir la información del
control remoto se creó un nodo capaz de recibir datos por medio del protocolo TCP/IP
y publicar continuamente mensajes al nodo del robot con el tema respectivo según sean
las necesidades del operador. El sistema fue creado y puesto a prueba con un robot
Kuka Youbot real y otro dentro del simulador Gazebo con un sistema operativo
Ubuntu 16.04 y ROS Kinetic.
Este sistema para controlar el Kuka Youbot beneficia de forma directa al área de
investigación de la Universidad Técnica de Ambato, así como a sus estudiantes y
docentes por la entrega de un circuito PCB con licencia abierta a modificaciones según
aparezcan nuevas necesidades, además hace un gran aporte al entendimiento de la
robótica.
Palabras claves: Kuka, Youbot, WiFi, ESP32, socket, python, ROS, control
inalámbrico
xvi
ABSTRACT
Due to the high cost of buying accessories for the control of machinery in the industry,
the necessary knowledge is essential to be able to solve this type of problems for the
wellness of any company. The main objective of this research project is the creation
of a control system for the teleoperation of the Kuka Youbot robot with the use of free
hardware and software because the current applications with the robot are mostly with
previously programmed sequences, limiting a continuous and independent use in real
time if required, inside the project the design of an electronic circuit is explained which
was created in EasyEDA with the use of the ESP32WROOM32 microcontroller, which
is a module focused on a wide variety of applications with its Wi-Fi and Bluetooth
wireless communication, taking advantage of the fact that this microcontroller can be
programmed with a variety of languages, it was used to create a wireless
communication with the Kuka Youbot using the TCP protocol and the use of sockets
at each end. To receive the information from the remote control, a node was created
with the ability to receive data through the TCP / IP protocol and continuously publish
messages to the robot node with the respective topic according to the needs of the
operator. The system was created and tested with a real Kuka Youbot robot and another
inside the Gazebo simulator with an Ubuntu 16.04 operating system and ROS Kinetic.
This system to control the Kuka Youbot directly benefits the research area of the
Technical University of Ambato, as well as its students and teachers by delivering a
PCB circuit with a license open to modifications, it also makes a great contribution to
the understanding of the robotics.
xvii
CAPÍTULO I
MARCO TEÓRICO
[1]
18
AL5A; joystick de video juegos, un teléfono móvil y la interfaz haptica Novint Falcon.
Teniendo con un mejor nivel de inmersiñon a la interfaz Novint Falcon, por el efecto
de un movimiento tridimensional desde la estación de teleoperación.
[2]
[5]
19
En vista de todo lo analizado previamente se creó un sistema de control para la
teleoperación del robot Kuka Youbot con ayuda del microcontrolador ESP-WROOM-
32 el cual es un módulo con comunicación inalámbrica wifi y bluetooth facilitando la
comunicación inalámbrica mediante el protocolo TCP y la creación de socket en los
extremos de la comunicación, este MCU cuenta con software y hardware libre de bajo
costo para realizar diferentes tipos de aplicaciones y asegurar con el perfecto
funcionamiento del Kuka Youbot.
20
En el 2019 se produjo el incendio de la catedral de Notre Dame en el cual se pudo
apreciar al robot COLOSSUS, un robot bombero equipado con un cañón de agua y
manipulado a control remoto para proteger la vida de los bomberos evitando el
contacto cercano a las llamas. En la actualidad la gran parte de los robots industriales
cuentan con una manipulación mediante una previa codificación de rutinas en el
controlador dificultando así la manipulación en tiempo real en caso de necesitarlo,
debido que para poder controlar los diferentes autómatas de forma inalámbrica en
tiempo real se necesita adquirir equipos directamente a la marca registrada del mismo,
aumentado drásticamente el costo para la empresa o institución que adquirió el robot.
En la Universidad Técnica de Ambato se cuenta por el momento con tres equipos robot
Kuka Youbot para la desarrollo e investigación de la automatización. La gran parte de
las aplicaciones realizadas con Kuka Youbot provienen de investigaciones con previa
programación en el ordenador del robot, donde se debe cargar instrucciones para la
planificación de rutas desde la API de Youbot, con el envío de datos al nodo
correspondiente según el tema con el cual opere la plataforma y al brazo Kuka,
limitando un control preciso y rápido adaptándose a las necesidades del operador en
caso de requerir una manipulación continua a distancia, esto limita al programador en
crear aplicaciones con integración de nuevas tecnologías de comunicación, forzando a
crear programas con bajo rendimiento con tiempos de respuesta lentos por las
diferentes interfaces de comunicación debido que se requiere la utilización de software
y hardware controlado y diseñado por el fabricante. [8] [9] Para mejorar la
manipulación del robot Kuka Youbot se ha puesto en marca esta investigación la cual
tiene como finalidad de controlar al robot a través de la navegación controlada por
comunicaciones inalámbricas desarrollando un sistema de control inalámbrico para
manipular del robot Kuka Youbot beneficiando directamente a los docentes,
investigadores y estudiantes de la Universidad Técnica de Ambato, proporcionando un
diseño PCB de licencia abierta que puede ser modificado los códigos programable de
21
operación, originando una sociedad capaz de apoyar el incremento el conocimiento de
la robótica.
Las investigaciones algorítmicas de los años 40 dadas por Huffman fueron de gran
alcance debido que se pudo ir paralelamente con la inteligencia artificial para la
robótica permitiendo el desarrollo de sistemas secuenciales. Los automatismos se
formalizaron gracias al álgebra de Boole. Uno de los primeros sensores fue patentado
en 1956 por Gc Devol, el cual por medio de magnetos para accionar un dispositivo
mecánico registraba señales eléctricas en un controlador. [10]
1.4.2 Robótica
22
presente una persona para controlarla. [11]
1.4.4 Robot
El robot Kuka Youbot siendo un manipulador móvil fue creado principalmente para el
desarrollo de la educación e investigación por lo cual es considerado un robot de
escritorio. Kuka Youbot se considera un robot muy significativo dentro de la
investigación y desarrollo robótico debido haber abierto un nuevo camino con la
transferencia de conocimientos tecnológicos en la comunidad de la robótica. [13]
23
1.4.6 Estructura Física del Kuka Youbot
El brazo cuenta con un amplio rango de giro de 338° como se puede apreciar en la
Figura 2. La estructura abierta del brazo robótico permite observar y aprender sobre el
funcionamiento y el mecanismo interno del robot con el fin de ayudar a los estudiantes
e investigadores poder avanzar en sus estudios. [13]
24
Figura 3: Giro del brazo del Kuka Youbot [13]
El robot Kuka Youbot es un pequeño robot móvil de escritorio desarrollado con una
plataforma de código abierto para la investigación científica, el cual cuenta con un
sistema de motores brushless de MAXON MOTOR, estos motores facilitan su
25
operabilidad debido al reducido espacio en el interior del brazo y el chasis del robot,
dichos componentes están ensamblados directamente en las articulaciones del brazo
robótico. MAXON MOTOR y KUKA trabajaron conjuntamente para el desarrollo de
un motor especial, particularmente ligero, preciso y de uso robusto. El brazo robótico
trabaja con un total de cinco motores brushless planos de marca maxon, es motor sin
escobillas “EC45 flat, EC32 flat” en combinación con reductores especiales y
encoders. La plataforma trabaja con cuatro motores brushless planos sin escobillas
“EC45”, estos motores suministran una potencia entre 15 y 50 W, manteniendo un
mínimo peso de 46 g y 110 g. [14]
Las articulaciones del brazo robótico cuentan con encoders que usan el mínimo espacio
para permitir la medición de ángulos gracias a la interpolación, además tienen un gran
número de pulsos. Maxon Encoder MR, tipo L. [14]
26
1.4.9 Modelo cinemático del Kuka Youbot
El robot Kuka Youbot gracias a sus cuatro llantas tipo Mecanum la plataforma
omnidireccional se puede un desplazamiento en el plano cartesiano dentro de los ejes
“X” y “Y”, las ruedas cuentan con rodillos colocados estratégicamente a 45º del eje
principal para obtener un modelo cinemático confiable. Se puede cambiar la traslación
transversal y rotación variando las velocidades lineales y sentido de giro de cada rueda
de la plataforma. [15]
27
1.4.11 Sistema Operativo Robótico
Tema (topic)
Los temas dentro de ROS son canales de información encargados de comunicar los
nodos entre sí, cada nodo puede emitir o suscribir información mediante los temas
siendo estos nada más que el mensaje que se envía o recibe en distintos tipos de clases.
[18]
Paquete (package)
Nodo (node)
28
Pila (stack)
Comandos de ROS
roscore: Utilizado para ejecutar todo lo necesario para dar soporte de ejecución al
sistema completo de ROS. Es necesario su ejecución en todo momento para permitir
que se comuniquen los nodos mediante un determinado puerto.
roscreate-pkg: Este comando debe ser ejecutado desde el espacio de trabajo válido
para contener paquetes y es el encargado de crear e inicializar un paquete.
29
roswtf: Permite identificar errores por lo cual primero se debe ejecutar roscd y después
roswtf. [19]
1.4.14 Microcontrolador
30
1.4.15 Tarjeta Embebidas
Las tarjetas embebidas son circuitos electrónicos que poseen como función controlar
automáticamente los procesos de diferentes máquinas o actuadores teniendo en cuenta
que contiene un microprocesador, existen 3 pasos fundamentales dentro de estos
sistemas electrónicos para su funcionamiento, los cuales son: entrada de datos,
procesamiento y salida de la información. [23]
31
1.4.16 Teleoperación
1.4.17 Telerobótica
La transmisión de datos por medio del aire en dos o más dispositivos sin el uso de
cables o cualquier tipo de soporte físicos se le conoce como comunicaciones
inalámbricas, como no cuenta con un soporte físico la mayor desventaja que mantiene
es su vulnerabilidad de seguridad debido a que cualquier persona se podría conectar
desde cualquier lugar cercano, la distancia de operación varía según los distintos tipos
de comunicaciones inalámbricas.
Las comunicaciones inalámbricas debido a que se basan en ondas de radio que
permiten movilidad y flexibilidad a diferencia de las comunicaciones por cableado, a
pesar de eso las comunicaciones inalámbricas tienen una velocidad de transmisión de
108 Mbps que es muy baja en comparación de las comunicaciones cableadas que
llegan a 1 Gbps, una ventaja es que se pueden combinar los dos tipos de
comunicaciones si es necesario debido a su compatibilidad para así poder alargar
distancias o poder llegar a lugares donde la señal inalámbrica no puede llegar por
obstrucción de obstáculos muy grandes. [27]
Wifi: La señal wifi tiene un alcance de hasta 250 metros en exteriores sin obstáculos,
pertenece a tecnologías inalámbricas de corto alcance la cual en su mayoría de veces
es utilizada en departamentos habitacionales, edificios con oficinas o centros
educativos para comunicar dispositivos de forma inalámbrica, tecnología con un ancho
de banda de entre 2.4 GHz y 5GHz basada en IEEE 802.11 de tecnología de
32
comunicaciones inalámbricas manteniendo 13 o 25 canales según su ancho de banda.
[28]
Wimax: World Wide Interoperability for Microwave Access o Wimax conocido así
por sus siglas, esta tecnología es un estándar tecnológico basado en IEEE 802.16 de
comunicaciones inalámbricas de acceso de banda ancha aplicado para largas distancias
con un alcance hasta 70km según los obstáculos presentes entre tx y rx, utiliza ondas
de radio en las frecuencias superiores a 2.3GHz. [29]
Bluetooth: Bluetooth es un estándar tecnológico IEEE 802.15 diseñado para
comunicaciones a corta distancia con un alcance máximo de 10m, a nivel mundial
utiliza la frecuencia de 2.4GHz. Para comunicar dispositivos mediante Bluetooth se
sigue un esquema maestro-esclavo el cual soporta hasta ocho dispositivos conectados
simultáneamente en una configuración básica de comunicación. [30]
33
estas normas deben de usarse de forma obligatoria en todas las máquinas para que la
comunicación no resulte caótica entre distintas marcas de dispositivos.
Socket TCP y UDP: Los sockets UDP utilizan el protocolo de datagramas de usuario,
necesitando que le entreguen paquetes de datos que el usuario debe construir y los TCP
utilizan el protocolo de control de la transmisión el cual admite bloques de datos cuyo
tamaño puede ir desde 1 byte hasta muchos K bytes. UDP al perder información no
hace nada en cambio TCP lo retransmitirá hasta que los datos sean entregados
correctamente o se produzca un número máximo de retransmisiones. [33]
1.4.21 Socket
34
1.5 OBJETIVOS
35
CAPÍTULO II
METODOLOGÍA
2.1 Materiales
36
Robótica de la Facultad de Ingeniería en Sistemas, Electrónica e Industrial.
37
utilizarse en el módulo controlador.
38
CAPÍTULO III
RESULTADOS Y DISCUSIÓN
3.1 INTRODUCCIÓN
El sistema de control esta dado por la creación de una tarjeta electrónica con
comunicación wifi, usando un microcontrolador esp32-wroom-32 el cual es un módulo
genérico con capacidad de comunicación wifi y bluetooth, dando acceso al uso de
sockets y tener una comunicación fluida entre la placa controladora y el robot, el
controlador puede ser programado en distintos lenguajes de programación como
Python, C++, ESP-IDF, entre otros. Los distintos botones y joysticks que se
encuentran en el controlador se podrá modificar su acción dependiendo del usuario y
el lenguaje en el que se programe, para lo cual solo se necesita revisar la Tabla 4 Para
identificar los pines usados. La comunicación inalámbrica fue puesta a prueba con el
simulador gazebo y luego utilizando elementos reales para hallar un óptimo
funcionamiento del sistema. La comunicación WiFi entre el controlador y el Kuka
funciona con el establecimiento de un enlace de comunicación bidireccional entre
servidor-cliente con el protocolo TCP, creando un circuito virtual para el intercambio
fiable de datos entre ambos extremos.
39
3.2 DESARROLLO DE LA PROPUESTA
Es un robot conformado por una plataforma móvil con 4 ruedas Mecanum (son ruedas
especiales compuesta de rodillos instalados a 45° Figura 8) accionadas por motores
brushless de maxon, uno o dos brazos robóticos desmontables en el chasis, los cuales
pueden operar de forma separada vía ethernet. Es considerado un robot de escritorio
debido a su pequeño tamaño de 53 cm de longitud, 36 cm de anchura y 11 cm de altura
(Tabla 3), las recomendaciones del manual nos dicen operarlo en un lugar amplio
debido a su gran fuerza de movimiento lo que puede dañar objetos, herir personas o
sufrir daños el robot de forma permanente.
40
La plataforma de Youbot cuenta con cuatro ruedas Mecanum con motores sin frenos
mecánicos, el control de los motores es por medio de interfaz EtherCAT. La plataforma
tiene la capacidad de moverse a cualquier dirección y posicionarse de forma precisa,
cuenta con un eje oscilante para compensar las irregularidades del suelo.
41
Al contar con ruedas Mecanum el robot Youbot se puede desplazar con facilidad solo
con invertir el sentido de giro de distintas ruedas como se puede ver en la Figura 10.
42
El brazo robótico tiene un sistema cinemático de 5 ejes con servomotores los cuales
no cuentan con frenos mecánicos, en la Tabla 4 se pueden apreciar las características
principales. La base de este cuenta con una entrada de 24 VDC y de comunicación de
datos RJ45. El brazo puede ser utilizado de forma independiente sin la necesidad de la
plataforma y cuenta con las siguientes secciones como se puede ver en la Figura 11,
además podemos observar en la Tabla 5 el alcance del brazo Youbot.
La pinza del Youbot tiene un motor en cada uno de sus dedos que pueden ser movidos
de forma independiente con una apertura máxima de 10mm hacia cada lado, teniendo
la capacidad de sujetar pequeños cubos o barras de 20mm (Figura 12) y cuenta con su
43
propia función antibloqueo para evitar soltar la pieza agarrada en un fallo energético.
Voltaje 24 24 24 24 24 24
nominal
(V)
Corriente 2.32 2.32 2.32 1.07 0.49 2.32
nominal (A)
Torque 82.7 82.7 82.7 58.8 - 82.7
nominal
(Nm)
Inductancia 0.573 0.573 0.573 2.24 7.73 0.573
terminal
(mH)
Resistencia 0.978 0.978 0.978 4.48 13.7 0.978
terminal (Ω)
Momento de 13.5 13.5 13.5 9.25 3.5 13.5
inercia (𝐾𝑔 ∗
44
𝑚𝑚2 )
CAJA DE
CAMBIOS
Relación de 156 156 100 71 71 26
reducción
Momento de 0.409 0.409 0.071 0.07 0.07 0.14
inercia (𝐾𝑔 ∗
𝑚𝑚2 )
Peso (gr) - - - - - 224
CODIFICA
DOR
Revolucione 4000 4000 4000 4000 4000 4000
s
Los dedos por defecto que llegan al comprar el robot son cortos y rígidos por lo cual
no puede sujetar objetos redondos con facilidad, para poder manipular este tipo de
objetos existen a la venta unos grippers adaptativos triple de FESTO llamados
FinGrippers vistos en la Figura 13, gracias al aquipo RoboCup de la Universidad de
Ciencias Aplicadas de Bonn-Rhine-Sieg que lograron adaptar al sistema original
Youbot de dos dedos con un mecanismo paralelo sin la necesidad de algún software
de control o placa electrónica nueva que puede ser comprado o impreso en 3D como
se puede visualizar en la Figura 12. La fricción de los ejes dependerá de la precisión
de la impresora 3D utilizada dando como resultado que si los orificios son muy
pequeños la fricción sube a tal punto que los motores de la pinza no podrán mover la
pinza Kuka Youbot. [38]
45
Tabla 7: Especificaciones de la Pinza
ASUS Xtrion PRO-LIVE es una cámara 3D que infiere distancias a partir de un patrón
capturado utilizando un proyector de infrarrojos y una cámara de infrarrojos, consta
de una cámara web a color con un rango de detección de 0.8m – 3.5m. [40]
Microsoft LifeCam es una cámara web USB, la cual contiene controladores Linux
UVC por lo que no necesita ningún tipo de instalación más que conectar la cámara al
conector USB del robot. [41]
46
3.2.3 Comunicación Inalámbrica del Robot Kuka Youbot
El robot cuenta con una placa Mini-ITX y un procesador Intel Atom Dual Core D510
(Tabla 8), por lo que al cargar el sistema operativo Ubuntu junto con ROS se convierte
en un computador que solo necesita la conexión de una pantalla, teclado y mouse para
usarse como cualquier otro computador, gracias a esto se puede instalar los drivers
necesarios para obtener conexión WiFi mediante de un adaptador wifi USB
Para poder comparar las versiones con mayor uso de ROS se debe tener en cuenta la
compatibilidad que soporta con los distintos sistemas operativos disponibles,
requerimientos de funcionamiento mínimo y programas necesarios para su
funcionamiento o simulación para no tener limitaciones en la configuración del
sistema a diseñarse.
47
1.4.16 Fedora 32 Ignition Citadel
Ogre 1.9!
OpenCV 4.2!
PCL 1.10!
PyQt 5.14.1!
Qt5 5.12.5!
Melodic C++14 Ubuntu Artful 2018 Boost 1.62
Python 2.7 (17.10) CMake3.9.1
Lisp SBCL Ubuntu Bionic Gazebo 9.0.0*
1.3.14 (18.04) Ogre 1.9
Debian Stretch OpenCV 3.2*
Fedora 28 PCL 1.8.1
PyQt 5.7
Kinetic C++11 Ubuntu Wily 2016 Ogre3D 1.9.x
Python 2.7 (15.10) Gazebo 7
Lisp SBCL 1.2.4 Ubuntu Xenial PCL 1.7.x
CMake 3.0.2 (16.04) OpenCV 3.x
Boost 1.55 Debian Jessie Qt 5.3.x
Fedora 23 PyQt5
Fedora 24
Hydro C++03 Ubuntu Precise 2013
Boost 1.48 (12.04 LTS)
Lisp SBCL 1.0.x Ubuntu Quantal
Python 2.7 (12.10)
CMake 2.8.3 Ubuntu Raring
(13.04)
Para el robot real Kuka Youbot ha estado disponibles solo 3 versiones de ROS
(Versión 0.3.0: Ubuntu 10.04 con ROS Electric, Versión 0.4.0: Ubuntu 12.04 con ROS
Fuerte, Versión 1.0.1: Ubuntu 12.04 con ROS Hydro), lo cual al comprar el robot por
48
defecto desde febrero del 2015 llega con la versión 1.0.1 Ubuntu 12.04 con ROS
Hydro, se adquiere un dispositivo USB Live que viene con Ubuntu y ROS listos para
su instalación en casi cualquier computador, este dispositivo de instalación ya cuenta
con todos los controladores y aplicaciones para el control del Youbot. [45]
Debido que C++ y Python mantienen más información para publicar y suscribir a
diferentes temas dentro de ROS son lenguajes de programación expuestos en la
siguiente Tabla 9 comparativa siendo los mismos que pueden ser usados para
programar nodos de comunicación con ROS, por lo cual se expondrá las características
con mayor importancia para tener un mayor rendimiento y facilidades del
programador.
49
programación
V-REP proporciona interfaces para scripts lua integrados, nodos ROS y diferentes
clientes API para un modelo Youbot de Kuka, además de interfaces de cinemática
inversa y solucionadores de planificación de rutas. [48]
OpenRAVE cuenta con todo el DOF del robot Kuka Youbot, al integrar a Youbot con
este simulador se puede usar IKFAST, estadísticas de enlaces, mapas de capacidades,
varios planificadores y accesibilidad inversa. [49]
Webots contiene el DOF completo del Youbot de Kuka con un modelo preciso en la
física del robot, con ruedas omnidireccionales extremadamente realistas, además
cuenta con una facilidad de ampliación con los sensores Hokuyo o Kinect y la facilidad
50
de modificar el modelo de 2 brazos, 1 brazo o solo plataforma. [50]
Gazebo es uno de los simuladores con mayor trabajo dentro de la robótica por ser
calificado de porfa positiva por programadores experimentados, por lo cual además se
puede obtener más información para su utilización. Se cuenta con muchos diseños
funcionales del robot Kuka Youbot en internet para poder simular, además se tomó en
cuenta la facilidad de instalación juntamente con ROS en un solo comando dentro del
terminal de Ubuntu (sudo apt-get install ros-kinetic-desktop-full).
Según las características propias del robot Kuka Youbot y el software disponible
dentro del mismo se consideró necesario especificar los requerimientos técnicos para
una comunicación segura con el robot que se detallan a continuación.
51
3.2.13 Diseño General del Sistema
52
Figura 14: Diagrama del Sistema General
Fuente: Investigador (Photoshop)
53
3.2.14 Interfaz de Comunicación
El segundo procedimiento es del funcionamiento del cliente que cuenta solo con un
proceso “connect”, encargado de”, encargado de establecer la conexión con el servidor
debido que mantiene la dirección IP y puerto de enlace hacia el servidor el cual debe
ser aceptado por “accept” anteriormente mencionado en los procesos del servidor.
El tercer y último procedimiento es del envío y recepción de datos que cumple con los
procesos “send” y “sendto”, encargadas del envío de datos con el control de número
de bytes que retornan al ser enviados efectivamente y en donde se encuentra la
dirección de memoria de los datos a enviar. Los procesos “recv” y “recvfrom” son
encargados de recibir los datos enviados conteniendo la longitud en bytes y la
dirección de memoria donde se depositan.
[51]
54
Figura 15: Interfaz de Comunicación
Fuente: Investigador (Photoshop)
Dentro de la plataforma Youbot viene integrado una batería y una placa Mini-ITX
(Tabla 3) como computador, el cual es un PC industrial capaz de comunicarse en ciclos
de 1ms a través de EtherCAT. El robot cuenta con conexión de dispositivos de entrada
y salida para controlar la PC integrada directamente, para ello se necesita un teclado
usb, un mouse usb y un monitor con cable VGA lo cual se conectan un lateral como
se muestra en la Figura 16.
55
Figura 16: Dispositivos E/S Youbot
Fuente: Investigador
56
Cada articulación del brazo Youbot viene equipado con codificadores de posición
relativa para medir los ángulos de las articulaciones desplazando angularmente con
respecto a una posición de referencia, también llamada posición de descanso para
indicar que al inicio de la programación se debe comenzar desde este punto. Como
recomendación dentro del manual de usuario se debe mover las articulaciones con
lentitud al acercarse a estos límites (puede verse en las Figuras 2 y 18) y así evitar
daños.
El encendido del robot se inicia con los dispositivos de E/S necesarios previamente
conectados y con el brazo Youbot en su posición inicial, es necesario presionar por
unos segundos el botón ON/OFF para encender la alimentación, presionar por una
segunda vez para iniciar el PC interno y una tercera vez para encender los motores de
la plataforma Youbot, el brazo Youbot tiene su propio botón ON/OFF. En caso de
querer apagar el robot se procede a presionar los botones de la misma manera para
57
encender, pero en el orden contrario sin ser necesario apagar desde el monitor.
El robot Kuka Youbot viene con un USB cargado con el instalador de Ubuntu y los
drivers necesarios para el control del robot. Puede ser instalado en un PC aparte para
usar el brazo Youbot por separado o en la PC que viene internamente en la plataforma,
debe ser conectado el USB en la parte lateral Figura 16. Se debe priorizar la
inicialización de dispositivo de arranque en ““Hard Disk Drives” ingresando a BIOS.
Para iniciar a usar el Youbot se debe instalar la librería Youbot API con los comandos
“sudo apt-get install ros-hydro-youbot-driver” y “sudo ldconfig /opt/ros/hydro/lib”. Se
debe configurar el archivo:
#in youbot-manipulator.cfg
[JointTopology]
ManipulatorJoint1 = 5
ManipulatorJoint2 = 6
ManipulatorJoint3 = 7
ManipulatorJoint4 = 8
ManipulatorJoint5 = 9
58
youbot-manipulator.cfg: En la dirección /opt/ros/hydro/share/youbot_driver/config/
#in youbot-manipulator.cfg
[JointTopology]
ManipulatorJoint1 = 5
ManipulatorJoint2 = 6
ManipulatorJoint3 = 7
ManipulatorJoint4 = 8
ManipulatorJoint5 = 9
59
arreglo de valores dentro de vectores y finalmente unir todos los vectores en uno
llamado points.
Para el uso de Gazebo se usó Ubuntu 16.04 el cual es compatible con ROS Kinetic por
lo cual se siguió las instrucciones para plataformas Ubuntu dentro de
http://wiki.ros.org/kinetic/Installation/Ubuntu. Antes de iniciar con la instalación se
debe configurar los repositorios de Ubuntu para permitir “multiverso” dentro de
Software&Updates. Luego de debe configurar el computador para aceptar de
60
packages.ros.org los softwares necesarios, mediante el siguiente comando.
Si se desea se puede agregar la sesión bash para cada vez que se lanza un nuevo Shell,
así se agregan las variables de entorno ROS automáticamente.
Finalmente, se inicializa rosdep para que nos permita instalar fácilmente dependencias
del sistema.
Con las configuraciones anteriores tenemos lista nuestra computadora para poder
simular con ROS y Gazebo. Debido a que es un entorno simulado debemos descargar
los paquetes necesarios para poder simular al robot Kuka Youbot. Para la simulación
se clonó los paquetes directamente del repositorio de mas-group en github. Se escogió
estos paquetes debido a que fueron los que no presentaron ningún tipo de error al ser
ejecutado el nodo.
61
git clone https://github.com/mas-group/youbot_description.git
#!/usr/bin/env python
import roslib
import rospy
from geometry_msgs.msg import Twist
import sys, signal
import socket
HOST = '192.168.43.85'
PORT = 33657
s = socket.socket()
s.bind((HOST, PORT))
s.listen(1)
Se crea variables tipo diccionario para poder acceder a los elementos necesarios
mediante una clave para poder mover al robot, la clave son las letras enviadas desde el
cliente. Los datos extraídos posteriormente se usan en el método correspondiente para
realizar el movimiento requerido.
moveBindings = {
# x,y,relacion tetha
'i':(1,0,0), # adelante
'o':(1,0,-1), # adelante + rotación derecha
'j':(0,1,0), # izquierda
'l':(0,-1,0), # derecha
'u':(1,0,1), # adelante + rotación derecha
62
',':(-1,0,0), # atrás
'.':(-1,0,-1), # atrás + rotación derecha
'm':(-1,0,1), # atrás + rotación izquierda
'v':(0,0,1), # gira a la izquierda en su lugar
'b':(0,0,-1), # gira a la derecha en su lugar
}
speedBindings={
'q':(1.1,1.1), # aumentar las velocidades
máximas en un 10%
'z':(.9,.9), # disminuir las velocidades máximas
en un 10%
'w':(1.1,1), # aumentar solo la velocidad lineal
en un 10%
'x':(.9,1), # disminuir solo la velocidad lineal
en un 10%
'e':(1,1.1), # aumentar solo la velocidad angular
en un 10%
'c':(1,.9), # disminuir solo la velocidad angular
en un 10%
}
moveArm = {
'r':(5.80,1.05,-3.44,1.73,2.95), # movimiento
específico
't':(0.11,0.11,-0.11,0.11,0.11), # movimiento a
home
}
moveGripper = {
'f':(0.011), # abre la pinza
'g':(0), # cierra la pinza
}
Damos valores iniciales de velocidad y se crea un método para luego llamar en caso
de querer aumentar la misma, se recomienda no variar la velocidad mucho ya que el
robot cuenta con fuerza en sus movimientos y a la velocidad que se le da por defecto
se mueve con la suficiente rapidez.
speed = 0.1
turn = 0.1
def vels(speed,turn):
return "currently:\tspeed %s\tturn %s " % (speed,turn)
63
diccionario de Python moveBindings.
if __name__=="__main__":
settings = termios.tcgetattr(sys.stdin)
pub = rospy.Publisher('cmd_vel', Twist)
rospy.init_node('teleop_twist_keyboard')
x=0
y=0
th = 0
status = 0
try:
while(1):
client, addr = s.accept()
while True:
content = client.recv(1024)
if len(content)==0:
break
else:
key = content
client.close()
if key in moveBindings.keys():
x = moveBindings[key][0]
y = moveBindings[key][1]
th = moveBindings[key][2]
elif key in speedBindings.keys():
speed = speed * speedBindings[key][0]
turn = turn * speedBindings[key][1]
if (status == 14):
status = (status + 1) % 15
elif key in moveArm.keys():
join0 = moveArm[key][0]
join1 = moveArm[key][1]
join2 = moveArm[key][2]
join3 = moveArm[key][3]
join4 = moveArm[key][4]
elif key in moveGripper.keys():
64
gripp = moveGripper[key][0]
else:
x=0
y=0
th = 0
join0 = 0.11
join0 = 0.11
join0 = -0.11
join0 = 0.11
join0 = 0.11
gripp = 0
if (key == '\x03'):
break
Entre los programas más usados para el diseño de circuitos electrónicos y placas PCB
podemos encontrar a Eagle, Proteus y EasyEDA. Estos softwares de diseño PCB son
usados de forma profesional para generar archivos gerber con la información necesaria
para crear los circuitos impresos con máquinas CNC especializadas para obtener
placas PCB con exactitud milimétrica y acabados profesionales.
Para empezar con el diseño de la placa PCB de control se tomó en cuenta las
principales características de los softwares de diseño presentadas en la siguiente Tabla
11 comparativa.
Tabla 11: Diferencias entre softwares de diseño electrónico
Diseño Online No No si
Variedad de los Si Si si
elementos básicos
65
electrónicos del librerías para librerías para online no es
mercado ciertos ciertos necesario
elementos elementos buscar para
como placas, como placas, descargar
módulos o módulos o elementos
sensores sensores diseñados por
otros usuarios
Simulación de los Si Si Si
diseños electrónicos
El diseño del controlador fue creado en la plataforma online EasyEDA debido a las
ventajas presentadas en la Tabla 11, principalmente por la interfaz amigable, la
facilidad de trabajar directamente con elementos disponibles en el mercado y la
capacidad de poder enviar a fabricar placas profesionales a un precio accesible.
66
Figura 21: Diseño 3D en EasyEDA y la placa real soldado todos los elementos
Fuente: Investigador (EasyEDA)
Figura 22: Modelado 2D en EasyEDA y la placa real sin soldar los elementos
Fuente: Investigador (EasyEDA)
Las pistas fueron dimensionadas teniendo en cuenta el espesor con el que la fábrica
JLCPCB proporciona para poder hacer el pedido de placas PCB. Esta fábrica da la
𝑜𝑧 𝑜𝑧
opción de escoger entre 1 𝑓𝑡 2 y 2 𝑓𝑡 2 para el espesor entre las capas superior e inferior,
teniendo en cuenta que la corriente máxima entre los pines del microcontrolador y
dispositivos de entrada es de 80mA, la temperatura máxima con la cual se va a operar
el controlador es a temperatura ambiente y solo se cuenta con dos capas en el diseño
67
se usó las siguientes fórmulas para determinar un ancho óptimo de las pistas.
Á𝑟𝑒𝑎
𝐴𝑛𝑐ℎ𝑜 =
1.378 𝐺𝑟𝑜𝑠𝑜𝑟
(1)
1
𝐼 𝑘3
Á𝑟𝑒𝑎 = [ ]
𝑘1 𝛥𝑇𝑘2
(2)
En donde:
𝐼: Corriente máxima
Á𝑟𝑒𝑎: área de la pista entre el espesor y ancho de la pista
𝛥𝑇: diferencia de temperatura
𝐺𝑟𝑜𝑠𝑜𝑟: espesor de la pista
𝐴𝑛𝑐ℎ𝑜: ancho de la pista
𝑘1 , 𝑘2 , 𝑘3 : constantes dependientes del lugar de la pista (interna o externa)
Debido que solo existe dos capas en el diseño (superior e inferior) los valores de las
constantes son los siguientes: 𝑘1 =0.0647, 𝑘2 =0.4281, 𝑘3 =0.6732. La temperatura
máxima de operabilidad del microcontrolador según su datasheet es 85ºC y la corriente
máxima en los pines de entrada y salida es de 80mA.
1
80𝑥10−3 0.6732
Á𝑟𝑒𝑎 = [ ]
0.0647(85 − 25)0.4281
1.485442662
80𝑥10−3
Á𝑟𝑒𝑎 = [ ]
0.0647(60)0.4281
1
Á𝑟𝑒𝑎 = [0.0028 ]0.6732
Á𝑟𝑒𝑎 = 0.1014327471
0.17699
𝐴𝑛𝑐ℎ𝑜 =
1.378 ∗ 1
Para las pistas en el área de potencia se utiliza un máximo de 3ª por lo cual el grosor
es el siguiente:
1
3 0.6732
Á𝑟𝑒𝑎 = [ 0.4281
]
0.0647(85 − 25)
Á𝑟𝑒𝑎 = 22.09588
22.09588
𝐴𝑛𝑐ℎ𝑜 =
1.378 ∗ 1
Con estos datos se determinó aumentar un 35% el grosor de la pista para evitar la
separación del cobre en la placa por altas temperaturas como medida preventiva. El
ancho final de las pistas en el área de potencia fue de 0.55mm.
69
Figura 24: Diagramas de pistas superior e inferior
Fuente: Investigador (EasyEDA)
ESP8266 y ESP32 son los microprocesadores con mayor uso para la comunicación
inalámbrica con aplicaciones muy exigentes como la transmisión de música,
codificación y decodificación de voz. Se puede apreciar las diferencias entre los dos
microprocesadores en la Tabla 12.
Número de 32 32 - 32
Bits
70
Procesador Tensilica LX6 Tensilica L106 - RM Cortex-
M4
Pines GPIO 32 16 54 34
utilizables
ADC 12 1 16 21
DAC 2 No 14 12
WiFi Si No No
Bluetooth Si No No No
Después de investigar entre los microcontroladores más usados y entre ellos los que
cuentan con comunicación WiFi expuesto en la Tabla 12, para la facilidad de no usar
módulos extra en la conectividad inalámbrica y debido que se requiere el uso de 2
joysticks, los mismo necesitan 2 entras análogas cada uno se decidió usar el
microcontrolador ESP32 ya que cuenta con 12 entradas ADC y conectividad directa
mediante WiFi y Bluetooth a diferencia del ESP8266 que solo tiene una entrada
análoga.
71
información hacia el robot Kuka Youbot con la ayuda de componentes análogos y
digitales. La placa cuenta con un microcontrolador para identificar la información
enviada por los componentes y poder reenviarla de forma inalámbrica al robot.
Varistores de protección
Los varistores de protección son usados comúnmente para proteger los circuitos contra
variaciones de voltaje, bloqueando el paso de corriente al activarse y así poder proteger
componentes sensibles.
72
La entrada USB del circuito cuenta con 2 varistores Panasonic EZJZ0V500AA para
proteger la entrada de información de variaciones de tensión conectados a Tx y Rx,
además de un pequeño fisible 0402L050SLKR de 6V/1A para poder alimentar todo el
circuito con una fuente USB sin riesgos a dañar la placa como se muestra en la Figura
26.
Los reguladores de voltaje son los encargados de recibir un voltaje y reducirlo al valor
necesario según su diseño, estos dispositivos cuentan con 3 pines: GND, voltaje de
entrada y voltaje de salida. Entre los reguladores de voltaje disponibles en el mercado
se encuentran los de 3.3V, 5V, 9V y 12V, teniendo dicho voltaje en su pin de salida
El circuito de potencia para alimentar el circuito completo está diseñado para soportar
73
35V/1A ya que cuenta con un regulador de voltaje L7805CV-DG y como medidas de
protección en la entrada del regulador cuenta con un fusible 0432003.KRHF capaz de
soportar 3A, seguido de un diodo rectificador VS-10BQ030-M3/5BT para evitar daños
al circuito en caso de conexión inversa en la polaridad de la batería como se puede
visualizar en la Figura 27.
La alimentación del MCU debe ser de 3.3V, además los pines de entrada y salida del
ESP32-WROOM soportan 3.3V por lo cual se implementó un regulador de voltaje
Holtek Semicon HT7333 (Figura 28). El acondicionamiento de energía se diseñó para
no dañar el ESP32-WROOM con sobretensiones debido a que tiene como un máximo
de voltaje de 3.6V, lo cual es un rango muy estrecho entre el voltaje de operabilidad y
el máximo soportable.
74
Figura 28: Esquema de 3.3V
Fuente: Investigador (EasyEDA)
75
En la Figura 30 se muestra el diagrama de bloques de la placa electrónica diseñada, el
cual cuenta con todas las funciones que realiza el sistema para su correcto
funcionamiento, entre los cuales encontramos los reguladores de voltaje conectados en
cascada con un acondicionamiento final de 3.3V, las entradas análogas y digitales se
pueden accionar gracias a este acondicionamiento debido que los pines del
microcontrolador se queman en caso de recibir un voltaje mayor a 3.6V, el bloque
central del microcontrolador es el encargado de recibir los datos enviados por el
operador al momento de activar los pulsadores y joysticks, luego procesa la
información y envía al robot los datos para ejecutar las ordenes mediante WiFi
En la Tabla 13 se muestra los pines a los cuales se encuentran conectados los botones
y joysticks para poder modificar el código fuente.
76
derecha U0RTS, EMAC_TXD1
de botones RTC_GPIO17,
EMAC_RX_DV
izquierda)
Pulsador superior- IO2 24 GPIO2, ADC2_CH2,
derecha (conjunto de TOUCH2,
de botones RTC_GPIO10,
HSPIHD, HS2_DATA1,
izquierda)
SD_DATA1,
EMAC_TX_ER
Pulsador inferior - IO16 27 GPIO16, HS1_DATA4,
derecha (conjunto de U2RXD,
de botones derecha)
Pulsador inferior - IO19 31 GPIO19, VSPIQ,
derecha (conjunto de U0CTS, EMAC_TXD0
botones derecha)
Interruptor central- IO21 33 GPIO21, VSPIHD,
EMAC_TX_EN
77
inferior
Joystick derecho- IO35 7 GPIO35, ADC1_CH7,
arriba/abajo RTC_GPIO5
El robot Kuka Youbot real cuenta con un sistema operativo Ubuntu 12.04 junto con
ROS Hydro, se puede controlar con la creación de un script dentro del ROS Package
78
designado a usarse, el script creado fue programado en el lenguaje de programación
Python usando la librería Twist para el movimiento de la plataforma móvil de forma
libre en sus partes lineales y angulares, para el movimiento del brazo se usó la librería
JointPositions para posicionar el brazo en una dirección requerida con anterioridad.
Además de la librería socket para la comunicación inalámbrica.
El robot Kuka Youbot simulado en Gazebo cuenta con un sistema operativo Ubuntu
16.04 junto con ROS Kinetic, se puede controlar con la creación de un script dentro
del ROS Package designado a usarse, el script creado fue programado en el lenguaje
de programación Python usando la librería Twist para el movimiento de la plataforma
móvil de forma libre en sus partes lineales y angulares, para el movimiento del brazo
se usó la librería JointTrajectory para posicionar el brazo en una dirección requerida
con anterioridad. Además de la librería socket para la comunicación inalámbrica.
La codificación del controlador utiliza entradas digitales y análogas para enviar sus
datos mediante el protocolo TCP con ayuda de sockets en los extremos de la
comunicación por lo cual se creó en el entorno de programación ESP-IDE, la cual es
un software desarrollado por Espressif siendo el marco de desarrollo oficial para los
microcontroladores de series ESP32 y así aprovechar al máximo al MCU.
3.3 Presupuesto
El presupuesto para realizar este proyecto fue proporcionado directamente por parte
del investigador y la logística escogida para exportar los materiales tipo smd fue hecha
mediante triangulación en España con un courrier más económico que con envío
directo, debido a la crisis de salud presentada a nivel mundial inhabilitando la llegada
del correo nacional.
79
3 Capacitor cerámico c/u 1 $0,30 $0,30
de 22uF SMD
4 Capacitor cerámico c/u 2 $0,35 $0,70
de 100uF SMD
5 Capacitor dieléctrico c/u 1 $0,70 $0,70
10uF SMD
6 Capacitor dieléctrico c/u 2 $0,22 $0,44
de 10uF
7 Diodo Rectificador c/u 1 $0,20 $0,20
VS-10BQ030-
M3/5BT SMD
8 Fusible c/u 1 $0,18 $0,18
0402L050SLKR SMD
9 Conector Macho- c/u 1 $0,10 $0,10
2.54_1x4
10 Conector Hembra- c/u 1 $0,10 $0,10
2,54_2x3
11 Diodo Led emisor de c/u 1 $0,05 $0,05
luz verde SMD
12 Resistencia 10kΩ c/u 1 $0,08 $0,08
ohm SMD
13 Varistor PANASONIC c/u 2 $0,50 $1,00
SMD
14 Resistencia de 220Ω c/u 14 $0,20 $2,80
ohm SMD
15 Resistencia de 100Ω c/u 4 $0,20 $0,80
ohm SMD
16 Joystick c/u 2 $2,80 $5,60
RKJXV1224005
17 Botón Pulsador SMD c/u 11 $0,11 $1,21
18 Interruptor de c/u 1 $0,64 $0,64
energía EG1206A
19 Interruptor c/u 1 $0,77 $0,77
EG2201A
20 Regulador de voltaje c/u 1 $0,38 $0,38
3,3V HT7333 SMD
21 Integrado CH340C c/u 1 $0,77 $0,77
SMD
22 ESP-WROOM-32 c/u 1 $7,31 $7,31
SMD
23 Fusible 3A c/u 1 $0,51 $0,51
0432003.KRHF SMD
24 Regulador de voltaje c/u 1 $0,25 $0,25
5V L7805CV-DG
25 Conector micro USB- c/u 1 $0,27 $0,27
Hembra SMD
80
26 PCB circuito impreso c/u 1 $5,00 $5,00
27 Batería Lipo Turnigy c/u 1 $11,99 $11,99
7,4V / 300mAh
28 Corte laser de la Hora 2 $8,00 $16,00
carcasa
SUBTOTAL $58,57
DISEÑO DEL PROTOTIPO $100,00
GASTOS DE ENVIO DE MATERIALES $55,00
TOTAL $213,57
Para verificar que los datos lleguen correctamente se implementó un script programado
en Python con socket TCP en modo servidor y así conectar el control en modo cliente,
los datos que ingresan al servidor son de tipo chart para aprovechar el uso de
condicionales dentro de la programación del nodo publicador. En la Figura 31 se puede
apreciar los datos recibidos desde el control que fueron impresos en consola para
facilitar al control de errores.
81
3.4.2 Prueba de ejecución de datos recibidos para el movimiento de la
plataforma Youbot simulada en Gazebo
82
Las primeras pruebas para identificar una correcta codificación de envió de datos por
el tema que utiliza el brazo Youbot se realizó con el control mediante el teclado del
computador, siendo semejante al ejemplo youbot_keyboard_teleop.py con la
plataforma. Una vez controlado el robot por completo por el teclado se procedió a
cambiar la recepción de datos mediante teclado por comunicación socket como se
puede ver en la Figura 33.
Figura 33: Prueba de movimiento del brazo y pinza del robot simulado
Fuente: Investigador
Se codificó un archivo Python para identificar los valores actuales del brazo y pinza.
La configuración del archivo consiste en suscribirse a los temas necesarios, en este
caso los del brazo y pinza terminados en “state”. Se imprimen los valores obtenidos y
finalmente una fila de asteriscos para separar los valores nuevos.
83
Figura 34: Script suscriptor
Fuente: Investigador
3.4.5 Prueba de ejecución de datos recibidos para el movimiento de la
plataforma Youbot del robot real
Las pruebas de ejecución de los datos recibidos se realizaron de manera directa con la
visualización del movimiento del robot ya que en la simulación se logró corregir las
fallas de comunicación y en comparación con el robot simulado se utiliza el mismo
tipo de tema para el envío de datos desde el nodo publicador.
84
3.4.6 Prueba de ejecución de datos recibidos para el movimiento del
brazo y pinza Youbot del robot real
Para iniciar con las pruebas de control con el brazo y pinza Youbot se procedió a
identificar el tipo de tema y después a identificar el tipo de mensaje ROS a enviarse y
así poder hacer el arreglo de vectores dentro del vector final “positions” que nos pide
el tema.
Para poder identificar los valores necesarios y tipo de mensaje a enviarse se debe seguir
los siguientes pasos:
El tema con el que opera el robot real se puede observar en la Figura 36. Con el tema
necesario se procedió a configurar el arreglo de vectores para enviar el mensaje ROS
y modificar el ejemplo teleop_twist_keyboard.py para poder tener movimiento del
brazo y pinza con ayuda del teclado, finalmente se ajustó la comunicación WiFi al
igual que con el robot simulado.
Figura 36: Prueba de movimiento del brazo y pinza del robot Youbot
Fuente: Investigador
85
El proyecto concluido alcanzó a cumplir los objetivos planteados con la fabricación
del control remoto inalámbrico elaborado con un microprocesador ESP32 para la
manipulación libre del robot Kuka Youbot real y simulado en gazebo, este proyecto
cuenta con una amplia gama de aplicaciones futuras ya que el nodo receptor en ROS
puede ser programado para ejecutar acciones o trayectos completos al accionar los
periféricos del controlador, además el controlador al ser una placa con periféricos de
entrada se pueden cambiar sensores según sean las necesidades futuras. Este
dispositivo tiene la facilidad para operar con alimentación mediante USB o baterías de
hasta 35V.
86
3.4.8 Trayectoria predeterminada controlada a ejecutar mediante
teclado del computador
87
En la Figura 40 podemos apreciar el código con el cual se produjo las pruebas de
funcionamiento, teniendo un éxito del 100% sin presentar ni un solo choque con el
código finalizado, el código se suscribe al tema /base_scan para identificar los valores
necesarios, con “data.ranges” localizamos a la distancia y orientación que se
encuentran los objetos, además el script fue diseñado para que el robot se mantenga
siempre cerca a una pared en la parte izquierda y así poder salir con facilidad de
laberintos. Este código es basado en la ley de la mano derecha para laberintos, la cual
menciona que si te encuentras atrapado solo debes caminar hacia adelante con la mano
sin separar de la pared, teniendo así siempre una pared al lado derecho y recorriendo
toda la superficie hasta encontrar la salida.
88
CAPÍTULO IV
CONCLUSIONES Y RECOMENDACIONES
4.1 Conclusiones
89
4.2 Recomendaciones
• Para colocar los dispositivos de entrada a los pines GPIO del microcontrolador
se debe tener en cuenta que existen pines que se desactivan al activarse la
comunicación WiFi por lo cual es fundamental revisar la hoja de datos del
microcontrolador.
• Trabajar con el entorno de simulación debido que es muy similar con real y así
no se tendrá daños en el robot por fallos en códigos. Se debe tener en cuenta
que el brazo Youbot simulado y el real funcionan con distinto tema de mensaje
de ROS. Para identificar el orden de vectores en el mensaje a enviar con el
tipo de tema de ROS podemos verificar con “rosmsg show tema”.
90
obtener como resultado final la localización de objetos deseados y
movilización de un lugar a otro.
91
C. MATERIAL DE REFERENCIA
Bibliografía
92
https://www.generationrobots.com/img/Kuka-YouBot-Technical-Specs.pdf. [Último
acceso: 03 10 2020].
[14] maxongroup, «maxongroup,» 2013. [En línea]. Available:
https://www.maxongroup.es/medias/sys_master/8815739797534.pdf?attachment=tru
e. [Último acceso: 04 10 2020].
[15] G. M. Mafla Medina, «dspace.espoch.edu,» marzo 2019. [En línea]. Available:
http://dspace.espoch.edu.ec/bitstream/123456789/10286/1/20T01182.pdf. [Último
acceso: 13 10 2020].
[16] E. S. Barahona Guamani y C. Gordón Gallegos, 08 2019. [En línea]. Available:
https://repositorio.uta.edu.ec/jspui/bitstream/123456789/30119/1/Tesis_t1642ec.pdf.
[Último acceso: 03 11 2020].
[17] Open Robotics, «ROS,» [En línea]. Available: https://www.ros.org/about-ros/.
[Último acceso: 21 6 2021].
[18] Moodle UA Cloud, «moodle2018-19.ua,» 2019. [En línea]. Available:
https://moodle2018-19.ua.es/moodle/mod/book/view.php?id=8465&chapterid=186.
[Último acceso: 22 06 2021].
[19] Moodle UA Cloud, «moodle2018-19.ua,» 2019. [En línea]. Available:
https://moodle2018-19.ua.es/moodle/mod/book/view.php?id=8465&chapterid=190.
[Último acceso: 22 06 2021].
[20] Moodle UA Cloud, «moodle2018-19.ua,» [En línea]. Available: https://moodle2018-
19.ua.es/moodle/mod/book/view.php?id=8465&chapterid=181. [Último acceso: 22
06 2021].
[21] xunta, «edu.xunta,» 20 01 2020. [En línea]. Available:
https://www.edu.xunta.gal/centros/iespedrofloriani/aulavirtual2/pluginfile.php/3245/
mod_resource/content/0/Electronica/Electr17-02-13-2/circuitos_electrnicos.html.
[22] D. Benchimol, «books.google,» 2011. [En línea]. Available:
https://books.google.com.ec/books?id=nNUeRa78FBUC&printsec=frontcover&dq=
microcontrolador&hl=es&sa=X&ved=2ahUKEwjAmdrzlr3vAhWEtVkKHeWVALc
Q6AEwAHoECAAQAg#v=onepage&q&f=true. [Último acceso: 19 03 2021].
[23] H y S. Altamirano, Sistema de Control de Acceso por Reconocimiento de Iris para el
Ingreso dePersonal a la Empresa Electroservicios Querubín de la Ciudad de Puyo,
Ambato: Universidad Técnica de Ambato, 2018.
[24] A. R. Bruno Saravia, «microelectronicash,» 2019. [En línea]. Available:
https://www.microelectronicash.com/downloads/ESP32_MANUAL.pdf. [Último
acceso: 19 03 2021].
[25] raspberrypi, «raspberrypi,» [En línea]. Available: https://raspberrypi.cl/que-es-
raspberry/. [Último acceso: 19 03 2021].
[26] E. Nuño Ortega y L. Basañez Villaluenga, «upcommons.upc.edu,» 04 2004. [En
línea]. Available: https://upcommons.upc.edu/bitstream/handle/2117/570/IOC-DT-P-
2004-05.pdf?sequence=1&isAllowed=y. [Último acceso: 03 11 2020].
[27] J. Paredes, «sites.google,» 2017. [En línea]. Available:
https://sites.google.com/site/capllevantcomunicaciones/home/comunicaciones-
inalambricas. [Último acceso: 03 10 2020].
[28] W. Zhang y L. L. Xiaoguang Hu, «sci-hub,» 2009. [En línea]. Available: https://sci-
hub.tw/10.1109/ICIEA.2009.5138237. [Último acceso: 19 03 2021].
[29] J. Benavente Carmona, «openaccess.uoc.edu,» [En línea]. Available:
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/43113/6/jbenaventecTFC061
5memoria.pdf. [Último acceso: 10 10 2020].
[30] J. L. De La Cruz Fernández, M. Torres Roldán, F. J. Bellido Outeiriño y J. A. Gistas
93
Peyrona, «tecnicaindustrial,» [En línea]. Available:
http://www.tecnicaindustrial.es/tiadmin/numeros/15/06/a06.pdf. [Último acceso: 10
10 2020].
[31] D. Benchimol, Microcontroladores, 1a ed., Buenos Aires: FOX Andina en coedición
con DALAGA S.A., 2011, p. 320.
[32] Ryte Wiki, «ryte,» 2020. [En línea]. Available: https://es.ryte.com/wiki/HTTPS.
[Último acceso: 19 03 2021].
[33] V. González Ruiz, «hpca,» 10 04 2008. [En línea]. Available:
http://www.hpca.ual.es/~vruiz/docencia/imagen_y_sonido/practicas/html/texputse57.
html. [Último acceso: 19 03 2021].
[34] K. Calvert y M. Donahoo, TCP/IP Sockets in Java, vol. 2, D. Penrose, Ed., New
York: Elsevier Inc., 2008.
[35] youbot store, «youbot-store,» [En línea]. Available: http://www.youbot-
store.com/developers/hardware-specification. [Último acceso: 23 06 2021].
[36] Hochschule Bonn-Rhein-Sieg, «youtube,» 08 06 2020. [En línea]. Available:
https://www.youtube.com/watch?v=lZaZ-f1kFl8. [Último acceso: 23 06 2021].
[37] youbot store, «youbot-store,» 12 02 2015. [En línea]. Available: http://www.youbot-
store.com/wiki/index.php/YouBot_Detailed_Specifications. [Último acceso: 24 06
2021].
[38] M. Füller, F. Hegger y E. Solda, «youbot-store,» [En línea]. Available:
http://www.youbot-store.com/developers/soft-two-finger-gripper-75. [Último acceso:
23 06 2021].
[39] M. Ahlers, «youtube,» 29 08 2011. [En línea]. Available:
https://www.youtube.com/watch?v=90cXfaFM4O8. [Último acceso: 23 06 2021].
[40] youbot store, «youbot-store,» 2014. [En línea]. Available: http://www.youbot-
store.com/developers/asus-xtion-pro-live-driver. [Último acceso: 23 06 2021].
[41] youbot store, «youbot-store,» 2014. [En línea]. Available: http://www.youbot-
store.com/developers/microsoft-lifecam-driver. [Último acceso: 23 06 2021].
[42] youbot store, «youbot-store,» 2014. [En línea]. Available: http://www.youbot-
store.com/developers/hokuyo-laser-range-finder-driver. [Último acceso: 23 06 2021].
[43] Creative Commons Atribución Compartir Igual 3.0, 25 06 2021. [En línea].
Available: https://es.wikipedia.org/wiki/Robot_Operating_System. [Último acceso:
25 06 2021].
[44] T. Foote y K. Conley, «ros,» 21 09 2010. [En línea]. Available:
https://www.ros.org/reps/rep-0003.html. [Último acceso: 25 06 2021].
[45] youbot store, 06 07 2016. [En línea]. Available: http://www.youbot-
store.com/wiki/index.php/USB_Live-Stick. [Último acceso: 28 06 2021].
[46] O. Campos, «genbeta.,» 11 07 2011. [En línea]. Available:
https://www.genbeta.com/desarrollo/benchmark-entre-c-c-c-python-y-go. [Último
acceso: 28 06 2021].
[47] youbot store, «youbot store,» 01 06 2015. [En línea]. Available: http://www.youbot-
store.com/wiki/index.php/Gazebo_simulation. [Último acceso: 28 06 2021].
[48] youbot store, «youbot store,» 2014. [En línea]. Available: http://www.youbot-
store.com/v-rep. [Último acceso: 28 06 2021].
[49] youbot store, «youbot store,» 2014. [En línea]. Available: http://www.youbot-
store.com/openrave. [Último acceso: 28 06 2021].
[50] youbot store, «youbot store,» 2014. [En línea]. Available: http://www.youbot-
store.com/webots. [Último acceso: 28 06 2021].
[51] A. J. González, «profesores.elo.utfsm,» [En línea]. Available:
94
http://profesores.elo.utfsm.cl/~agv/elo309/lectures/interfazSocket.pdf. [Último
acceso: 23 06 2021].
[52] espressif, «espressif,» 2021. [En línea]. Available:
https://www.espressif.com/en/company/about-espressif. [Último acceso: 30 06 2021].
[53] espressif, «espressif,» 2021. [En línea]. Available:
https://www.espressif.com/sites/default/files/documentation/esp32-wroom-
32_datasheet_en.pdf. [Último acceso: 30 06 2021].
[54] espressif, «espressif,» 2020. [En línea]. Available:
https://www.espressif.com/sites/default/files/documentation/0a-
esp8266ex_datasheet_en.pdf. [Último acceso: 30 06 2021].
95
ANEXOS
96
ANEXO A
#include <WiFi.h>
#include "config.h" // Sustituir con datos de vuestra red
#include "ESP32_Utils.hpp"
void setup() {
Serial.begin(115200);
Serial.println("inicio");
ConnectWiFi_AP();
Serial.println("fin");
}
void loop() {
Serial.println("inicio2");
if(client.connect(ip, 33657)){
Serial.println("Conección éxitosa");
jo1 = analogRead(joystick1);
j2 = analogRead(joystick2);
jo1 = analogRead(joystick1);
j2 = analogRead(joystick2);
char valor = 'k';
if(j2<1400){
//Serial.println("DERECHA");
97
valor='l';
}if(j2>2210){
//Serial.println("IZQUIERDA");
valor='j';
}if(jo1>2400){
//Serial.println("ARRIBA");
valor='i';
}if(jo1<1600){
//Serial.println("ABAJO");
valor=',';
}if((jo1>=1605 && jo1<=1945)&&(j2>=1485 && j2<=1925)){
valor='k';
}
char op;
String str = String(valor);
str.toCharArray(msg,25);
if(op!=valor){
op=valor;
client.print(msg);
}
if ((v == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}
old_val = v; // valor del antiguo estado
if (state==1&&valor=='k'){
valor='t'; // enciende el LED
}
if(state==0&&valor=='k'){
valor='b'; // apagar el LED
}if(digitalRead(button8)==HIGH){
valor='y';
}if(digitalRead(button9)==HIGH){
valor='n';
}
client.stop();
}
}
ESP32_Utils.hpp
Serial.println("");
Serial.print("Iniciado STA:\t");
Serial.println(ssid);
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());
}
Serial.println("");
Serial.print("Iniciado AP:\t");
Serial.println(ssid);
Serial.print("IP address:\t");
Serial.println(WiFi.softAPIP());
}
config.h
IPAddress ip(192,168,43,64);
99
ANEXO B
Código en el nodo del robot Kuka Youbot real
#!/usr/bin/env python
# @brief python_file
import roslib
import rospy
from numpy import inf, zeros
from geometry_msgs.msg import Twist
import trajectory_msgs.msg as tm
import sys, select, termios, tty, signal
import socket
HOST = '192.168.43.85'
PORT = 33657
s = socket.socket()
s.bind((HOST, PORT))
s.listen(0)
moveBindings = {
'k':(0,0,0,0),
'i':(1,0,0,0),
'o':(1,0,0,-1),
'j':(0,0,0,1),
'l':(0,0,0,-1),
'u':(1,0,0,1),
',':(-1,0,0,0),
'.':(-1,0,0,1),
'm':(-1,0,0,-1),
}
moveArmBin = {
't':(4.5, 1.05, -2.44, 0.11, 2.95),
'b':(0.11, 0.11, -0.11, 0.11, 0.11),
}
moveGrepperBin = {
'y':(0.011),
'n':(0),
}
speedBindings={
'q':(1.1,1.1),
'z':(.9,.9),
100
'w':(1.1,1),
'x':(.9,1),
'e':(1,1.1),
'c':(1,.9),
}
def getKey():
tty.setraw(sys.stdin.fileno())
select.select([sys.stdin], [], [], 0)
key = sys.stdin.read(1)
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
return key
def vels(speed,turn):
def createArmPositionCommand(newPositions):
msg = JointPositions()
point = JointValue()
jointNames = []
joint.value = newPosition
for i in range(5):
jointNames.append("arm_joint_" + str(i+1))
joint.joint_uri = jointNames()
joint.unit = "rad"
joint.timeStamp = rospy.time.now()
msg.positions.append(joint)
return msg
def createGripperPositionCommand(newPosition):
msg = JointPositions()
point = JointValue()
jointNames = []
joint.value = [newPosition, newPosition]
joint.joint_uri = ["gripper_finger_joint_l", "gripper_finger_joint_r"]
joint.unit = "rad"
joint.timeStamp = rospy.time.now()
msg.positions.append(joint)
return msg
if __name__=="__main__":
settings = termios.tcgetattr(sys.stdin)
rospy.init_node('teleop_kuka')
101
# Publisher for velocity command fed to Whiskeye
pub = rospy.Publisher('/cmd_vel', Twist, queue_size = 1)
armPublisher = rospy.Publisher("/arm_1/arm_controller/position_command", Joint
Positions, queue_size=1)
gripperPublisher = rospy.Publisher("/arm_1/gripper_controller/position_command
", JointPositions, queue_size=1)
speed = rospy.get_param("~speed", 0.5)
turn = rospy.get_param("~turn", 1.0)
# Position variables
x=0
y=0
z=0
jointvalues = [0.11, 0.11, -0.11, 0.11, 0.11]
grip = 0
# orientation variables
th = 0
try:
while(1):
print("1")
client, addr = s.accept()
while True:
print("2")
cont = client.recv(1024)
if len(cont)==0:
break
else:
print(cont)
key = cont
if key in moveBindings.keys():
x = moveBindings[key][0]
y = moveBindings[key][1]
z = moveBindings[key][2]
th = moveBindings[key][3]
twist = Twist()
twist.linear.x = x*speed
twist.linear.y = y*speed
twist.linear.z = 0
twist.angular.x = 0
twist.angular.y = 0
twist.angular.z = th*turn
msgd = createArmPositionCommand(jointvalues)
msg = createGripperPositionCommand(grip)
# Publish commands to the robot
pub.publish(twist)
armPublisher.publish(msgd)
gripperPublisher.publish(msg)
client.close()
except Exception as e:
print(e)
finally:
twist = Twist()
msgd = createArmPositionCommand(jointvalues)
twist.linear.x = 0; twist.linear.y = 0; twist.linear.z = 0
twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0
jointvalues = [0.11, 0.11, -0.11, 0.11, 0.11]
pub.publish(twist)
armPublisher.publish(msgd)
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
103
ANEXO C
Código en el nodo del robot Kuka Youbot simulado en Gazebo
#!/usr/bin/env python
# @brief python_file
import roslib
# roslib.load_manifest('teleop')
import rospy
from numpy import inf, zeros
from geometry_msgs.msg import Twist
import trajectory_msgs.msg as tm
import sys, select, termios, tty, signal
import socket
HOST = '192.168.43.244'
PORT = 33657
s = socket.socket()
s.bind((HOST, PORT))
s.listen(0)
msg = """
Moving around:
u i o
j k l
m , .
t : up (arm)
b : down (arm)
CTRL-C to quit
"""
moveBindings = {
'k':(0,0,0,0),
'i':(1,0,0,0),
'o':(1,0,0,-1),
'j':(0,0,0,1),
'l':(0,0,0,-1),
'u':(1,0,0,1),
',':(-1,0,0,0),
'.':(-1,0,0,1),
'm':(-1,0,0,-1),
}
104
moveArmBin = {
't':(4.5, 1.05, -2.44, 0.11, 2.95),
'b':(0.11, 0.11, -0.11, 0.11, 0.11),
}
moveGrepperBin = {
'y':(0.011),
'n':(0),
}
speedBindings={
'q':(1.1,1.1),
'z':(.9,.9),
'w':(1.1,1),
'x':(.9,1),
'e':(1,1.1),
'c':(1,.9),
}
def getKey():
tty.setraw(sys.stdin.fileno())
select.select([sys.stdin], [], [], 0)
key = sys.stdin.read(1)
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
return key
def vels(speed,turn):
def createArmPositionCommand(newPositions):
msgd = tm.JointTrajectory()
point = tm.JointTrajectoryPoint()
point.positions = newPositions
point.velocities = zeros(len(newPositions))
point.accelerations = zeros(len(newPositions))
point.time_from_start = rospy.Duration(0.5)
msgd.points = [point]
jointNames = []
for i in range(5):
jointNames.append("arm_joint_" + str(i+1))
msgd.joint_names = jointNames
msgd.header.frame_id = "arm_link_0"
msgd.header.stamp = rospy.Time.now()
return msgd
def createGripperPositionCommand(newPosition):
105
msg = tm.JointTrajectory()
point = tm.JointTrajectoryPoint()
point.positions = [newPosition, newPosition]
point.velocities = zeros(2)
point.accelerations = zeros(2)
point.time_from_start = rospy.Duration(0.5)
msg.points = [point]
jointNames = []
msg.joint_names = ["gripper_finger_joint_l", "gripper_finger_joint_r"]
msg.header.frame_id = "gripper_pointer_link"
msg.header.stamp = rospy.Time.now()
return msg
if __name__=="__main__":
settings = termios.tcgetattr(sys.stdin)
rospy.init_node('teleop_kuka')
# Position variables
x=0
y=0
z=0
jointvalues = [0.11, 0.11, -0.11, 0.11, 0.11]
grip = 0
# orientation variables
th = 0
try:
while(1):
print("1")
client, addr = s.accept()
while True:
print("2")
cont = client.recv(1024)
if len(cont)==0:
break
106
else:
print(cont)
key = cont
if key in moveBindings.keys():
x = moveBindings[key][0]
y = moveBindings[key][1]
z = moveBindings[key][2]
th = moveBindings[key][3]
twist = Twist()
twist.linear.x = x*speed
twist.linear.y = y*speed
twist.linear.z = 0
twist.angular.x = 0
twist.angular.y = 0
twist.angular.z = th*turn
msgd = createArmPositionCommand(jointvalues)
msg = createGripperPositionCommand(grip)
# Publish commands to the robot
pub.publish(twist)
armPublisher.publish(msgd)
gripperPublisher.publish(msg)
client.close()
except Exception as e:
print(e)
finally:
twist = Twist()
msgd = createArmPositionCommand(jointvalues)
twist.linear.x = 0; twist.linear.y = 0; twist.linear.z = 0
107
twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0
jointvalues = [0.11, 0.11, -0.11, 0.11, 0.11]
pub.publish(twist)
armPublisher.publish(msgd)
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
108
ANEXO D
Diagrama del circuito electrónico del controlador
109
ANEXO E
Dimensiones de la placa PCB para la construcción del case
110
ANEXO F
Diseño 2D en EasyEDA en comparación con la placa completamente terminada
111
ANEXO G
Diseño del diagrama de pistas por capas
112
ANEXO H
Hoja de datos técnicos del microcontrolador ESP32
(la ficha técnica completa se puede encontrar en el link:
https://www.espressif.com/sites/default/files/documentation/esp32-wroom-
32_datasheet_en.pdf)
113