SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

38
1 } TRABAJO FIN DE GRADO EN INGENIERÍA EN AUTOMATIZACIÓN FACULTAD DE CIENCIAS E INGENIERÍAS SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO Jorge Ivan Labrador Aya Diego Fernando Romero Ibañez 2020

Transcript of SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

Page 1: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

1

}

TRABAJO FIN DE GRADO EN INGENIERÍA EN AUTOMATIZACIÓN

FACULTAD DE CIENCIAS E INGENIERÍAS

SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y

GAZEBO

Jorge Ivan Labrador Aya

Diego Fernando Romero Ibañez

2020

Page 2: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

2

SIMULACIÓN PARA UN ROBOT HEXAPODO CON ROS

Y GAZEBO

Tesis de pregrado

AUTORES:

Jorge Ivan Labrador Aya

Ingeniería en automatización

[email protected]

Diego Fernando Romero ibañez

Ingeniería en automatización

[email protected]

DIRECTOR:

PhD. Olmer García Bedoya

[email protected]

Page 3: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

3

Pregrado de Ingeniería en automatización

Bogotá, Colombia

2020

Tabla de contenido

Índice de figuras .......................................................................................................................... 5

Resumen ...................................................................................................................................... 6

Abstract ......................................................................................................................................... 6

Introducción .................................................................................................................................. 7

1. Antecedentes ....................................................................................................................... 8

2. Justificación .......................................................................................................................... 8

3. Objetivos ............................................................................................................................... 9

3.1. Objetivo General .......................................................................................................... 9

3.2. Objetivos específicos .................................................................................................. 9

4. Marco Teórico .................................................................................................................... 10

4.1. Ros (Robot System Operating) ................................................................................... 10

4.1.1. Historia ........................................................................................................................ 10

4.1.2. ¿Por qué ROS? ......................................................................................................... 12

4.1.3. Componentes principales de ROS ......................................................................... 12

4.2. Rviz .............................................................................................................................. 13

4.3. Gazebo........................................................................................................................ 14

4.3.1. La importancia de la simulación .............................................................................. 15

4.4. Moveit .......................................................................................................................... 15

4.4.1. Interfaz de usuario .................................................................................................... 17

4.4.2. Configuración del Moveit .......................................................................................... 17

4.5. Planeación de trayectorias .......................................................................................... 17

4.6. Websocket ...................................................................................................................... 18

4.6.1. Historia ........................................................................................................................ 18

4.6.2. Funcionamiento ......................................................................................................... 19

4.7. Raspberry pi ................................................................................................................... 19

Page 4: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

4

4.7.1. Historia ........................................................................................................................ 19

4.7.2. ¿Qué es? .................................................................................................................... 20

5. Metodología........................................................................................................................ 20

5.1. Diseño del robot ............................................................................................................ 20

5.1.1. Primera versión .......................................................................................................... 20

5.1.2. Primeras pruebas. ..................................................................................................... 21

5.1.3. Diseño propio ..................................................................................................... 22

5.2. Construcción .................................................................................................................. 25

5.2.1. Conexión con la raspberry ....................................................................................... 25

5.3. Topología ........................................................................................................................ 25

5.4. Programación en ROS ............................................................................................. 26

Nodo operators .................................................................................................................. 29

5.5. URDF .............................................................................................................................. 31

6. Resultados. ........................................................................................................................ 32

7. Agradecimientos ................................................................................................................ 36

8. Referencias ........................................................................................................................ 38

Page 5: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

5

Índice de figuras Fig. 1. Jumpstart the Industry Time Our Program Other ResearchersOther Researchers. [5] ... 11 Fig. 2. Entorno percibido por un robot visualizado en Rviz. Open Robotics. [4] ............................ 13 Fig. 3. Entorno de simulación con SDFormat. [7] ............................................................................... 15 Fig. 4. Planeación de trayectorias con Movit y Rviz. [8] .................................................................... 16 Fig. 5 Acciones y servicios que componen el nodo primario move_group ..................................... 16 Fig. 6 Comparación entre Ajax Polling y web socket, se observa como mejoran los tiempos de

respuesta y la baja latencia entre mensajes ....................................................................................... 19 Fig. 7 Chip de la raspberry PI tomado de www.raspberrypi.org ....................................................... 20 Fig. 8 Primera versión del robot ............................................................................................................ 21 Fig. 9 Prueba de locomoción con 2 patas ........................................................................................... 22 Fig. 10 Prueba de locomoción en avance con cuatro patas ............................................................. 22 Fig. 11 Eslabon 3 visualizado en formato STL ................................................................................... 23 Fig. 12 Base del robot visualizada en stl ............................................................................................. 23 Fig. 13 Eslabón 3 impreso en material PLA (Diferentes vistas) ....................................................... 24 Fig. 14 Distribución de las extremidades de ROZH. .......................................................................... 26 Fig. 15 Valores y rangos de movimiento del modelo ax-12a ............................................................ 28 Fig. 16 Matriz de inercias en el software Autodesk Inventor. .................................................................... 32 Fig. 17 Definición del primer link de la extremidad uno. ............................................................................ 33 Fig. 18 Definición de los joint de una extremidad. ..................................................................................... 33

Fig. 19 Definición de las posiciones finales del robot. ................................................. 34

Fig. 20 Planeación de trayectorias en moveit .............................................................. 35

Fig. 21 Simulación en gazebo ..................................................................................... 35

Page 6: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

6

Resumen

En este proyecto de grado se evidencia el proceso que se llevó a cabo para el diseño

y posterior simulación de un robot móvil usando el sistema operativo para robots

(ROS), particularmente la distribución Melodic Morenia que trabaja sobre la

distribución de Ubuntu 18.04 Bionic Beaver. El robot usado en este proyecto es un

robot móvil hexápodo de tipo zoomórfico (araña) nombrado RoZH (Robot zoomórfico

hexápodo) con tres grados de libertad por cada pata, para un total de 18 grado de

libertad y que tiene como actuadores 18 servomotores marca Dynamixel de la serie AX

referencia 12a.

Este proyecto se divide en tres partes, la primera tiene como objetivo el desarrollo del

modelo cinemático de una de las patas del robot. La segunda, consta del proceso

ejecutado para la simulación del robot en Gazebo y el desarrollo de un interfaz web

para la interacción con esta. La tercera es un complemento del manejo de los

paquetes ROS para el control de los servomotores Dynamixel, particularmente los

Dynamixel AX-12a.

Abstract

This graduation project demonstrates the process taken to design and show the

simulation of a mobile robot using the Robot Operating System (ROS), particularly the

Melodic Morenia distribution that works over the Ubuntu 18.04 distro Bionic Beaver.

The robot used in this project is a mobile hexapod of type zoomorphic (spider) named

RoZH (Robot zoomórfico hexápodo in Spanish) with three degrees of freedom on each

paw, for a total of 18 degrees of freedom represented by 18 actuators of type

servomotor of the brand Dynamixel AX 12a.

This project is divided into three parts, the first one has as objective the development of

the cinematic model of one of the paws. Secondly, it's shown the process executed to

simulate the robot in Gazebo and the development of a Web GUI for the interaction

with it. Thirdly, there's an extra section about the management of the ROS packages

for the control of the Dynamixel servomotors.

Page 7: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

7

Introducción

La robótica es una de las ramas de la tecnología, que estudia el proceso que se lleva a

cabo para el diseño y la posterior construcción de una maquina o un robot.

Actualmente es un campo de estudio que está en auge y este incrementa a medida

que pasa el tiempo.

En la actualidad la robótica se puede ver aplicada en distintos espacios de nuestro

entorno cotidiano. En los últimos años las industrias buscan automatizar sus plantas

para la optimización de los procesos y la reducción de costos, se diseñan maquinas o

robots que se encargan de realizar tareas repetitivas o tareas de riesgo a corto o largo

plazo para los humanos, en la mayoría de los casos se encuentran manipuladores.

Estos son brazos robóticos los cuales desempeñan una tarea específica como por

ejemplo soldar, pintar, acomodar piezas. Además de los robots manipuladores que se

encuentran en las industrias, existen robots en el campo de la salud ya sea para ayuda

de los médicos en los quirófanos que en la mayoría de los casos son manipuladores

que ayudan a que las cirugías.

A parte de robots manipuladores en la robótica se han desarrollado otro tipo de robots

los cuales se denominan robots móviles, en los que se encuentran los robots con

piernas y los robots que usan llantas. Los robots con piernas normalmente se basan

en la anatomía de animales, están los robots de Una, Dos, Cuatro, y, seis piernas.

Tienen la ventaja de moverse por terrenos de difícil acceso. Un ejemplo de estos

robots son los robots de rescate, se desempeñan en terrenos con escombros. Por otro

lado, los robots con ruedas han sido el mecanismo de locomoción más popular en la

robótica móvil, ya que el equilibrio en este tipo de robots no suele ser un problema

porque los robots con ruedas en la mayoría de los casos están diseñados para que

sus ruedas estén sobre el suelo, a diferencia de los robots con piernas que para

mantener en equilibrio el robot se necesita que cada extremidad cuente con ciertos

grados de libertad para que logre mantenerse de pie.

Page 8: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

8

1. Antecedentes

• (Arroyo, 2017) Sistema de control para un robot hexápodo de exploración.

En este trabajo de grado se encuentra la descripción completa de un robot

hexápodo de un grado de libertad por cada pata en ROS el planeamiento y el

modo de ejecución de las marchas del robot, además de la simulación en

Gazebo y una breve introducción a la locomoción de estos robots.

• (Bañó, 2015) Diseño monitorización y control de un hexápodo con ROS.

En este trabajo de grado se centra en programar un software utilizando como

herramienta el entorno de ROS para lograr mover un robot de tipo hexápodo.

Además, se encuentra la definición de paquetes y nodos con este objetivo, ¡la

simulación mediante MoveIt! Y el estudio de la cinemática inversa que

permite resolver el movimiento del robot.

• (Franco Tedeschi, 2014) Este articulo contiene el estado del arte de los robots

caminante de tipo hexápodo, desde el inicio de esta tecnología hasta los

mayores avances hasta la fecha (2014), además hace un estudio del diseño de

estos robots que tiene como objetivo final proponer el diseño de un robot

hexápodo con ciertas características y resaltando la efectividad de este.

2. Justificación

La robótica móvil es considerada por varios expertos en el tema el foco de

investigación en la actualidad, se estima que muchas de las mejores

universidades y laboratorios tienen como eje central este tema. Hoy en día se

encuentra presente en sectores como: El sector industrial, en el área

de servicios, en aplicaciones de vigilancia, militares y en el área de exploración entre

otras, siendo los dos últimos los sectores pioneros en este tipo de desarrollos.

Ahora bien, de Robot Operating System (Ros) hay que decir que su mayor ventaja es

el trabajo colaborativo que ofrece, al ser tan complejo la creación de un software para

robots robusto desde cero, Ros ofrece un entorno en donde equipos de

trabajo contribuyen y además puedan basarse en el trabajo de

otros equipos similares.

Al igual que la robótica móvil, Ros viene en ascenso y ya muchas universidades

adoptaron en sus cátedras la utilización de este framework.

Siguiendo la línea de proyectos de grado como “PLIPE” por Platin,

Juan Sebastian diseñador industrial y tecnólogo en robótica y

Page 9: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

9

automatización y “DISEÑO DE SISTEMA DE CONTROL PARA BRAZO SCORBOT-

ER III” por Suarez, Ian y Herrera, Luciano ingenieros en automatización industrial, que

dejan guías de aprendizaje para los estudiantes en diferentes temas, se desea realizar

un proyecto que contenga entre sus entregables guías de aprendizaje sobre los

distintos temas tratados durante la realización del proyecto.

3. Objetivos

3.1. Objetivo General

Desarrollar guías educativas para la programación de robots con base en el robot

hexapobot y el entorno ROS y su respectiva simulación en el software gazebo.

3.2. Objetivos específicos

• Construir una araña de 6 patas, la cual utiliza como sistema de control una

raspberry PI modelo 3b y el sistema operativo ROS.

• Estudiar y desarrollar un software que permita planear trayectorias de la araña.

• Desarrollar la simulación del robot usando el software gazebo.

• Desarrollar una guía de laboratorio para que los estudiantes desarrollen y

conozcan.

Page 10: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

10

4. Marco Teórico

4.1. Ros (Robot System Operating)

Aunque ROS es definido por algunos conoceros como un meta sistema operativo que

trabaja sobre un SO (Linux, particularmente Ubuntu para este proyecto) para crear

software para robots, la definición que confiere directamente el sitio oficial mantenido

por Open Robotics es que ROS es un framework para el desarrollo de software para

robots. Provee una colección de herramientas, librerías y convenciones que tienen

como objetivo hacer menos compleja la tarea de crear aplicaciones robóticas robustas

usando una amplia variedad de hardware (Open Robotics, s.f.).

4.1.1. Historia

ROS comenzó como un pequeño proyecto en Stanford desarrollado por Erick Berger y

Keenan Wyrobek mientras realizaban sus estudios de doctorado. En un artículo

publicado por la IEEE Espectrum sobre los inicios de ROS, Wyrobek justifica el

desarrollo del framework como una necesidad evidente, impulsado por el patrón

repetitivo de los desarrolladores de software para robots, “la reinvención de la rueda”,

ya que, como se ilustra en la figura 1 (una de las figuras que utilizaron en la

presentación con la que pretendían atraer inversionistas) pasaban más del 90% del

tiempo reescribiendo el código antes ya desarrollado y solo un 10% mejorando.

Page 11: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

11

Fig. 1. Jumpstart the Industry Time Our Program Other ResearchersOther Researchers. (Wyrobek, 2017)

Así nace Personal Robotics Program que fue una versión del framework, que usaron

para promocionar el proyecto y atraer inversionistas, desarrollada para atacar el

problema mencionado y que traía consigo la construcción del PR1 (Personal Robot

versión 1) como robot de pruebas. Con los fondos recaudados, construyeron 10 copias

del modelo PR1 con el objetivo de llevarlos a distintas universidades, en donde

empezaron a desarrollar aplicaciones con su framework. (conocedores dan crédito que

de allí se desarrollaron librerías como Rviz y rq_tools) (Wyrobek, 2017).

Tras su salida de Stanford, el proyecto fue alojado por Willow Garage desde el 2007,

un laboratorio de incubación de proyectos de robótica fundado por Scott Hassan fue

allí en donde se formalizó ROS como una entidad y en donde el proyecto obtuvo la

ambición que en pocos años lo convertiría en el estándar del mundo de la robótica. En

el 2009 lanzan el PR2, un año de después construyen 11 copias de este modelo y una

vez más los distribuyen entre distintas universidades, de esta forma comenzaron a

construir la comunidad ROS, algo primordial para la evolución del proyecto. La primera

distribución de ROS fue lanzada en el 2010 nombrada ROS Box Turtle, en el mismo

año es lanzada ROS C Turtle, la segunda versión de ROS, un año después se lanzó la

tercera distribución ROS Diamondback, durante este tiempo la simulación se convierte

en una herramienta poderosa, así que ROS decide adoptar a Gazebo, el simulador 3D

Page 12: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

12

del framework Player/Stage, como el simulador estándar en ROS. En el 2012 se lanzó

ROS Grovy Galapagos, la sexta distribución del framework.

En el 2013, tras el anuncio de la disolución de Willow Garaje, ROS pasa a ser guiado

por la Open Source Robotics Foundation, bajo el mando de la OSRF se lanza ROS –

Industrial, consorcio que busca la aproximación y enfoque del framework a la robótica

industrial. Desde ese momento hasta el 2020 se han lanzado siete distribuciones más,

siendo las dos últimas la distribución ROS Noetic Ninjemys lanzada en el 2020 y la

ROS Melodic Morenia lanzada en el 2018, distribución usada en este proyecto, ambas

versiones LTS.

4.1.2. ¿Por qué ROS?

Aunque en los inicios de ROS había otros frameworks para robótica, como Open-R de

Sony, YARP, Player/Stage, entre los más reconocidos, fue la manera en la que ROS

logro crear una comunidad de desarrolladores de código lo que permitió que el

proyecto sobresaliera y en gran medida lo que lo convirtió en el estándar del mundo de

la robótica hoy, además de ser un proyecto libre.

Así que una de las razonas por las que usar ROS es su amplia y activa comunidad,

que proporciona soporte, ROS, cada vez más, es adoptado por el sector comercial,

particularmente en robótica industrial y de servicios. Por su naturaleza distribuida ROS

recibe paquetes desarrollados por su comunidad que agregan valor y robustez al

proyecto.

Cada porción de código desarrollado por la comunidad requiere un respectivo

licenciamiento, la mayor parte de ROS está construido bajo la licencia BSD que es

muy permisiva en cuanto el desarrollo colaborativo.

4.1.3. Componentes principales de ROS

Middleware: ROS proporciona una infraestructura de comunicación entre procesos,

con la que se puede publicar y suscribir, grabar y reproducir mensajes, llamadas de

servicios, entre otras.

Mensajes estándar: ROS ofrece un conjunto de mensajes que permiten la

interoperabilidad entre aplicaciones, van desde datos de transformaciones hasta datos

de navegación.

Librería tf: La solución al problema cinemático de la robótica dentro de ROS.

URDF: El formato de descripción de robots que ofrece ROS, un archivo XML que

provee la solución para el robot y las herramientas del ecosistema ROS.

ActionLib: A parte de la comunicación a través de temas y servicios ROS ofrece un

tipo de comunicación similar los servicios pero que permite obtener datos acerca del

servicio en tiempo de ejecución (Open Robotics, s.f.).

Page 13: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

13

Topología Peer-to-peer: Una aplicación ROS se distribuye bajo la topología P2P, en

donde existe un nodo máster al que los demás nodos se anuncian para permitir la

comunicación entre procesos dentro de la aplicación a través de la infraestructura de

comunicación de ROS.

4.2. Rviz

Entre las herramientas de ROS encontramos una muy importante, sobre todo en el

momento de desarrollar una aplicación en la que se quiera obtener la simulación de un

robot. Rviz es el visualizador para ROS, así que esta herramienta provee un modelo

tridimensional de un robot descrito en formato URDF.

En Rviz se pueden visualizar los datos que adquiere un sensor, por ejemplo, una lidar,

o una IMU, o una cámara, o un sensor propioceptivo como un enconder, etc. El

resultado de la visualización de esos datos es algo como lo ilustrado por la figura 2.

Usa la librería tf para visualizar esos datos en el marco de referencia del robot. Estos

datos son mensajes publicados desde un robot físico o un robot en un entorno de

simulación, por ejemplo, en Gazebo (Open Robotics, s.f.).

Fig. 2. Entorno percibido por un robot visualizado en Rviz. Open Robotics. (Open Robotics, s.f.)

Para poder obtener una visualización del modelo tridimensional de un robot, como se

mencionó anteriormente, Rviz requiere una descripción de este en formato URDF, que

Page 14: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

14

es un archivo en XML en donde se especifican, el tamaño del robot, el número de

joints y links y la posición de estos, los ejes de rotación, los tipos de joints, entre otros

datos que servirán para una representación fiel del modelo del robot dentro de Rviz.

4.3. Gazebo

Gazebo es el simulador dinámico tridimensional predeterminado en ROS, tiene la

capacidad de simular con precisión y eficiencia múltiples robots en entornos

complejos. Si bien es similar a los motores de juegos, Gazebo ofrece una simulación

física con un grado mucho más alto de fidelidad, un conjunto de sensores e interfaces

para usuarios y programas (Open Source Robotics Foundation, 2014).

Comenzó como un proyecto que daría solución a la necesidad de una simulación fiel

de robots en entornos complejos, fue desarrollado por del Dr. Andrew Howard y Nate

Koenig en la University of Southern California en el 2002, en ese entonces y durante

mucho tiempo se empleó como plugin del simulador Stage de Player/Stage. En el

2009 el proyecto es integrado a ROS con la simulación del PR2 por Jhon Hsu, con la

aparición de la Open Source Robotics Foundation (OSFR), desde el 2012 se continua

con el desarrollo del proyecto, ahora con el liderazgo y administración de esta

organización.

Entre las características más relevantes de Gazebo se incluyen:

• Uso de múltiples motores de simulación física de alto rendimiento.

• Uso de OGRE, uno de los motores de representación gráfica de mejor

rendimiento y además open source, con el que logra una representación fiel de

entornos simulados.

• Reproducción de datos recolectados por diferentes tipos de sensores dentro

del entorno de simulación.

• Soporte de un gran número de modelos de robots entre los que se destacan el

PR2, Pioneer DX, TurtleBot, entre otros.

• Es un proyecto open source, lo que permite modificarlo ampliamente.

• Aunque el formato elegido por la OSRF para Gazebo es el SDF (Simulation

Description Format), que entre otras características incluye la descripción de

todo el entorno de simulación (en la figura X. se ilustra la simulación de dos

robots en su entorno de trabajo usando SDFormat), Gazebo soporta el formato

de descripción estándar dentro del universo ROS, más adelante se mostraran

las etiquetas necesarias para que Gazebo pueda traducir un modelo de un

robot en formato URDF y representarlo en un entorno.

Page 15: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

15

Fig. 3. Entorno de simulación con SDFormat. (Foundation, 2020)

4.3.1. La importancia de la simulación

Desarrollar un entorno de simulación para un robot se convierte en una herramienta

poderosa dentro de un proyecto de robótica, ya que a través de una simulación fiel se

pueden hacer pruebas de forma rápida optimizando de esta manera recursos, en

especial tiempo y dinero, y sin arriesgar el hardware.

4.4. Moveit

Moveit es la principal herramienta, o mejor, conjunto de herramientas para la

planeación de trayectorias y la manipulación dentro de la robótica móvil en ROS.

Inicialmente desarrollado por un equipo de trabajo en Willow Garage desde el año

2011, posteriormente apoyado por SRI International desde el 2013 hasta el 2015, en la

mitad del 2015 y hasta entonces la plataforma pasa a ser liderada por PickNik

(PickNik, s.f.).

Page 16: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

16

Fig. 4. Planeación de trayectorias con Movit y Rviz. (PickNik, s.f.)

Moveit cuenta con un nodo primario nombrado move_group, este funciona como un

integrador, es decir une todos los componentes individuales para proporcionar un

conjunto de acciones y servicios ROS.

Fig. 5 Acciones y servicios que componen el nodo primario move_group

Page 17: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

17

4.4.1. Interfaz de usuario

Esta herramienta permite acceder a las acciones y servicios proporcionados por el

nodo primario move_group de tres distintas formas:

Con c++: Usando el paquete move_group interface que proporciona una interfaz c++

Con Python: Usando el paquete moveit_commander

A través de una GUI: Usando un plugin de nombre Complemento planeación de

movimiento para Rviz. (PickNik, s.f.)

4.4.2. Configuración del Moveit

Utiliza el servidor de parámetros ROS para obtener tres tipos de información

URDF; El nodo move_group busca el parámetro robot_description en el servidor de

parámetros ROS para obtener el URDF del robot

SDRF; El nodo move_group busca el parámetro robot_description_semantic en el

servidor de parámetros para obtener el SDRF, normalmente el SDRF se crea usando

el moveit setup assistant.

Configuración de Moveit, el nodo move_group se encargará de buscar en el servidor

ROS otras configuraciones específicas de moveit, incluyendo limites conjuntos,

planeación de movimiento. Los archivos de configuración para estos componentes son

generados por el asistente de configuración Moveit. (PickNik, s.f.)

4.5. Planeación de trayectorias

La planeación de trayectorias es la búsqueda de una sucesión de puntos en el espacio

para un robot, los cuales establecen un punto de referencia inicial y una posición final.

La configuración de una trayectoria queda definida por la distribución de los obstáculos

que rodean el entorno en el que se encuentra el robot, por la geometría de este y sus

capacidades de movimiento. De esta manera la topología del entorno restringirá el

espacio libre de obstáculos, en el que se establecerán las trayectorias para alcanzar la

posición deseada.

Existen dos formas básicas para especificar el movimiento.

• Mediante puntos consecutivos e ignorando la trayectoria que describe el robot

entre dos puntos, a esta forma se le conoce como control punto a punto, tiene

interés practico cuando los puntos están separados, de lo contrario, se vuelve

Page 18: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

18

muy tedioso. Por otra parte, los puntos no deben estar tan separados, ya que

corre el riesgo de que se generen movimientos imprevisibles o no controlados.

En el control punto a punto, el sistema de control automático del robot debe

realizar la interpolación entre los puntos especificados, de forma tal que,

posteriormente sea posible realizar el control de movimientos para que el robot

pase por dichos puntos.

• Especificando el camino que debe unir los puntos mediante una determinada

trayectoria, tal como una línea recta o un círculo, que debe describir el robot en

su entorno, esta estrategia se denomina se le denomina control de trayectoria

continua. En este caso, el sistema de control debe hacer que el robot

reproduzca lo más exacto posible la trayectoria deseada.

Suponiendo que la trayectoria que debe seguir el robot es especificada en el plano

cartesiano, existen dos formas de ejecución.

• Definir los lazos de control directamente en el espacio cartesiano y controlar el

robot para que se anule el error de seguimiento de trayectoria en el entorno.

Esta forma es comúnmente usada para robots móviles, donde la curvatura del

camino generado en el espacio cartesiano este directamente relacionada con

la variable de control que se emplea para el seguimiento de trayectorias.

• Transformar la trayectoria del espacio cartesiano al espacio de las variables

articulares y controlar la evolución de cada una de las variables definiendo los

lazos de control. (Chile, s.f.)

4.6. Websocket

Websocket surge como un estándar para el reemplazo de las técnicas comet,

especialmente para aquellas aplicaciones web que generan contenido en tiempo real,

como pueden ser chats bolsas de comercio, herramientas colaborativas, o

aplicaciones subastadas. Es la manera de brindar un marco estandarizado para estas

aplicaciones en vez de desarrollarlas sobre técnicas que son verdaderos parches para

el protocolo. (Tzancoff, 2011)

4.6.1. Historia

El protocolo websocket comenzó siendo parte de la especificación de HTML 5, pero

ahora se mantiene como un estándar separado a cargo de la IETF y de la W3C.

(Tzancoff, 2011)

En 2011, la IEFT (Grupo de trabajo en ingeniería de internet – The internet

Engineering Task Force) estandarizo el protocolo 𝑅𝐹𝐶2 − 6455 el cual hace

referencia al protocolo websocket. Desde Entonces, la mayoría de los

navegadores web implementaron clientes que soportan este protocolo.

También se desarrollaron librerías java para la implementación del protocolo

websocket desde otros clientes como por ejemplo aplicaciones

𝐴𝑛𝑑𝑟𝑜𝑖𝑑 𝑜 𝑗𝑎𝑣𝑎𝐹𝑋. (Luis Vivas)

Page 19: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

19

4.6.2. Funcionamiento

Websocket define un interfaz de programación de aplicaciones (API) que establece

conexiones socket entre un servidor y un navegador web. Permite una conexión

persistente entre el cliente y el servidor, ambas partes pueden empezar a enviar

mensajes en cualquier momento. (Luis Vivas)

Fig. 6 Comparación entre Ajax Polling y web socket, se observa como mejoran los tiempos de respuesta y la baja latencia entre mensajes

4.7. Raspberry pi

4.7.1. Historia

En mayo del 2009, la fundación Raspberry pi fue fundada en caldecote, south

Cambridgeshire, reino unido como una asociación caritativa que es regulada por la

comisión de caridad de Inglaterra y gales.

La fundación raspberry pi surge con el objetivo en mente: Desarrollar el uso y

entendimiento de los ordenadores en las escuelas. La idea era desarrollar

ordenadores de bajo coste y portables que permitieran que los niños los usarán sin

miedo.

En agosto del 2011, se fabricaron 50 placas Alpha, un modelo similar al B, a diferencia

de que eran un poco más grandes para integrar bien unas interfaces de depuración.

(Dominguez, 2015)

Page 20: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

20

4.7.2. ¿Qué es?

Es un ordenador de bajo coste del tamaño de una tarjeta de crédito, cuenta con un

chip integrado broadcom BCM2835, que contiene un procesador ARM11 con distintas

frecuencias de funcionamiento(overclocking) hasta 1GHz, un procesador grafico

VideoCore IV, y memoria ram que varía dependiendo del modelo (desde 256MB hasta

1GB). Además, cuenta con una salida de audio y video a través de un conector HDMI,

con un puerto de conexión ethernet, además de puertos USB y con su respectiva

entrada de alimentación. (Raspberry Shop, s.f.)

Fig. 7 Chip de la raspberry PI tomado de www.raspberrypi.org

5. Metodología

5.1. Diseño del robot

5.1.1. Primera versión

Inicialmente la idea fue aprovechar al máximo los elementos disponibles en el

inventario del laboratorio de robótica de la universidad (CERI), de ahí la decisión de

integrar al proyecto el modelo hexabot perteneciente al laboratorio como componente

(hardware) principal.

Page 21: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

21

Fig. 8 Primera versión del robot

5.1.2. Primeras pruebas.

Después de haber leído la documentación de la librería desarrollado por Robotis de

nombre Dynamixel Workbench para el control de los servos dynamixel soportada por

la mayor parte de modelos de servos manufacturados por la marca y compatible con

ROS, Linux, macOS y Arduino. Dentro de ROS la librería toma el papel de un meta-

paquete, que contiene tres paquetes; dynamixel_workbench_controllers,

dynamixel_workbench_operators y dynamixel_work-bench_toolbox en él [referencia].

Se procedió a manejar los paquetes controllers y operators, más adelante se resumirá

la función de cada paquete.

Posteriormente se configuraron las posiciones de los motores de dos de las patas del

hexabot fig. 8 en el respectivo archivo dentro del paquete operators, luego se hizo el

mismo proceso para cuatro de las patas fig. 9, estructurando la locomoción en avance

del robot, durante estas pruebas se evidenció que los actuadores requerían torques

elevados para lograr mover los eslabones de las patas, se concluyó que la razón

principal del problema era el mecanismo de unión eslabón-actuador que reproducia

elevadas inercias por vencer para los servomotores.

Page 22: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

22

Fig. 9 Prueba de locomoción con 2 patas

Fig. 10 Prueba de locomoción en avance con cuatro patas

5.1.3. Diseño propio

Partiendo del problema mencionado, se decidió cambiar el modelo del robot por otro

de diseño propio, teniendo como parámetro principal la medida estándar en los puntos

de unión actuador-eslabón para el nuevo prototipo. Se elige la impresión 3D como

proceso de fabricación de las nuevas piezas por relación costo-beneficio,

Page 23: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

23

principalmente porque mediante este proceso se logró garantizar los parámetros de

diseño en las piezas destinando poco tiempo y con poca inversión económica.

La primera tarea que se desarrolló fue el análisis, incluyendo las medidas de las

piezas estándar que contienen los sets Bioloid de Robotis, en concreto las referencias

FP04-F2, FP04-F3 y la FP04-F4, usadas como; primer eslabón, ensamble para el

segundo eslabón y unión para el tercer eslabón respectivamente.

Los modelos CAD de las piezas estándar fueron descargados desde la página oficial

de Robotis al igual que el modelo del servomotor AX-12a. Para completar el modelo

del nuevo prototipo del hexabot se realizó el diseño del tercer eslabón y de la base del

robot con ayuda del software CAD Inventor de Autodesk, los resultados del diseño se

pueden ver en las figuras 10 y 11.

Fig. 11 Eslabon 3 visualizado en formato STL

Fig. 12 Base del robot visualizada en stl

Page 24: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

24

En el caso del eslabón se imprimió en 3d teniendo como material de aporte el PLA,

elegido por su densidad y la facilidad que presenta en el momento de imprimir, en la

figura 12 se presentan los resultados de la impresión. Para la base, primero se ensayó

un modelo con lamina de acrílico de 3mm cortada en laser, los resultados que se

obtuvieron fueron buenos, pero se decidió cambiar el material del prototipo final del

hexabot por fibra de vidrio con resina poliéster por su resistencia mecánica.

Fig. 13 Eslabón 3 impreso en material PLA (Diferentes vistas)

Page 25: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

25

5.2. Construcción

5.2.1. Conexión con la raspberry

Para el control del robot se usó una raspberry pi modelo 3b, la cual se tomó prestada

del laboratorio de la universidad, en la cual se desarrolló el software de control en

ROS.

El primer paso que se realizo fue hacer la instalación de la imagen de Ubuntu mate

18.04 LTS ya que esta imagen es el requisito para poder hacer uso de la versión

melodic de ROS , en una memoria micro SD con un. Después de que se instaló la

imagen del sistema operativo, se insertó la memoria en la raspberry y se procedió a

realizar el proceso de instalación, después de que se instaló se configuro el Ubuntu

mate en la raspberry pi 3b correctamente, después se prosiguió a descargar y hacer la

correcta instalación de los paquetes de ROS necesarios para el desarrollo del

proyecto. Principalmente los relacionados con los motores Dynamixel, entre los que se

encuentran Dynamixel workbench. Después de la correcta instalación de los paquetes

se conectaron los 18 motores que componen las 6 patas del robot en una topología de

bus, usando dos convertidores de datos STL a USB.

5.3. Topología

Como ya se mencionó anteriormente, la topología usada para la conexión de los

dynamixel’s es la comunicación en bus. La comunicación bus es la más simple de

todas las topologías, todos los nodos son conectados a un solo cable, este tipo de

topología ofrece la ventaja de conexiones más fáciles por lo tanto no es necesario

emplear cables de extenso tamaño para una correcta comunicación entre los

elementos presentes. En este caso los dieciocho actuadores conectados a dos

convertidores. Los nueve motores a cada convertidor es decir tres extremidades del

robot están conectadas de tal forma que las tres extremidades forman un triángulo,

como se puede observar en la figura 13, un convertidor se encarga del grupo de

extremidades que contiene la 1, 6, y, 4 y el otro convertidor se encarga de las

extremidades restantes.

Page 26: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

26

Fig. 14 Distribución de las extremidades de ROZH.

Estos convertidores cuentan con unos parámetros que funcionan según el número de

actuadores que se encuentren conectados a este, cuando se inició con el proyecto, los

18 motores estaban conectados a un solo convertidor, esto causaba que los

parámetros que ya vienen establecidos en los paquetes de ROS provocarán errores,

por esto mismo se decidió conectar dos convertidores de señal, por lo tanto cada

convertidor usb2dynamixel se encarga de 9 actuadores (3 extremidades).

5.4. Programación en ROS

Como se mencionó, los servomotores dynamixel cuentan con una librería o meta-

paquete desarrollado por Robotis y soportado por ROS, entre algunas otras

plataformas. Es pertinente mencionar que, aunque hay otros paquetes para el control

de los servomotores dentro de ROS desarrollados por la comunidad, en la distribución

Melodic Morenial el framework se enfocó en dar soporte únicamente a este paquete.

Page 27: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

27

Un meta-paquete hace referencia a un conjunto especializado de paquetes que se

relacionan de algún modo, por ejemplo, en su función. El meta-paquete Dynamixel-

Workbench es la solución de dynamixel para ROS. Este meta-paquete le permite

cambiar fácilmente la ID, la velocidad de transmisión y el modo operativo del

Dynamixel. Además, es compatible con varios controladores basados en el modo

operativo y Dynamixel SDK [http://wiki.ros.org/dynamixel_workbench].

En total, Dynamixel-Workbench incluye tres paquetes controllers, operators y toolbox.

El paquete Controllers muestra cómo emplear DYNAMIXEL en diferentes modos

operativos usando el paquete Dynamixel Workbench Toolbox. Por su parte, el

paquete Operators contiene algunos ejemplos directos de como operar el paquete

controllers.

Dentro de la documentación de Dynamixel-Workbench se presentan las funciones con

más detalle, además de la instalación, modos de uso y la configuración inicial de los

paquetes dentro del entorno ROS. Del análisis de la documentación se concluyó que

el nodo que debíamos personalizar era el nodo joint_operators dentro del paquete

dynamixel-workbench -operators.

A continuación, se resumirá los pasos que se llevaron a cabo hasta la puesta en

marcha de RoZH usando Dynamixel-Workbench.

Se verificó el estado de los motores usando R + Manager 2.0. Este software

comprende una herramienta optimizada para administrar dynamixel desde varios

sistemas operativos. Con este se configuro las id’s de los servomotores acorde a la

estructura del robot desde el número 1 al 18, de forma secuencial en cada una de las

patas del hexabot.

A continuación, usando el nodo find_dynamixel del paquete controllers y especificando

el puerto al cual se conectó el conversor USB2Dynamixel se obtuvó el número de

servomotores conectados, la frecuencia de trabajo, las id’s y por último la serie de los

motores. Para que todos los servomotores puedan ser detectados por el nodo tienen

que estar conectados a una fuente de alimentación de 11.0 voltios, estar conectados

en serie y tener un firmware compatible con el framework.

Luego se debe configurar un archivo yaml como insumo para el nodo dynamixel_work-

bench_controllers, además el nombre del puerto al que se han conectado los servos y

la frecuencia de funcionamiento de los dynamixel’s, deben ir estructurados dentro de

un archivo launch que iniciara el nodo controllers de nombre dynamixel_workbench

_controllers.launch, la configuración del archivo yaml debe ir como se muestra a

continuación:

nom_servo1:

ID: 1 Return_Delay_Time: 0

nom_servo2: ID: 2 Return_Delay_Time: 0

Page 28: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

28

Con esta configuración se crea un mapa que contiene dos objetos, específicamente el

archivo crea una lista de vectores asociativos con dos combinaciones clave – valor, en

el caso del modelo AX-12a. Particularmente en el archivo de muestra se crean dos

servomotores, el primero responderá al nombre nom_servo1 dentro del ecosistema

ROS y los comandos asignados serán ejecutados por el dynamixel con la ID 1 en el

hardware, para la configuración de RoZH el primer servomotor de la primera pata, de

igual modo el dynamixel con la ID 2 responderá a los comandos asignados a el objeto

con nombre nom_servo2.

Un paso recomendado es la llamada al servicio ROS <</dynamixel_command>> con

el que se puede ejecutar comandos que el dynamixel traduce en posición. El modelo

AX-12a tiene una resolución de 0,29º y una posición límite de 300º, como se ilustra en

la figura 13.

Fig. 15 Valores y rangos de movimiento del modelo ax-12a

Antes de llamar al servicio ROS se debe iniciar el nodo <<controllers>> para

ejecutarlo simplemente se ejecuta desde la terminal el comando roslaunch el nombre

del paquete y a continuación el nombre del archivo .launch, como se muestra.

Asumiendo que ya se han compilado los paquetes y además los comandos dentro del

workspace que contiene los paquetes son visibles para la terminal.

Después de ejecutar estos comandos la lista de dynamixels configurados en el archivo

yaml anteriormente serán cargados y los servomotores conectados estarán

disponibles dentro del ecosistema ROS. Ahora bien, como se ha mencionado

$ cd ~/dynamixels_ws && catkin_make $ source devel/setup.bash $ roslaunch dynamixel_workbech_controllers dynamixel_controllers.launch

Page 29: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

29

anteriormente para que un servomotor ejecute una posición desde un comando se

debe hacer la llamada al servicio <</dynamixel_ command>>, esto se puede hacer

desde rqt o usando la línea de comandos así:

El siguiente paso es la creación del archivo de configuración que se aprovecha como

insumo en el archivo joint_operator.launch. Aquí son llamados los servomotores que

fueron configurados en el primer archivo yaml, siguiendo el ejemplo, de la combinación

funcional de estos dos archivos resultaría una configuración como la que sigue:

Dentro de este archivo se crean los comandos formados por los pares motor –

posición que tendrán que seguir los servomotores. El archivo se forma por dos mapas;

joint y motion de configuración para el nodo operators. El primer mapa incluye la lista

names, que comprende los nombres de todos los servomotores configurados en el

primer archivo yaml. Siguiendo el ejemplo, los servomotores con id 1 y 2,

respectivamente dentro de la lista. El segundo mapa incluye una nueva lista names

formada por una lista de vectores asociativos, estos vectores comprenden dos claves,

la primera nombrada step, es una lista de ángulos en radianes a los que el servomotor

debe ir, estas listas son emparejadas con las listas names del mapa joint, de manera

que, siguiendo el ejemplo, en el vector de nombre <<centro>> el servomotor con la id

1 tomará la posición 0 radianes y el servomotor con la id 2 tomará la posición 2.6

radianes, y en el vector de nombre <<arriba>> intercambiaran de posiciones, así

mismo estas listas deberán contar con la misma cantidad de elementos.

Nodo operators

La edición del paquete operators comienza con el archivo de cabecera, que dentro del

ámbito de este proyecto suma algunas declaraciones adicionales. En concreto se

agregó un tema, que junto a el tema existente forman la infraestructura de

comunicación que usara el nodo para publicar las trayectorias a seguir por cada uno

de los <<grupos cinemáticos>> formados, además se ampliaron las llamadas a los

$ rosservice call /dynamixel_workbench/dynamixel_command “command: ‘‘ id: 1 addr_name: ’Goal_Position’ value: 1023”

joint: names: [nom_servo1, nom_servo_servo2] motion:

names: [centro, arriba] centro: step: [0.0, 2.6] time_from_start: 1.0 arriba: step: [2.6, 0.0] time_from_start: 2.0

Page 30: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

30

servicios, obligatorios para cada mensaje de trayectoria diferente (lista de vectores

asociativos dentro del mapa motion).

Lo siguiente fue la edición del archivo de código fuente del nodo, para este archivo se

implementaron las declaraciones que fueron adicionadas en el archivo de cabecera.

Es práctico mencionar que el algoritmo de publicación usado en el nodo comienza con

el llamado a la función <<getTrajectoryInfo()>> que recibe como argumentos el

nombre del archivo yaml que contiene los comandos de locomoción, una instancia

JointTrajectory y un string. La finalidad de esta función es cargar los vectores

asociativos dentro del archivo yaml en las instancias JointTrajectory, el valor de

asignación al argumento string se usa como recurso para cargar el mapa de igual

nombre. Por ejemplo, la línea de código para cargar el mapa de nombre motion en la

estructura mostrada antes es como sigue:

El valor asignado al string yaml_file es un parámetro de asignación del archivo launch

del paquete. La función retorna un valor booleano, que será verdadero si el archivo

yaml está bien estructurado.

Ahora bien, el siguiente paso realizado para la publicación de los comandos es la

creación del servicio, como se indica en los tutoriales de la página oficial ros, partiendo

desde una interfaz y, posteriormente llamando a la función adverticeService. Esta

recibe como argumentos el nombre del servicio y el nombre de la funcion callback que

iniciara al ser llamada, así:

Este servicio, al igual que la función callback estan declarados en el archivo de

cabecera. La función callback es la encargada de realizar la publicación del mensaje,

de tal manera que al llamar al servicio se publicara el mensaje. A continuación, se

mostrará la estructura de publicación dentro de la función callback.

• a los motores

• Visualización del robot en ROS (URDF+RVIZ)

• Planeamiento de trayectorias.

std::string yaml_file = node_handle_.param<std::string>("trajectory_info_", ""); jnt_tra_msg_ = new trajectory_msgs::JointTrajectory; bool result = getTrajectoryInfo(yaml_file, jnt_tra_msg_, "motion");

move_command_server_ = node_handle_.advertiseService("nom_servicio", &JointOperator::moveCommandMsgCallback, this);

bool JointOperator::moveCommandMsgCallback(std_srvs::Trigger::Request &req, std_srvs::Trigger::Response &res) { joint_trajectory_pub_.publish(*jnt_tra_msg_); res.success = true; res.message = "Success to publish joint trajectory"; ROS_INFO("Avance"); return true; }

Page 31: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

31

diseñar solo dos brazo y usar transmisión en el rdf para mover de a tres patas.

5.5. URDF

El urdf es un formato de lenguaje escrito en XML para representar el modelo de un

robot. A continuación se mostrará el URDF que se desarrolló para ROZH

En la imagen anterior se muestra la primera parte del urdf, para cada link definido hay

tres etiquetas, la etiqueta visual, la etiqueta colisión y la etiqueta inertial. En la etiqueta

visual se encuentran las características visibles de la pieza, es decir se define una

posición en el plano XYZ, sus ángulos de rotación, la escala de la pieza y la ruta en la

que se encuentra el archivo .STL. Para la etiqueta colisión se recomienda tener un

modelo simplificado del robot para que el tiempo de la realización de los cálculos de

colisión se reduzca, en caso de que se defina el mismo modelo que en la etiqueta

visual el procesamiento de datos es mayor y el tiempo para la solución de estos

cálculos es más complejo, por esta razón se coloca un modelo simplificado e igual que

Page 32: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

32

en la etiqueta visual se define, la posición inicial en un plano XYZ, sus ángulos de

rotación, la escala de la pieza y la ruta del .STL. En la etiqueta de inercia se agregan

los valores que se obtuvieron en la matriz de inercia. Está matriz de obtiene de un

programa CAD, para el caso de este proyecto se obtuvo está matriz del software

Autodesk Inventor como se ve en la figura 16.

Fig. 16 Matriz de inercias en el software Autodesk Inventor.

Para cada link del robot se hace lo expuesto anteriormente, es decir para los 18 links de ROZH

se definen las tres etiquetas: visual, collision e inertial.

Page 33: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

33

Fig. 17 Definición del primer link de la extremidad uno.

El robot ROZH cuenta con 18 joint, es decir 3 por extremidad y en el urdf van definidos de la

siguiente forma:

Fig. 18 Definición de los joint de una extremidad.

Page 34: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

34

En la figura 18, nos muestra como se definen los joint en el URDF del robot, se da el parámetro

de un link padre y un link hijo, como es un joint de tipo continuo se debe especificar el eje de

rotación y su posición inicial. Lo mostrado en la figura 18 se repite para cada una de las

extremidades por lo tanto se tienen que definir 18 joint dentro del urdf.

Resultados.

• Se hicieron dos grupos de locomoción uno formado por las extremidades 1,4, y

6 y el otro con las extremidades restante 2, 3, y 5, esto se hizo con el fin de

reducir el número de controladores para la simulación del robot

• El OMPL (planeador de trayectorias de moveit) es el encargado de planear las

trayectorias. Estas trayectorias en las que van definidas dos poses, la pose

inicial de la extremidad y la pose a la que se quiere llegar, es decir a una pose

final.

Fig. 19 Definición de las posiciones finales del robot.

Page 35: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

35

Fig. 20 Planeación de trayectorias en moveit

Fig. 21 Simulación en gazebo

Page 36: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

36

6. Agradecimientos

Jorge Ivan Labrador Aya.

En primer lugar, quiero agradecer a mi madre Luz por ser el pilar más importante, a

mis abuelos maternos Ana y Custodio, y a mi tío Alex, su esposa victoria y sus hijos

Jimmy y Estaban, a mis hermanas Valentina Y Nikol por el amor, el esfuerzo y el

apoyo incondicional que me ofrecieron para llegar a cumplir una meta más, gracias por

inculcar en mí, valores los cuales fueron de vital importancia para cumplir este logro.

También un agradecimiento a la Familia Rangel parales, por brindarme su apoyo en

un momento crucial para culminar esta meta.

Así mismo, quiero expresar mi agradecimiento al director de proyecto Olmer Garcia,

por habernos guiado, aconsejado y corregido a lo largo del desarrollo de este

proyecto, a mis compañeros de grupo por ser partícipes del desarrollo de esta etapa

en especial a mi compañero de tesis Diego.

Diego Fernando Romero

Quiero agradecer a mis padres, y a mis hermanos que fueron el pilar para que pudiese

cumplir esta meta, gracias por brindarme su apoyo, su amor y su paciencia.

También quiero agradecer al director de proyecto Olmer Garcia, a mis compañeros de

grupo por ser partícipes de mi crecimiento en el ámbito profesional.

Page 37: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

37

7. Conclusiones

• Para un robot zoomórfico de seis extremidades la cinemática es más compleja

que la de un robot con cuatro extremidades, pero la ventaja de un mayor

número de extremidades en el robot es la estabilidad. Y en comparación a un

robot con locomoción de ruedas, un robot con extremidades se puede

desempeñar mejor en diferentes tipos de terreno.

• Para proyectos de robótica es esencial desarrollar una buena simulación, esto

hace que se reduzcan los recursos del proyecto (tiempo, dinero) y no se

arriesgar el hardware del robot.

• Dentro del diseño del robot hay que asegurar que las uniones no presenten

inercias exageradas que se traducen en picos de corrientes que puedan llegar

a dañar el hardware del robot. Además, se debe seleccionar adecuadamente

los materiales de las piezas en términos de resistencia mecánica y masa

evitando que los actuadores del robot tengan que soportar pesos excesivos y

asegurando que las piezas resistan.

• La principal ventaja de usar ROS es que es una plataforma open source, hay

paquetes desarrollados por la comunidad que se pueden usar en el proyecto

para agregar valor, y robustez. Además la comunidad de ROS es bastante

amplia y en los últimos años viene aumentando más y más, esta brinda soporte

es cada paquete que han desarrollado

• Para la simulación de un robot con uniones paralelas resulta útil usar la

etiqueta mimic la cual hace que se reduzcan el número de controladores, en el

caso de este proyecto sin esta etiqueta se ocupan 6 controladores es decir un

controlador por extremidad, con esta etiqueta se redujeron a dos controladores.

Un controlador por cada grupo de 3 extremidades.

Page 38: SIMULACIÓN DE UN ROBOT HEXAPODO CON ROS Y GAZEBO

38

8. Referencias

Arroyo, R. C. (2017). Sistema de control para robot hexápodo de exploración. Madrid, España.

Bañó, C. I. (2015). Diseño monitorización y control de un hexápodo con ROS. Valencia.

Chile, U. d. (s.f.). UdeSantiagoVirtual. Recuperado el 07 de 06 de 2020, de

http://www.udesantiagovirtual.cl/moodle2/mod/book/view.php?id=24819

Dominguez, C. G. (2015). Aplicaciones orientadas a la domotica con raspberry pi. Sevilla.

Foundation, O. S. (2020). SDFormat. Recuperado el 05 de 06 de 2020, de http://sdformat.org/

Franco Tedeschi, G. C. (2014). Design Issues for Hexapod Walking Robots . Robotics.

Luis Vivas, H. M. (s.f.). Arquitecturas de software con Websocket para aplicaciones web

multiplataforma. Recuperado el 07 de 06 de 2020, de

https://www.researchgate.net/publication/268150437_Arquitectura_de_software_co

n_websocket_para_aplicaciones_web_multiplataforma

Open Robotics. (s.f.). ROS. Recuperado el 11 de 02 de 2020

Open Source Robotics Foundation. (2014). Gazebo: Tutorials Beginner: Overview. Recuperado

el 06 de 04 de 2020, de http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b1

PickNik. (s.f.). Moveit. Recuperado el 07 de 06 de 2020, de https://moveit.ros.org/

Raspberry Shop. (s.f.). Recuperado el 07 de 06 de 2020, de

https://www.raspberryshop.es/guia-completa-raspberry-pi.php

Tzancoff, M. D. (2011). Comparación de performance e implementación de aplicaciones web.

La plata.

Wyrobek, K. (31 de Oct de 2017). IEEE spectrum. Recuperado el 11 de 03 de 2020, de The

Origin Story of ROS, the Linux of Robotics:

https://spectrum.ieee.org/automaton/robotics/robotics-software/the-origin-story-of-

ros-the-linux-of-robotics