Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Descarga1 PDF
Descarga1 PDF
AUTOMTICA INDUSTRIAL
Modelo cinemtico y
control de un brazo
robtico imprimible
Agradecimientos
En primer lugar, quiero expresar mi agradecimiento al Departamento de Ingeniera de
Sistemas y Automtica de la Universidad Carlos III de Madrid y en especial a mi tutor, D.
Alberto Valero Gmez y a mi profesor D. Juan Gonzlez Gmez. Ellos me brindaron la
oportunidad de embarcarme en este proyecto. Adems me ensearon el maravilloso mundo
de la robtica y la impresin 3D.
Tambin quiero agradecer a mis compaeros Ana De Prado Navarrete, Mara Ramos
Montero y Jose Manzano Fraile por compartir conmigo sus conocimientos y darme todo su
apoyo. Gracias tambin a mi compaero Antonio Castro Gmez por su colaboracin y por
cederme su diseo del brazo robtico imprimible.
Por ltimo, agradecer a mi familia todo el esfuerzo que han hecho por m. Mencin
especial para mi padre que ha revisado exhaustivamente esta memoria.
Resumen
El objetivo de este proyecto es el desarrollo del modelo cinemtico, el control y la
simulacin mediante un ordenador de un brazo robtico imprimible. Dicho robot es el objeto
del proyecto fin de carrera de Antonio Castro Gmez. As, se intenta dar una continuidad al
proyecto realizando una interfaz grfica para su control.
Para ello, se ha diseado e implementado un programa en C++ y OpenGL. Este
programa incorpora una interfaz grfica que permite la representacin en tres dimensiones de
la posicin y orientacin del brazo robtico. Adems se indican por pantalla los valores de los
ngulos de los ejes y la posicin del extremo del robot.
El funcionamiento del programa consta de los siguientes pasos: el usuario manda una
orden a travs del gamepad, se recibe y se analiza el mensaje, se simula los movimientos en la
pantalla y, finalmente, se ejecuta la orden en el robot real.
Se ha dotado al simulador de tres modos de funcionamiento. En primer lugar, tenemos
el modo de teleoperacin en el que el usuario mueve el robot a travs de los botones del
gamepad. En segundo lugar, el modo de grabacin permite guardar una sucesin de
movimientos realizado por el usuario y posteriormente reproducirlos en el robot real. En
tercer y ltimo lugar, con el modo de posicionamiento el usuario puede introducir las
coordenadas de un punto del espacio donde se situar el extremo del robot.
Se ha elaborado el modelo cinemtico completo del brazo robtico. Por un lado, el
problema de la cinemtica directa ha sido solucionado a travs del algoritmo de DenavitHartenberg. Por otro lado, se ha resuelto la cinemtica inversa a travs de mtodos
geomtricos.
Para la comunicacin entre el robot y el punto de control (un ordenador) se
contemplan dos posibilidades. La primera es la utilizacin de un cable USB que otorga mayor
fiabilidad a la comunicacin. La segunda posibilidad utiliza comunicacin inalmbrica mediante
Bluetooth, permitiendo un movimiento ms libre de hasta 9 metros de distancia al punto de
control.
El propsito final es la obtencin de un brazo robtico imprimible, de bajo coste y con
un mtodo de control y simulacin de fcil manejo. Tanto las piezas del robot como el
software que lo controla estn en cdigo abierto. De esta forma, se posibilita la modificacin,
ampliacin o mejora del proyecto por parte de la comunidad.
Abstract
The objective of this project is to develop the kinematic model, the control and
simulation using a computer of a printable robotic arm. This robot is the subject of the final
project of Antonio Castro Gmez. The intention is to give continuity to the project by making a
GUI for its control.
To do this, we have designed and implemented a program in C + + and OpenGL. This
program has a graphical interface that displays a three-dimensional representation of the
position and orientation of the robot arm. Furthermore the values of the angles of the axes
and the position of the end of the robot are indicated on the screen.
The operation of the program consists of the following steps: the user sends a
command through the gamepad, the message is received and analyzed, it simulates the
movements on the screen and, finally, the command is executed by the real robot.
The simulator has been provided with three operating modes. First, we teleoperation
mode in which the user moves the robot with the buttons on the gamepad. Second, the
recording mode to save a sequence of movements performed by the user and then reproduces
them on the real robot. Third and finally, with the positioning mode the user can enter the
coordinates of a point in space where you will place the end of the robot.
We have developed complete kinematic model of the robotic arm. On one hand, the
direct kinematic problem has been solved through Denavit-Hartenberg algorithm. On the
other hand, inverse kinematics resolved through geometric methods.
For communication between the robot and the control point (a computer) there are
two possibilities. The first is the use of a USB for added reliability in communication. The
second possibility uses Bluetooth wireless communication, allowing freer movement of up to 9
meters away from the checkpoint.
The final purpose is to obtain a low cost printable robotic arm with an easy to use
control and simulation method. Both, the robot parts and the control software are open
source. Thus, it allows the modification, extension or improvement of the project by the
community.
ndice
1. INTRODUCCIN ....................................................................................................................... 11
1.1. OBJETIVOS ........................................................................................................................ 11
Comunicacin .............................................................................................................. 11
Posicionamiento .......................................................................................................... 11
OpenRAVE ................................................................................................................... 14
Botones ....................................................................................................................... 20
Joysticks ....................................................................................................................... 20
Sistema de control....................................................................................................... 29
CLASES ......................................................................................................................... 44
PROCESOS.................................................................................................................... 51
7. BIBLIOGRAFA .......................................................................................................................... 66
8. ANEXOS ................................................................................................................................... 67
8.1. PLANOS............................................................................................................................. 67
ndice de Ilustraciones
Ilustracin 1. Software RobotStudio de la empresa ABB ............................................................ 13
Ilustracin 2. Software KUKASim de la empresa KUKA ............................................................... 13
Ilustracin 3. Simulador OpenGRASP adaptacin de OpenRAVE ............................................... 14
Ilustracin 4. Simulador OpenMR adaptacin de OpenRAVE ..................................................... 15
Ilustracin 5. Impresora 3D modelo Thig-o-matic de Makerbot Industries ............................... 16
Ilustracin 6. Servomotor Futaba S3305 ..................................................................................... 17
Ilustracin 7. Dimensiones de los servomotores Futaba. ........................................................... 17
Ilustracin 8. Micro-servomotor Tower Pro modelo SG90 ......................................................... 17
Ilustracin 9. Dimensiones de los micro-servomotores .............................................................. 17
Ilustracin 10. Microcontrolador Arduino UNO. ......................................................................... 18
Ilustracin 11. Gamepad (mando de control) ............................................................................. 19
Ilustracin 12. Gamepad vista frontal. Numeracin de los botones. ......................................... 20
Ilustracin 13. Ejes de los Joysticks frontales del Gamepad. ...................................................... 20
Ilustracin 14. Imagen de la batera de tipo LiPo ........................................................................ 21
Ilustracin 15. UBEC regulador de voltaje................................................................................... 22
Ilustracin 16. Mdulo JY-MCU Arduino Bluetooth Wireless Serial Port. .................................. 22
Ilustracin 17. Esquema con la ubicacin de los ejes del robot.................................................. 24
Ilustracin 18. rea de trabajo del robot en un plano ................................................................ 24
Ilustracin 19. Fotografa del brazo robtico completo ............................................................. 25
Ilustracin 20. Fotografa de la mueca del brazo robtico ....................................................... 26
Ilustracin 21. Fotografa del brazo robtico completo en posicin vertical ............................. 26
Ilustracin 22. Imagen del sistema de unin entre dos de los eslabones. ................................. 27
Ilustracin 23. Movimiento de rotacin de las articulaciones .................................................... 27
Ilustracin 24. Servomotor inferior de la base del robot. ........................................................... 28
Ilustracin 25. Servomotor superior de la base del robot. ......................................................... 28
Ilustracin 26. Configuracin angular o antropomrfica ............................................................ 28
Ilustracin 27. Pinza imprimible utilizada como herramienta del robot. ................................... 29
Ilustracin 28. Diagrama de relacin entre cinemtica inversa y directa. .................................. 30
Ilustracin 29. Diagrama con los sistemas de referencia, eslabones y ejes del robot ................ 31
Ilustracin 30. Diagrama con los sistemas de referencia y los ejes del robot ............................ 31
Ilustracin 31. Esquemtico de los 3 primeros GDL del robot. ................................................... 35
Ilustracin 32. Configuraciones codo arriba y abajo ................................................................... 36
Ilustracin 33. Esquema de interaccin entre el usuario y el simulador .................................... 38
Ilustracin 34. Esquema de interaccin (Usuario-Ordenador-Robot) ........................................ 38
Ilustracin 35. Captura de pantalla del simulador. ..................................................................... 41
Ilustracin 36. Entorno de desarrollo QTCreator. ....................................................................... 42
Ilustracin 37. Ejemplo de una escena desarrollada con GLU. ................................................... 43
Ilustracin 38. Diagrama UML de las relaciones entre las clases encargadas del dibujado. ...... 45
Ilustracin 39. Diagrama UML de la clase ObjectGL. .................................................................. 45
Ilustracin 40. Diagrama UML de la clase Cuboid. ...................................................................... 46
Ilustracin 41. Diagrama UML de la clase SolidCylinder. ............................................................ 46
Ilustracin 42. Diagrama UML de la clase FirstLink. .................................................................... 46
Ilustracin 43. Diagrama UML de la clase Angle. ........................................................................ 47
Universidad Carlos III de Madrid
ndice de tablas
Tabla 1. Caractersticas principales de los servomotores utilizados ........................................... 18
Tabla 2. Caractersticas principales del microcontrolador utilizado ........................................... 19
Tabla 3. Caractersticas principales de la batera utilizada ......................................................... 21
Tabla 4. Caractersticas del UBEC ................................................................................................ 22
Tabla 5. Caractersticas del mdulo Bluetooth. .......................................................................... 22
Tabla 6. Clasificacin de los robots segn la AFRI ....................................................................... 23
Tabla 7. Parmetros Denavit-Hartenberg ................................................................................... 32
Tabla 8. Funcionalidad de los botones del Gamepad ................................................................. 40
Tabla 9. Funcionalidad de los josysticks del gamepad ................................................................ 40
Tabla 10. Descripcin de las clases cuya funcin es el dibujado................................................. 44
Tabla 11. Definicin de las clases cuya funcin es el clculo y la visualizacin de parmetros.. 47
Tabla 12. Descripcin de las clases dedicadas a la comunicacin entre el Gamepad y el
microcontrolador. ....................................................................................................................... 49
Tabla 13. Asignacin de puertos a los perifricos ....................................................................... 63
ndice de ecuaciones
Ecuacin 1. Obtencin de la Matriz de transformacin D-H....................................................... 32
Ecuacin 2. Matriz de transformacin D-H ................................................................................. 32
Ecuacin 3. Resultados obtenidos de la Matrices de transformacin (i-1Ai). .............................. 33
Ecuacin 4. Producto para la obtencin de la matriz de transformacin T. ............................... 33
Ecuacin 5. Matriz de Transformacin T ..................................................................................... 33
Ecuacin 6. Forma de las soluciones de la cinemtica inversa. .................................................. 34
Ecuacin 7. Forma de las soluciones de posicionamiento. ......................................................... 34
10
1. INTRODUCCIN
1.1. OBJETIVOS
El objetivo principal de este proyecto es el desarrollo del modelo cinemtico, el control
y la simulacin de un brazo robtico imprimible. A continuacin se expone en detalle, los
diferentes puntos que abarca el proyecto:
Comunicacin
El usuario podr comunicar rdenes de actuacin al robot a travs del teclado o del
gamepad. El programa interpreta las indicaciones, muestra la nueva posicin del robot en el
simulador y se comunica con el microcontrolador. ste interpreta el mensaje y manda las
seales a los servomotores para que adopten la posicin correspondiente.
Para la simulacin en 3D del brazo robtico, se implementar una interfaz grfica que
muestra una representacin del robot con un posicionamiento y orientacin determinados.
Adems se muestran por pantalla los valores de los ejes y la posicin del extremo del robot.
Se quiere dar solucin al problema cinemtico directo e inverso del brazo robtico
objeto de este trabajo. As, se obtiene la posicin del extremo del robot a partir de los valores
de los ngulos del mismo y viceversa.
Teleoperacin remota
Grabacin de movimientos
Posicionamiento
El usuario podr especificar un punto del espacio y ordenar al robot que adopte dicha
posicin. Esto ser posible gracias a la implementacin de un modelo cinemtico inverso
completo.
11
Los fabricantes de robots poseen sus propios programas para el control y la simulacin
de sus productos. Se trata de software privado, muy elaborado y que conlleva un alto coste
monetario. ste software permite:
12
13
OpenRAVE
Existen diversos proyectos que, tomando OpenRAVE como base, realizan adaptaciones
como es el caso de OpenGRASP. Se trata un conjunto de herramientas de cdigo fuente
abierto para la simulacin del agarre y manipulacin.
14
15
2.1. IMPRESORA 3D
Para la construccin de las piezas que forman el brazo robtico se ha utilizado una
impresora 3D. El funcionamiento de sta consiste en la extrusin, a alta temperatura, de un
polmero termoplstico. ste es extruido en finas lneas creando formas por capas.
Las dos impresoras utilizadas pertenecen a la Universidad Carlos III de Madrid. Son del
modelo Thing-o-matic fabricadas por la empresa Makerbot Industries. En la ilustracin
siguiente, podemos ver una imagen frontal de una de las impresoras 3D utilizadas.
16
2.2. SERVOMOTORES
Para dar movimiento al brazo robtico imprimible se han utilizado tres servomotores
modelo S3003 y uno modelo S3305 todos ellos de la marca Futaba. stos se ocupan del
movimiento de la base y los dos primeros eslabones. Adems el brazo robtico cuenta con
cuatro micro-servomotores cuyo modelo es el SG90 de TowerPro. ste modelo, de reducido
peso y tamao, se empleado en el ltimo eslabn y en la mueca del robot.
A continuacin se muestran las imgenes correspondientes a los diferentes
servomotores empleados. Adems de un esquemtico mostrando las dimensiones de stos.
17
Caractersticas
Sistema de control
Tensin de funcionamiento [V]
Velocidad (a 6.0V) [s/]
Torque (a 6.0V) [kgcm]
Tamao [mm]
Peso [g]
Tipo de servomotor
FUTABA S3305 FUTABA S3003 Tower Pro SG90
PWM
PWM
PWM
4.8-6.0
4.8-6.0
4.0-7.2
0.2s/60
0.19s/60
0.12s/60
8.9
4.1
1.2
40x20x38.1
40x20x38.1
22.5x12.0x26.5
46.5
37.2
9.0
2.3. MICROCONTROLADOR
El microcontrolador empleado es el Arduino UNO. Utiliza un microprocesador
ATMEGA328 del fabricante Atmel. Se han utilizado las salidas digitales y PWM para el control
de los servomotores. A continuacin se muestra una imagen de dicho microcontrolador.
18
Microprocesador
Tensin de funcionamiento
Voltaje de entrada (recomendada)
Voltaje de entrada (lmites)
Entradas/salidas digitales
Entradas analgicas
Memoria Flash
SRAM
EPROM
Velocidad de reloj
ATMEGA328
5V
7-12V
6-20V
14
6
32KB (ATMEGA328)
2KB (ATMEGA328)
1KB (ATMEGA328)
16MHz
2.5. GAMEPAD
Para el control de los ejes del robot se ha optado por un Gamepad. De esta forma, se
consigue un control ms sencillo del brazo robtico. El mando utilizado es un Dual Shock del
fabricante Maxwise. Se conecta al ordenador por medio de un cable USB. En la imagen
siguiente se muestra el tipo de mando de control utilizado.
Para describir las funciones asignadas al Gamepad describiremos en primer lugar los
botones y en segundo lugar los 2 joysticks frontales. Por ltimo, se describir la programacin
realizada para el mando.
19
Botones
Joysticks
Los dos Joystick del Gamepad poseen movimiento en el eje X e Y tal y como se
muestra en la ilustracin siguiente. Adoptan valores de -180 a 180 segn la direccin y
el sentido del movimiento.
20
2.6. BATERA
Para la alimentacin tanto de los servomotores como del microcontrolador se utilizar
una batera de tipo polmero de litio (LiPo). Son una variacin de las bateras de iones de litio
(Li-ion). Poseen un tamao y peso ms reducido que las bateras de in litio adems de una
mayor densidad de energa.
Concretamente se ha utilizado la batera del fabricante DragonRed cuyas
caractersticas se detallan en la tabla siguiente.
Tabla 3. Caractersticas principales de la batera utilizada
Tipo de batera
Tensin
Densidad de energa
Nmero de celdas
Intensidad mxima
Dimensiones
Peso
Polmero de Litio
7.4V
5000mAh
2
150A
132x44x21 mm
235g
Se ha elegido la utilizacin de una batera de tipo LiPo por las siguientes razones:
21
Tensin de salida
Intensidad de salida
Tensin de entrada
Dimensiones
Peso
5V 6V
3A
5.5V-26V
43 x 17 x 7 mm
11g
Tensin de entrada
Dimensiones
Peso
5V
44 x 16 x 7 mm
7g
22
Tipo A
Tipo B
Tipo C
Tipo D
23
Una vez indicados los ejes de giro del robot podemos describir el rea de trabajo del
mismo. sta queda contenida en un plano delimitado por el ngulo de giro de la base (q1). Se
puede observar el rea de trabajo del robot en la siguiente ilustracin.
24
3.1. DISEO
El diseo del brazo robtico forma parte del Proyecto Fin de Carrera de Antonio Castro
Gmez. En este Trabajo Fin de Grado que nos ocupa, se ha utilizado dicho diseo con el
consentimiento expreso del autor. Se ha intentado dar una continuidad a ese proyecto
realizando el control y la simulacin de dicho robot.
Se han tomado los archivos de los diseos en formato del programa OpenSCAD
(software libre de diseo 3D), que han sido convertidos a formato STL e introducidos en las
impresoras 3D. As, mediante el software ReplicatorG de dichas impresoras se ha procedido a
la impresin de las piezas con plstico ABS.
A continuacin se muestran dos imgenes del robot completo y un detalle de la
mueca.
25
26
3.2. MORFOLOGA
El robot est formado por los siguientes elementos: estructura mecnica, sistema de
accionamiento, sistema de control y elementos terminales.
Estructura mecnica
Est formado por una serie de eslabones unidos mediante articulaciones que
permiten un movimiento relatico entre cada dos eslabones consecutivos. Dichos
eslabones, de plstico ABS, estn fabricados utilizando una impresora 3D.
Ilustracin 22. Imagen del sistema de unin entre dos de los eslabones.
27
28
Sistema de accionamiento
Sistema de control
Elementos terminales
Como elemento terminal se ha montado una pinza accionada por un miniservomotor. El diseo ha sido realizado por Edgar Simo. Se han obtenido los
archivos de dicho diseo en formato STL a travs del portal de internet Thingiverse
(www.thingiverse.com). Posteriormente se imprimieron las piezas y se mont la
pinza. A continuacin mostramos una imagen de la pinza montada.
29
3.3. CINEMTICA
En este apartado analizaremos el movimiento del robot con respecto a un sistema de
referencia situado en la base. Obtendremos una descripcin analtica del movimiento espacial
y, en particular, de la posicin y orientacin del extremo final del robot.
Tenemos dos problemas a resolver en cuanto a la cinemtica del brazo robtico:
Valores de las
coordenadas articulares
Cinemtica directa
Posicin y orientacin
del extremo del robot
(x,y,z,,,)
Cinemtica inversa
Ilustracin 28. Diagrama de relacin entre cinemtica inversa y directa.
30
Cinemtica directa
Ilustracin 29. Diagrama con los sistemas de referencia, eslabones y ejes del robot
Ilustracin 30. Diagrama con los sistemas de referencia y los ejes del robot
31
Articulacin
q1
L1
90
q2-90
L2
q3
-90
q4
-L3
90
q5
-90
q6
-L4
El parmetro i es el ngulo que hay que girar sobre el eje zi-1 para que xi-1 y xi queden
paralelos.
El parmetro di es la distancia sobre el eje zi-1 que hay que desplazar el sistema i-1 para
que xi-1 y xi queden alineados.
El parmetro ai es la distancia sobre el eje xi que hay que desplazar el sistema i-1 para
que su origen coincida con el sistema i.
El parmetro i es el ngulo que hay que girar sobre xi para que el sistema i-1 coincida
con el sistema i.
Una vez hallados los parmetros se obtienen las matrices de transformacin como
expresa la siguiente ecuacin:
Ecuacin 1. Obtencin de la Matriz de transformacin D-H
32
Para obtener la matriz de transformacin (T) entre la base y el extremo del robot hay
que multiplicar por las diferentes matrices de transformacin entre el sistema 0 y el sistema 6.
Se procedera de la siguiente forma:
Ecuacin 4. Producto para la obtencin de la matriz de transformacin T.
Como se puede observar en la ecuacin 5, la matriz T resultante, est formada por una
submatriz 3x3 dedicada a la orientacin ( , , ) y un vector 3x1 dedicado al posicionamiento
( ).
Ecuacin 5. Matriz de Transformacin T
Para la obtencin de los valores de la posicin (x, y, z) del extremo del robot nos
interesa el exclusivamente la ltima columna de la matriz de transformacin (T). As, para
obtenerlo, realizaremos la siguiente operacin:
33
Cinemtica Inversa
El objetivo del problema cinemtico inverso consiste en encontrar los valores que
deben adoptar las coordenadas articulares del robot q = [q1, q2, q3, q4, q5, q6]T para que su
extremo se posicione y oriente segn una determinada localizacin espacial.
Para resolver este problema encontraremos una solucin cerrada que tendr la
siguiente forma:
Ecuacin 6. Forma de las soluciones de la cinemtica inversa.
Para el caso que nos ocupa, la solucin del problema cinemtico inverso no es nica,
existiendo diferentes soluciones que posicionan y orientan el extremo del robot del mismo
modo. No obstante, podemos establecer restricciones para la solucin obtenida.
A pesar de las dificultades que se nos plantean se da la circunstancia de que los tres
ltimos grados de libertad, dedicados fundamentalmente a orientar el extremo del robot,
corresponden a giros sobre ejes que se cortan en un punto. De esta forma, plantearemos el
problema cinemtico inverso para el posicionamiento:
Posicionamiento: involucra a los valores de los tres primeros ejes (q1, q2, q3) y
depende del punto del espacio objetivo (x, y, z).
Ecuacin 7. Forma de las soluciones de posicionamiento.
34
Esta expresin permite obtener q3 en funcin del vector posicin del extremo ( ). No
obstante por motivos de ventajas computacionales, es ms conveniente utilizar la expresin de
la arcotangente en lugar del ascoseno.
Puesto que
35
Con
Como se ve, existen dos posibles soluciones par q3 segn tome el signo positivo o
negativo en la raz. stas corresponden a las configuraciones de codo arriba y codo abajo del
robot.
Siendo:
36
De nuevo los dos posibles valores segn la eleccin del signo dan lugar a dos valores
diferentes de q2 correspondientes a las configuraciones codo arriba y abajo.
Las expresiones que resuelven el problema cinemtico inverso para los tres primeros
grados de libertada del robot son:
37
4. CONTROL Y SIMULACIN
Para el control y la simulacin del robot se ha implementado un programa en lenguaje
C++ y OpenGL. En este apartado describiremos el control realizado a travs de un gamepad y la
simulacin que representa el robot en la pantalla del ordenador.
Podemos describir el sistema como un bucle cerrado en el que el usuario ejecuta unas
acciones de control sobre el gamepad, el programa las recibe, representa la nueva posicin y
orientacin del robot y la muestra al usuario.
38
39
4.1. CONTROL
El control se realiza mediante un gamepad (ver apartado 2.5. Gamepad). ste
proporcionar el control al usuario sobre los movimientos de los diferentes ejes del robot. A
continuacin recopilamos en una tabla con las funciones asociadas a los diferentes botones del
gamepad.
Tabla 8. Funcionalidad de los botones del Gamepad
Numero
del Botn
0
1
2
3
4
5
6
7
8
9
10
11
12
Funcin
Start
Pulsacin Joystick 1
Pulsacin Joystick 2
Select
Cruceta arriba
Cruceta derecha
Cruceta abajo
Cruceta izquierda
L2
R2
L1
R1
Tringulo
Adems de los botones, utilizaremos los dos joysticks frontales del gamepad para el
manejo de los ejes principales (q1, q2, q3 y q4). A continuacin mostramos una tabla con la
asignacin de los ejes.
Tabla 9. Funcionalidad de los josysticks del gamepad
Joystick
Izquierdo
Derecho
Eje
EJE 0
EJE 1
EJE 2
EJE 3
Funcin
Aumenta o disminuye el ngulo q1
Aumenta o disminuye el ngulo q2
Aumenta o disminuye el ngulo q3
Aumenta o disminuye el ngulo q4
40
4.2. SIMULACIN
Se ha diseado e implementado un simulador en 3D en OpenGL y C++. ste posibilita la
visualizacin de la posicin y orientacin del brazo robtico a travs de la pantalla de un
ordenador. As, el usuario puede operar el robot visualizndolo en el simulador sin necesidad
de estar viendo el robot real.
El simulador consta de tres partes:
En la ilustracin siguiente podemos ver las tres partes mencionadas. La representacin del
robot se encuentra en el centro y los datos se disponen en la parte derecha de la pantalla.
41
Para el entorno grfico en tres dimensiones, se han utilizado las libreras de OpenGL
(Open Graphics Library). Se trata una especificacin estndar que define una interfaz
programacin de aplicaciones (API) multilenguaje y multiplataforma para escribir aplicaciones
que produzcan grficos 2D y 3D. La interfaz consiste en ms de 250 funciones diferentes que
pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas
geomtricas simples, tales como puntos, lneas y tringulos.
42
glRotatefv (a,x,y,z): Realiza una rotacin determinada por el valor de a alrededor del
vector x, y, z.
glTranslatefv (x,y,z): realiza una traslacin determinada por los valores x, y, z.
43
CLASES
Nombre de la clase
ObjectGL
Cuboid
SolidCylinder
Base
FirstLink
SecondLink
ThirdLink
FourthLink
Gripper
Descripcin
Clase abstracta correspondiente a todos los objetos
dibujables en OpenGL. Es la clase padre de otros objetos
ms especficos.
Clase que, dados los parmetros correspondientes,
dibuja un tetraedro.
Clase que, dados los parmetros correspondientes,
dibuja un Cilindro.
Clase que, a parir de los parmetros correspondientes,
dibuja la base cilndrica del brazo robtico. Utiliza
objetos de las clases Cuboid y SolidCylinder.
Clase que, a parir de los parmetros correspondientes,
dibuja el primer eslabn del brazo robtico. Utiliza
objetos de las clases Cuboid y SolidCylinder.
Clase que, a parir de los parmetros correspondientes,
dibuja el segundo eslabn del brazo robtico. Utiliza
objetos de las clases Cuboid y SolidCylinder.
Clase que, a parir de los parmetros correspondientes,
dibuja el tercer eslabn del brazo robtico. Utiliza
objetos de las clases Cuboid y SolidCylinder.
Clase que, a parir de los parmetros correspondientes,
dibuja el tercer eslabn del brazo robtico. Utiliza
objetos de las clases Cuboid y SolidCylinder.
Clase que, a parir de los parmetros correspondientes,
dibuja la pinza situada en el extremo del brazo robtico.
Utiliza objetos de las clases Cuboid y SolidCylinder.
44
Ilustracin 38. Diagrama UML de las relaciones entre las clases encargadas del dibujado.
Adems de representar las relaciones que guardan las clases encargadas del dibujado,
hemos realizado el diagrama UML detallado de las ms relevantes. As podemos observar en
los diagramas siguientes los atributos y funciones que poseen las clases ObjectGL, Cuboid ,
SolidCylinder y FirstLink.
En primer lugar, mostramos el diagrama correspondiente a la clase ObjectGL. Cabe
destacar que sta es la clase padre de los objetos dibujables. As posee los atributos que luego
heredarn el resto de clases hijas como la posicin (x, y, z), el nombre (name), y las
dimensiones (x_size, y_size, z_size).
Un ejemplo de una clase hija de ObjectGL es Cuboid. Esta clase posee un constructor
en el que hay que indicar la posicin (x, y, z), las dimensiones del ortoedro (width, height,
depth) y la posible traslacin del CIR si es necesaria.
Universidad Carlos III de Madrid
45
FirstLink se dedica al dibujado del primer eslabn del robot. Podemos observar, en el
diagrama siguiente, los atributos que posee destinados a establecer las dimensiones: ancho
(width), alto (height) , profundidad (depth), radio y el hueco entre piezas (gap).
46
Nombre de la clase
Angle
Position
Matrix
MatrixDH
Descripcin
Clase que muestra por pantalla el nombre y el valor del
eje del robot.
Clase que calcula y muestra por pantalla la posicin
(x,y,z) del extremo del robot.
Clase que genera matrices de las dimensiones
previamente indicadas. Posee funciones para introducir
y mostrar los valores de la matriz. Cuenta con
sobrecarga de operadores que realizan las operaciones
suma y multiplicacin. Tambin se ha implementado
una funcin que realiza la inversa de matrices de
transformacin homogneas.
Clase que hereda de la clase Matrix. Genera una matriz,
segn el algoritmo de Denavit-Hartenberg, que
transforma de un sistema a otro.
Hay que mencionar que las clases Angle y Position son hijas de la clase OpenGL ya que
sus valores son representados de forma grfica en la pantalla. Mostramos a continuacin los
diagramas UML de las clases mencionadas:
47
Ilustracin 45. Diagrama UML de la relacin entre las clases Matrix y MatrixDH.
48
Nombre de la clase
GamePad2Arduino
Joystick
ArduSerialStream
Descripcin
Clase formada por objetos de las clases Joystick
ArduSerialStream. Comunica el gamepad con
simulador y con el microcontrolador.
Clase que posee las funciones de comunicacin con
Gamepad.
Clase que posee las funciones de comunicacin con
microcontrolador Arduino.
y
el
el
el
49
Por un lado, la clase GamePad2Arduino est compuesta por objetos de las clases Joystick y
ArduSerialStream. As, la funcin GamePad2Arduino realiza diferentes funciones que
comunican el Gamepad con el microcontrolador. Entre esas funciones estn:
Por otro lado, la clase Joystick establece funciones para la obtencin de los valores de los ejes
(getAxis(i)) y de los botones (getButton(i)) del gamepad. En definitiva, es la encargada de
comunicarse con el gamepad.
La clase ArduSerialStream permite una comunicacin sencilla con el microcontrolador
a travs del puerto serie. Establece sobrecarga de operadores para realizar una escritura fcil
en el puerto serie.
Finalmente cabe sealar cmo se realiza el proceso de calibracin de los joysticks. La
calibracin establece los valores de parada, los mximos y los mnimos de los ejes de los
joystick. Dicho proceso de calibracin consta de dos partes:
50
Valores iniciales: en esta primera parte el usuario no debe mover los controles,
as se establece los valores iniciales.
Valores mximos y mnimos: en esta segunda parte el usuario debe mover los
joysticks en los dos ejes para que el programa obtenga los valores mximos y
mnimos.
PROCESOS
51
Una vez ejecutados los pasos anteriores entramos en el bucle principal del programa.
Este se realiza gracias a la funcin glutMainLoop que incorpora la librera GLUT. Se saldr del
bucle cuando el usuario cierre la ventana principal del simulador o detenga el proceso de
ejecucin.
Durante el bucle principal se realiza la comprobacin del teclado, la lectura de los
botones del Gamepad, el clculo de la posicin y el dibujado de la representacin grfica en 3D
del brazo robtico. Adems muestra los parmetros del robot por pantalla. Se puede observar
el proceso seguido por el bucle en el diagrama de flujo siguiente.
52
El proceso que sigue esta funcin est reflejado a travs de su diagrama de flujo que se
expone a continuacin. Cabe destacar que en l aparecen los tres modos de funcionamiento
del simulador, es decir, la teleoperacin, la grabacin y el posicionamiento.
Universidad Carlos III de Madrid
53
54
55
56
Ilustracin 58. Representacin del robot completo con la pinza abierta en su extremo.
57
58
59
5. PUESTA EN FUNCIONAMIENTO
En este apartado describiremos los pasos necesarios para la puesta en funcionamiento
del robot y su programa de control y simulacin. Diferenciaremos entre dos partes, el
hardware y el software.
HARDWARE
En cuanto al hardware nos encontramos con las piezas de plstico impresas, los
servomotores, el microcontrolador y el cableado. Los pasos a seguir con estos materiales son:
1) Adecuacin de las piezas impresas: en muchas ocasiones el acabado de las piezas no es
siempre el ptimo, por ese motivo es necesario revisar y en su caso adecuar las piezas
impresas. Se tendrn que lijar las superficies irregulares y perforar los agujeros que no
hayan sido definidos correctamente en la impresin.
2) Realizacin de pruebas previas: es necesario comprobar previamente el correcto
funcionamiento de los servomotores.
3) Montaje de las piezas del robot y los servomotores: se montarn las piezas del robot
unindolas mediante tornillos y, si es necesario con pegamento. Los servomotores
debern estar bien fijados a la estructura del robot.
4) Conexionado de los cables de control: los cables de control comunicarn al
microcontrolador con los diferentes servos. En la siguiente ilustracin se muestra un
esquema de conexionado a este respecto.
60
61
62
SOFTWARE
En este apartado describiremos los pasos para poder ejecutar correctamente el
programa de simulacin. Cabe sealar que el software en su totalidad ha sido implementado
en el sistema operativo Ubuntu 12. No obstante, las libreras utilizadas son multiplataforma de
manera que la compatibilidad con otros sistemas operativos est garantizada.
1. Instalacin de las libreras necesarias: el programa utiliza libreras que pueden no estar
instaladas en el ordenador donde se desee ejecutar el programa. As ser necesario
proceder a la instalacin de stas previa ejecucin del programa. Las libreras necesarias
son GL, GLUT, GLUI (para ms informacin ver anexo 8.3. Instalacin de libreras).
2. Comprobaciones previas: ser necesaria la comprobacin de las conexiones y la
asignacin de los puertos de los perifricos. Si no se realizan todas las conexiones el
programa no funcionar correctamente o incluso detendr su ejecucin. La asignacin de
los puertos del ordenador a los perifricos utilizados figura en la siguiente tabla.
Tabla 13. Asignacin de puertos a los perifricos
Perifrico
Gamepad
Microcontrolador
Puerto
/dev/input/js0
/dev/ttyUSB0
63
6. CONCLUSIONES
Se ha alcanzado el objetivo principal de este proyecto que era el desarrollo del modelo
cinemtico, el control y la simulacin de un brazo robtico imprimible. A continuacin iremos
detallando los diferentes puntos que ha abarcado el proyecto:
Comunicacin
El usuario puede mandar rdenes de actuacin al robot a travs del teclado o del
gamepad. El programa interpreta las indicaciones, muestra la nueva posicin del robot en el
simulador y se comunica con el microcontrolador. ste interpreta el mensaje y manda las
seales a los servomotores para que adopten la posicin correspondiente.
Esto se ha conseguido gracias a un protocolo predeterminado de mensajes, una
programacin de envo a travs del puerto serie y un firmware en el microcontrolador que
interpreta el mensaje
Teleoperacin remota
La operacin remota del brazo robtico es posible gracias al simulador y al gamepad. El
usuario recibe la informacin grfica del posicionamiento y la orientacin del robot a travs
del monitor del ordenador. As, puede teleoperar el robot gracias a la representacin grfica
del simulador.
Grabacin de movimientos
La grabacin de movimientos es posible gracias al programa de simulacin. As, el
usuario puede realizar la grabacin de movimientos simulados y reproducirlos en el robot real.
Para conseguir esto el programa genera un archivo donde guarda todos los movimientos.
Posicionamiento
Gracias al modelo cinemtico el usuario podr introducir un punto del espacio y el
robot adoptar dicha posicin. Esto se ha conseguido gracias a la solucin del problema de la
cinemtica inversa del robot.
64
PROYECTOS FUTUROS
65
7. BIBLIOGRAFA
1. Antonio Barrientos, Luis Felipe Pen, Carlos Balaguer y Rafael Arecil: Fundamentos
de Robtica Industrial Ed. McGraw-Hill 1997.
1. OpenGL: The Industrys Fundation for High Performance Graphics. Pgina web con
informacin relativa a OpenGL. Direccin: http://www.opengl.org (ltima consulta: 30
de agosto 2012).
2. Cplusplus: pgina web con informacin general a cerca de la programacin en
lenguaje C++. Direccin web: http://www.cplusplus.com (ltima consulta: 30 de
agosto 2012.)
3. C con clase: pgina web con informacin general a cerca de la programacin en C y
C++. Direccin web: http://c.conclase.net (ltima consulta: 30 de agosto 2012).
4. Iearobotics: Ingeniera, Electrnica, Aplicaciones frikis y Robtica. En sta pgina se
encuentra informacin relativa a las impresoras 3D y diversos proyectos de robtica.
Direccin web: http://www.iearobotics.com (ltima consulta: 30 de agosto 2012.)
5. Curso de introduccin a OpenGL (v1.0), Jorge Garca (Bardok) 2003. Disponible en el
enlace web:
http://iearobotics.com/alberto/lib/exe/fetch.php?media=teaching:manual-opengl.pdf
(ltima consulta: 30 de agosto 2012).
6. Thingiverse: portal de la empresa MakerBot de donde se pueden obtener diseos de
piezas imprimibles compartidos por usuarios de forma gratuita. Direccin web:
http://www.thingiverse.com (ltima consulta: 30 de agosto 2012).
7. Librera "servo.h" de Arduino. Esta librera incorpora funciones para el manejo de
servomotores
desde
el
microcontrolador
Arduino.
Direccin
web:
http://arduino.cc/es/Reference/Servo (ltima consulta: 30 de agosto 2012).
66
8. ANEXOS
8.1. PLANOS
67
68
69
70
8.2. PRESUPUESTO
Cdigo
01.
01.02
01.03
01.03
Unidad
medida
und
und
und
Descripcin
Captulo 1 - Software
OpenSCAD
Software OpenSCAD para la creacin de objetos
slidos en 3D. Es gratuito y multiplataforma.
ReplicatorG
Software ReplicatorG de manejo de las impresoras 3D.
Es gratuito y multiplataforma.
QTCreator
Entorno de desarrollo de software de la empresa
Nokia. Es gratuito y multiplataforma
Precio
Cantidad Unitario
Precio
Total
0,00
0,00
0,00
0,00
0,00
0,00
01.04
0,00
TOTAL CAPITULO 1
02.
02.01
02.02
ud
02.04
02.04
3,00
40,00
40,00
10,00
30,00
4,00
16,00
21,90
21,90
0,22
1,12
02.04
0,01
02.03
300
ud
ud
112,02
TOTAL CAPITULO 2
TOTAL
112,02
71
2. Para versiones modernas de Ubuntu (>= 11.10) es necesario instalar un paquete extra
debido a que el linker no enlaza correctamente:
$sudo apt-get install binutils-gold
3. Por ltimo para utilizar las libreras de GLUI necesitamos instalar su correspondiente
librera:
$sudo apt-get intall libglui-dev
72