Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1
Desarrollo de un prototipo de inspección y transporte con base en la
teoría de robótica de enjambres
Andrés Felipe Villamil Romero
Autor
Jonathan Camargo Leyva
Asesor
Proyecto de Grado
Para obtener el título de Ingeniero Mecánico
Universidad de Los Andes
Facultad de Ingeniería
Departamento de Ingeniería Mecánica
Bogotá, Colombia
Enero de 2018
2
Tabla de contenido 1. Lista de Imágenes ........................................................................................................................ 3
2. Lista de tablas .............................................................................................................................. 5
3. Resumen ...................................................................................................................................... 6
4. Introducción ................................................................................................................................ 7
4.1. Antecedentes ...................................................................................................................... 9
5. Objetivos ................................................................................................................................... 12
5.1. Principal: ............................................................................................................................ 12
5.2. Objetivos secundarios: ...................................................................................................... 12
6. Proceso de diseño ..................................................................................................................... 13
6.1. Subsistemas y Behaviors ................................................................................................... 14
6.2. Solución por para cada behavior ....................................................................................... 16
6.3. Solución por subsistema ................................................................................................... 32
7. Resultados ................................................................................................................................. 46
7.1. Sistema de suspensión ...................................................................................................... 46
7.2. Resultados de llevar peso .................................................................................................. 46
7.3. Resultados de sistema de locomoción .............................................................................. 48
7.4. Resultados de obstacle avoidance .................................................................................... 48
7.5. Resultados auto-ensamble ................................................................................................ 49
7.6. Resultados de la electrónica ............................................................................................. 49
7.7. Lista de partes y justificación ............................................................................................ 51
7.8. Características generales del robot ................................................................................... 58
8. Conclusiones.............................................................................................................................. 59
9. Referencias ................................................................................................................................ 61
10. Anexos ....................................................................................................................................... 63
10.1. Esquemáticos ................................................................................................................ 63
10.2. Códigos .......................................................................................................................... 66
10.3. Planos ............................................................................................................................ 72
3
1. Lista de Imágenes
Ilustración 1. Sistema completo desarrollado por García (2013). Vista frontal y lateral [4]. ............ 9
Ilustración 2. Estructura completa de estados y comportamientos implementado por Torabi. ...... 10
Ilustración 3. Robot presentado y descrito por Kube y Bonabeau. Tomado de [7]. ......................... 11
Ilustración 4. Proceso de diseño. ...................................................................................................... 13
Ilustración 5. Subsistemas del diseño. .............................................................................................. 14
Ilustración 6. Diagrama de estados para el control de los behaviors en el sistema. ........................ 15
Ilustración 7. Potencia especifica versus velocidad esperada para diferentes mecanismos de
locomoción. ....................................................................................................................................... 18
Ilustración 8. Aproximación de grid 2D del área de trabajo. Tomado de [13] .................................. 23
Ilustración 9. The bug Algorithm. ...................................................................................................... 24
Ilustración 10. Bug2 algorithm. ......................................................................................................... 24
Ilustración 11. Proceso de rebote de la burbuja para el bubble algorithm. Tomado de [B]. ........... 27
Ilustración 12. Algoritmo propuesto para este proyecto. ................................................................. 28
Ilustración 13. Resumen de los cuatro tipos principales de auto-ensamble de robots presentada
por Mondada et al. ............................................................................................................................ 30
Ilustración 14. a) Sistema de tracción del robot. b) Disposición de las ruedas en el robot. ............. 33
Ilustración 15. Tamaño de un posible modulo si el motor se ubicaba horizontalmente conectado
directamente a la llanta. ................................................................................................................... 33
Ilustración 16. Disposición de la polaridad de los imanes. ............................................................... 34
Ilustración 17. Cambio de sección en la cara de los robots. ............................................................. 35
Ilustración 18. a) transporte colectivo en formacion colmena por empuje. b) transporte colectivo
por enjaulamiento. ............................................................................................................................ 35
Ilustración 19. Configuraciones de uniones de varias figuras geométricas. ..................................... 36
Ilustración 20. Sensores infrarrojos ubicados en las caras del robot. ............................................... 37
Ilustración 21. Encoder óptico incremental utilizado. ...................................................................... 38
Ilustración 22. Encoder rotatorio de cuadratura. Utilizado normalmente en el sistema de scroll de
un mouse. .......................................................................................................................................... 38
Ilustración 23. Circuito para la lectura de los pines del encoder de cuadratura de un mouse. ....... 39
Ilustración 24. Encoder óptico de cuadratura. La relación de fases entre los trenes de pulso del
canal A y el B son usados para determinar la dirección de rotación. Tomado de [4]. ...................... 39
Ilustración 25. esquemáticos utilizados para la conexión del sensor QRD 1114 (a) y del encoder de
cuadratura (b). .................................................................................................................................. 41
Ilustración 26. Configuración utilizada para el encoder de herradura TCST1103. Tomado de [J]. ... 41
Ilustración 27. Conexión de las baterías BL-5C dentro del robot. ..................................................... 42
Ilustración 28. Esquemático de las conexiones del L298n. ............................................................... 42
Ilustración 29. Esquemático de las conexiones del Arduino nano. ................................................... 43
Ilustración 30. A la izquierda se presenta la PCB que ira en la parte superior de modulo. A la
derecha, se presenta la PCB para la parte inferior. .......................................................................... 44
Ilustración 31. Diagrama de cuerpo libre del robot empujando un objeto. ..................................... 44
Ilustración 32. Robot superando un desnivel de 4mm. .................................................................... 46
Ilustración 33. Experimento de un robot empujando un objeto de madera sobre madera. ........... 47
4
Ilustración 34. Experimento de un robot empujando un objeto de madera sobre aluminio. .......... 47
Ilustración 35. Mecanismo de locomoción en funcionamiento. ....................................................... 48
Ilustración 36. Secuencia de evasión de obstáculos del robot. ........................................................ 49
Ilustración 37. Secuencia de auto-ensamble de dos módulos del robot. ......................................... 49
Ilustración 38. PCB superior fabricada y soldada. ............................................................................. 50
Ilustración 39. PCB inferior fabricada y soldada. .............................................................................. 50
Ilustración 40. CAD de la carcasa. ..................................................................................................... 51
Ilustración 41. Vista interna del CAD de la carcasa. .......................................................................... 51
Ilustración 42. Carcasa construida .................................................................................................... 51
Ilustración 43. Tapa. .......................................................................................................................... 52
Ilustración 44. Tapa vista superior. ................................................................................................... 52
Ilustración 45. PCB superior. ............................................................................................................. 52
Ilustración 46. PCB inferior. ............................................................................................................... 52
Ilustración 47. PCB para el infrarrojo de herradura .......................................................................... 52
Ilustración 48. Llanta esférica implementada. .................................................................................. 52
Ilustración 49. Llanta esférica. .......................................................................................................... 53
Ilustración 50. Baterias BL-5C. ........................................................................................................... 53
Ilustración 51. Modulos robot con imanes. ...................................................................................... 53
Ilustración 52. Imán. .......................................................................................................................... 53
Ilustración 53. Transmisión por engranajes biselados. ..................................................................... 54
Ilustración 54. Conector del servo. Viene incluido con el motor. ..................................................... 54
Ilustración 55. Servomotor. ............................................................................................................... 54
Ilustración 56. Motorreductor. ......................................................................................................... 54
Ilustración 57. Lector de la batería. ................................................................................................... 54
Ilustración 58. Pieza ensambladora. Vista 1. ..................................................................................... 55
Ilustración 59. Pieza ensambladora. Vista 2. ..................................................................................... 55
Ilustración 60. Llanta. ........................................................................................................................ 55
Ilustración 61. Eje de la llanta. .......................................................................................................... 56
Ilustración 62. Encoder de cuadratura. ............................................................................................. 56
Ilustración 63. Sensores QRD1114 implementqdos. ......................................................................... 56
Ilustración 64. Sensor infrarrojo de herradura. ................................................................................ 56
Ilustración 65. Disco giratorio de madera para el encoder óptico. ................................................... 56
Ilustración 66. Pieza de madera de soporte para el servo. ............................................................... 57
Ilustración 67. Pieza de madera que da soporte al infrarrojo de herradura. ................................... 57
Ilustración 68. Hembra del conversor del eje de la llanta.. .............................................................. 57
Ilustración 69. Macho del cnversor del eje de la lanta. .................................................................... 57
Ilustración 70. Arduino nano. ............................................................................................................ 58
Ilustración 71. Esquemático de la PCB superior. ............................................................................... 63
Ilustración 72. Esquemático de la PCB inferior. ................................................................................ 64
Ilustración 73. PCB superior. ............................................................................................................. 65
Ilustración 74. PCB inferior. ............................................................................................................... 65
5
2. Lista de tablas
Tabla 1. Mecanismos de locomoción utilizados en sistemas biológicos. Tomado de [12]. .............. 17
Tabla 2. Configuraciones de llantas para vehículos rodantes. Tomada de [12]. .............................. 19
Tabla 3. Características físicas de los módulos para auto-ensamblado de sistemas auto-
propulsados. Tomado de [F]. ............................................................................................................ 31
Tabla 4. Clasificación de sensores usados en aplicaciones de robot móviles. Tomado de [12].. ..... 40
Tabla 5. Resumen del consumo de potencia en el robot. ................................................................. 41
Tabla 6. Lista de piezas con su descripción y precio para un solo modulo. ...................................... 58
Tabla 7. Características generales del Robot. ................................................................................... 58
6
3. Resumen
En este documento se pretende presentar una solución a nivel de Hardware al
problema de transporte colectivo de objetos. Muchos trabajos se han centrado en
analizar este problema desde un punto de vista algorítmico. Se han propuesto como
resultado diferentes maneras de realizar esta tarea, pero siempre contando con un
hardware sobre el cual implementar dichos algoritmos, o utilizando software de
simulación especializado. En este proyecto se describe una solución de hardware para
un enjambre de robots capaces de realizar transporte colectivo de objetos. Estos
robots, en principio, corresponden a agentes que, individualmente, no pueden resolver
tareas complicadas pero que, cooperando entre ellos, logran un mejor desempeño
mecánico.
El prototipo fue desarrollado utilizando impresión 3D como principal técnica de
manufactura. Se propuso también una forma alternativa de desplazamiento con el fin
de variar el comúnmente utilizado robot diferencial. Esto, para evaluar el
comportamiento de una cinemática más simple y por ende un costo computacional
menor. Adicionalmente, se propone un posible algoritmo de funcionamiento basado
en una máquina de estados y un conjunto de behaviors, que permiten al robot llevar
a cabo el transporte de objetos colectivo. También, se presentan algunas posibles
soluciones a problemas de comunicación y reconocimiento de áreas. Finalmente, se
realiza un resumen bibliográfico respecto a cada aspecto importante en el algoritmo
de transporte de objetos colectivo.
7
4. Introducción
La robótica de enjambres nace con la idea de reproducir el comportamiento de
diferentes sociedades de animales que se organizan sin jerarquías para cumplir una
tarea difícil. Es decir, un grupo sin líder ni sistema de organización jerárquico logra
alcanzar un objetivo complejo partiendo de tareas sencillas desempeñadas por cada
individuo. Ejemplos de estas sociedades son las hormigas, termitas, peces y aves.
Vito Trianni en su libro Evolutionary Swarm Robotics: Evolving self-organising
Behaviours in Groups of Autonomous Robots [1] expone la trayectoria de los estudios
sobre el comportamiento organizacional aplicado a robots con el fin de introducir los
avances en robótica de enjambres. En este texto el autor define robótica de enjambres
como “un sistema compuesto de un número de robots autónomos que necesitan
interactuar y cooperar para conseguir un objetivo común” [1]. Por otro lado, Sahin en
el artículo Swarm robotics: from sources of inspiration to domains of application [2]
precisa la robótica de enjambres como “una nueva aproximación a la coordinación de
un gran número de robots” y como “el estudio de cómo un gran número de agentes
físicamente incorporados relativamente simples puede ser diseñado de manera que un
comportamiento colectivo deseado emerja de una interacción local entre agentes y
entre agentes y el medio” [2]. En resumen, se puede decir que Sahin propone un
conjunto de criterios para la investigación en robótica de enjambres cuyos sistemas
consisten en: Un gran número de robots individualmente incapaces, homogéneos y
autónomos, con capacidad de sensado y comunicación.
Las anteriores seis características de un sistema de robots enjambre se han
aprovechado para resolver problemas prácticos de ingeniería. Entre estos problemas
se encuentran: búsqueda urbana, rescate en zonas de desastre, vigilancia de grandes
áreas, recolección de recursos naturales y transporte colectivo de elementos, entre
otras. Esto se debe a que diseñar varios robots simples podría ser mejor que diseñar
un solo robot muy complicado. Además, podría ser más barato dependiendo del
número de robots que se utilicen, y más flexible y tolerante a las fallas, pues reduciría
el riesgo de no cumplir el objetivo si hay una falla en algún robot. Más adelante se
presentarán en detalle los prototipos usados para algunas de estas aplicaciones que
son de interés en el marco de este proyecto.
Liu y wu en su libro Multi-Agent robot Systems, presenta como ventajas de la robótica
cooperativa las siguientes propiedades [3]:
- Mayor rango de dominios para aplicaciones.
- Mayor eficiencia.
- Mejor desempeño del sistema.
- Tolerancia a fallas.
- Robustez.
- Menor costo económico.
- Facilidad de desarrollo.
- Acciones y sensado distribuido.
- Paralelismo inherente.
8
- Relación con ciencias sociales.
Así, este trabajo se centrará en utilizar la teoría de robótica de enjambres para
solucionar el problema de transporte de objetos. Como idea general, lo que se quiere
hacer es usar un grupo de robots para llevar objetos de diferentes pesos de un punto
A a un punto B. Como ejemplo ilustrativo, me basaré en una colonia de hormigas.
Una hormiga es suficiente para transportar un trozo pequeño de alimento desde el
punto de encuentro hasta su hogar. Sin embargo, cuando se trata de un elemento más
largo y pesado ¿cómo pueden hacer para desplazarlo? Para ello es necesario la
cooperación entre diferentes agentes. Aunque estos individualmente no pueden llevar
a cabo la tarea, unidos aportan la totalidad de recursos necesarios para lograrlo. Ahora
bien, esta cooperación que acabo de mencionar requiere elementos complejos en
cuanto a la comunicación entre agentes, comunicación con el medio, distribución y
aprovechamiento de recursos, y planeación de la realización de la tarea. Dichos
elementos complejos se salen de la visión de este proyecto y no serán tocados a lo
largo del mismo.
El prototipo que se va a desarrollar se compondrá de tres individuos homogéneos y
simples. Estos individuos deberán ser capaces de inspeccionar la zona y localizar los
objetivos que deben transportar. Esto implica resolver tareas de go-to-goal, obstacle
avoidance y rendez-vous, por sí mismos y a través de mecanismos de comunicación.
Debido a que este trabajo está en el marco de un proyecto de grado para recibir el
título de ingeniero mecánico, solamente se centrará en aspectos mecánicos de los
robots como: geometría, tamaño, dinámica, cinemática y manufactura. Los
algoritmos de reconocimiento de espacios, la comunicación y la automatización serán
planteados para trabajos futuros. Sin embargo, me aseguraré de que los robots
diseñados tengan las herramientas mecánicas suficientes para, en un futuro, cumplir
los objetivos de la aplicación deseada.
Cabe resaltar que este trabajo surge como continuación al proyecto de grado para
ingeniería mecánica de Eduardo García García, titulado “Desarrollo de un robot
prototipo para robótica de enjambres” [4]. En él, García presenta un marco teórico
sobre conceptos relacionados con robótica de enjambres e inteligencia artificial. Así
mismo, propone el diseño de un prototipo que aplica dichos conceptos. Este es un
robot basado en pisos que utiliza sensores de luz y fotorresistencias para captar
objetos cercanos (Ilustración 1). Además, usa un sistema de movimiento por medio
de vibración que le permite al robot desplazarse en una dirección en donde encuentre
más fricción que las demás. Este sistema de movimiento se fabrica con cepillos de
dientes y motores vibradores de celular, elementos que demuestran el bajo costo del
prototipo. Finalmente, para comunicar a los robots entre sí, utiliza señales infrarrojas
en código, que siguen el protocolo Daewoo [4]. A diferencia del trabajo de García,
este proyecto buscará desarrollar un prototipo con una aplicación más compleja a
nivel mecánico. Además, tendrá herramientas electrónicas y procesos de fabricación
más avanzados. Finalmente, buscará ser más pequeño y más fácil de ensamblar y
construir.
9
Ilustración 1. Sistema completo desarrollado por García (2013). Vista frontal y lateral [4].
Este documento está organizado de la siguiente manera: en primer lugar, se mostrará
el trabajo previo realizado en cuanto a la aplicación de robótica de enjambres en
transporte colectivo. Luego se presentará la metodología de diseño que se llevó a cabo
y el desarrollo de cada una de sus partes. Junto a esto, se plantearán algoritmos que
servirán para el futuro cumplimiento de los objetivos de la aplicación, así como ideas
para el trabajo futuro. A continuación, se expondrán los resultados obtenidos al
finalizar el proceso de diseño, es decir, el prototipo y su caracterización, y los
resultados de la implementación y construcción del robot. Finalmente, se plantearán
las conclusiones obtenidas como resultado del proceso.
4.1. Antecedentes
Diferentes trabajos se han llevado a cabo alrededor del transporte de objetos por un
enjambre de robots. La mayoría de dichos trabajos ha tratado de encontrar algoritmos
de transporte de objetos, algoritmos de comunicación y de control de los robots. Una
solución comúnmente utilizada es el de auto-ensamblar varios robots. Groß y Dorigo,
a lo largo de varios trabajos han investigado mecanismos de auto-ensamble como una
posible forma de coordinación a la hora de transportar objetos. En el documento
Towards group transport by swarm robots [5] usan una red neuronal para encontrar
el mejor algoritmo de auto-ensamble en el transporte colectivo de diferentes muestras,
con diferentes distribuciones de peso, geometría y dimensiones. Así, estudian las
posibles formas de conectar robots entre sí para transportar objetos, cuantificando el
número de veces que la red neuronal escoge una configuración y el resultado que cada
una arroja.
Por otro lado, Sina Torabi [6] propone un control para robots enjambre basado en
máquinas de estado y behaviors. En él, cada robot sigue un comportamiento similar
al de las hormigas cuando se trata de transporte individual, pero al necesitar ayuda,
usa un comportamiento llamado recruiting y empieza un algoritmo de transporte
10
colectivo. El diagrama de estados es mostrado en la ilustración 2. Este control es
aplicado a robots modelados en un ambiente de simulación.
Ilustración 2. Estructura completa de estados y comportamientos implementado por Torabi.
Así mismo, Kube y Bonabeau explican cómo las hormigas cooperan en el transporte
colectivo de presas y proponen una solución robótica basada en el comportamiento
de las hormigas [7]. Adicionalmente, introducen el concepto de dos behavior claves
en el transporte de objetos: go-to-goal y obstacle avoidance. Todo esto, es
implementado en módulos robots (ilustración 3), que fueron diseñados para empujar
cajas. Los módulos robot son brevemente descritos en la referencia [7].
11
Ilustración 3. Robot presentado y descrito por Kube y Bonabeau. Tomado de [7].
En la literatura también se encuentran propuestas diferentes para el transporte
colectivo de objetos. Fink et al. proponen un sistema de control basado en behaviors
que permite al robot rodear un elemento y transportarlo mediante enjaulamiento a
través de una pista que posee obstáculos. En su documento explican que es posible
transportar el objeto por este método si se tiene el número suficiente de módulos.
Finalmente, propone un algoritmo para evitar problemas de repartición de recursos
entre los individuos como los es el espacio alrededor del objeto [8].
12
5. Objetivos
5.1. Principal:
El objetivo es tener, al finalizar el proyecto, el diseño, la documentación e
implementación de un prototipo de robot enjambre compuesto por seis individuos que
sean capaces de reconocer objetos sobre una superficie delimitada y transportarlos de
un punto A a un punto B.
5.2. Objetivos secundarios:
Los robots deben ser lo más pequeños posibles.
Todos los robots deben poder comunicar la información obtenida entre sí.
Los robots deben poder ensamblarse para recoger objetos más pesados.
El prototipo debe ser de bajo costo y fácil de manufacturar.
13
6. Proceso de diseño Para realizar el robot me basé en el proceso de diseño presentado por Edward Krick
en su libro Introducción a la ingeniería y al diseño en ingeniería [9]. Adicionalmente,
utilicé conceptos del diseño basado en comportamientos descrito en el libro Mobile
Robots: inspiration to implementation de Jones y Flynn [10]. De esta manera,
propongo el proceso presentado en la ilustración 4.
Ilustración 4. Proceso de diseño.
El primer paso es definir el problema sobre el que se va a trabajar, el cual se encuentra
descrito en la introducción de este documento. Luego se definen las restricciones y
requerimientos del diseño, donde se decide dividir el robot en dos subsistemas:
Mecánico y Electrónico (Ilustración 5).
14
Ilustración 5. Subsistemas del diseño.
El siguiente paso consiste en proponer diferentes soluciones a cada subsistema, de las
cuales se seleccionará la mejor, con base en criterios de complejidad, costos,
funcionalidad y disponibilidad. Una vez seleccionada, se diseña el CAD de esta
solución y se comprueba que es funcional y realizable. Este es un proceso iterativo,
pues durante la verificación de los diseños es posible encontrar modificaciones de la
solución. Incluso, la aprobación del diseño está sujeta a la disponibilidad de piezas en
el mercado. Por ende, el diseño en CAD va ligado a la búsqueda de materiales y piezas
disponibles. Una vez aprobado, se procede a implementar cada uno de los módulos.
Aquí, también se debe llevar un proceso de iteración, pues durante la construcción se
van a encontrar acciones que no se pueden desarrollar, o mecanismos muy difíciles
de ensamblar o manufacturar, de manera que es necesario modificar también el CAD
en este paso. Cuando ya esté superada la implementación de un robot, se procede a
probarlo para verificar que este logra llevar a cabo los objetivos. Finalmente se
manufactura en masa para obtener el prototipo y así, probar dinámicas de enjambre
preestablecidas.
6.1. Subsistemas y Behaviors
En esta sección se revisará el diseño del robot dividido en subsistemas. Esto se hizo
para facilitar la tarea del diseñador y a la vez encaminar la solución a un diseño más
modular. Lo anterior permitirá testear y ensamblar el prototipo más fácilmente. Se
escogieron entonces dos subsistemas: Mecánico y Electrónico. Estos mismos se
dividen en behaviors.
Un behavior se define como una acción simple, bien definida, fácil de manejar,
programar y depurar, que se centra en la ejecución de una sub-tarea de una tarea más
grande [11]. Por ejemplo, en este caso la mecánica del robot le permite navegar dentro
de un área y transportar objetos de un punto a otro. Sin embargo, para lograr esta gran
tarea es necesario ejecutar acciones más pequeñas: desplazarse, transportar objetos,
auto-ensamblarse y evadir obstáculos. Lo mismo sucede con la parte electrónica. Para
conseguir el transporte colectivo de objetos, el robot deberá relacionarse con el medio
15
y con los demás individuos. Para ello, también deberá llevar a cabo tareas específicas
como sensar, comunicarse con otros individuos o planear una trayectoria.
En consecuencia, es posible que en algún momento de su funcionamiento el robot
deba decidir entre dos o más behaviors a ejecutar. Por ejemplo, si el robot llegase a
chocar con una pared y a la vez recibir información de algún individuo que necesita
su ayuda, él deberá decidir si evadir el obstáculo o dar una mano al otro robot. Es por
esto que se deben jerarquizar los behaviors según niveles, como proponen Jones y
Flynn [10]. Para esto organizaré jerárquicamente los behaviors en una máquina de
estados que describirá el comportamiento general del robot y su respuesta a estímulos
del medio.
Ilustración 6. Diagrama de estados para el control de los behaviors en el sistema.
Antes de comenzar a explicar el diagrama cabe resaltar que el robot está sensando
continuamente y que las señales de cambio entre estados corresponden al resultado
del sensado. Con esta imagen se obtiene una idea general de lo que va a realizar el
robot y las acciones que deberá llevar a cabo para lograr su objetivo, además da un
orden jerárquico a los behaviors.
En primer lugar, el robot es encendido con la señal de ON con la cual comenzará a
moverse (estado M, Move). En este momento hay tres opciones que pueden hacer
que el robot cambie su behavior, la primera es que encuentre un objetivo (señal
target), la segunda que encuentre un obstáculo (wall) y la tercera, que soliciten su
ayuda en algún lugar (help). Supongamos que el robot está moviéndose y se encuentra
con un objetivo, lo que activará la señal de target. En este caso el robot cambiará al
estado T (Test) e intentará transportar el objeto. Ahora, si el objeto es muy pesado se
activará la señal heavy y el robot pasará al estado COM (Comunication) donde
comunicará a los demás robots que necesita ayuda. Así, esperará a que llegue algún
16
individuo a ayudarlo, es decir alguien que se auto-ensamble con él para darle más
fuerza. Esto se representa con el estado SA (Self-Assembilng), al que pasa una vez
sienta cerca un individuo y se active la señal Near. Cuando ya está ensamblado
(Assembled) con otro individuo intentarán juntos mover otra vez el objeto (T). Si aún
está muy pesado, se repetirá el procedimiento anterior. Esto se repetirá hasta que un
conjunto de robots pueda mover un objeto, es decir, cuando se active la señal
Admitted. En este caso se pasará al behavior MO (Move Object) que corresponde a
la acción de llevar el objeto, individualmente o en conjunto, hasta un punto deseado,
representado en este caso con la señal Goal. Allí se detendrá el recorrido con la acción
S (Stop) que hace que un individuo se detenga. Sin embargo, si durante la ejecución
el robot se encuentra con un obstáculo que active cualquiera de las señales target, wall
o heavy, cambiará su trayectoria para poder evadir estas perturbaciones. Lo anterior
significa que en primer lugar está su tarea de llevar el objetivo que ya ha empezado a
transportar hasta el punto específico, en segundo lugar, o en un nivel más bajo, la
señal de ayuda, de un muro o de otro objetivo en el camino.
Ahora bien, si cambiamos nuestra suposición a un caso en el cual el robot se encuentre
un obstáculo (señal wall), el estado al que se moverá la máquina de estados es OA
(Obstacle Avoidance). Este representa la acción de rodear un muro o un obstáculo
que no sea un objetivo y se encuentre en el camino. Sin embargo, si rodeando el
obstáculo se encuentra con un objetivo (target) el behavior que tomará lugar será T,
y se repetirá la secuencia de pasos descrita en el párrafo anterior. Por el contrario, si
se activa la señal de ayuda (help) el robot dejará de esquivar el muro y planteará una
trayectoria hasta el punto donde solicitan ayuda. Esto se representa con el estado GTG
(Go-to-Goal) que finaliza una vez sienta cerca el individuo que solicitó su ayuda
(near). En este momento el robot tomará el estado SA (Self-Assembling) y seguirá el
procedimiento del párrafo anterior. Ahora bien, si se encuentra un obstáculo en su
intento por darle una mano a algún individuo, deberá esquivarlo y volver a su
cometido. Esto se representa por la transición de GTG a OA por medio de la señal
target y su retorno al activarse de nuevo la señal help.
6.2. Solución por para cada behavior
En esta sección se describirá detalladamente cada behavior teniendo en cuenta el
diagrama de estados planteado en el numeral anterior. Así, se tendrán todas las
funciones obligatorias para cada acción y se podrá obtener una solución por
subsistema más completa, que cubra todos los requerimientos encontrados.
- Move (M): el objetivo final de este comportamiento es que el robot sea capaz de
inspeccionar un área finita pero indefinida, como una casa o un cultivo. Sin
embargo, esto requiere de una programación más avanzada y de algoritmos
complejos que se alejan del alcance de este proyecto. Por lo tanto, el robot que
diseñaré solo podrá moverse en línea recta y cambiará aleatoriamente su dirección
para intentar recorrer la mayor parte de la pista de pruebas.
17
Ahora bien, se presentan entonces dos problemas fundamentales para lograr la
tarea Move: el primero y más básico es el de desplazarse, ¿Cuál es la forma más
eficiente de hacer que el robot se desplace? ¿Cuál se adapta más a la aplicación
en cuestión? En segundo lugar, está el problema de inspeccionar toda el área
disponible para encontrar los objetos a transportar. Este puede ser abordado desde
diferentes enfoques como map building, área exploration o área coverage.
En primer lugar, nos centraremos en la tarea de hacer desplazar el robot. Muchos
mecanismos utilizados por robots móviles han sido inspirados por la naturaleza.
En la tabla 1 se muestran los mecanismos biológicos de los cuales se han sacado
ideas para el sistema de locomoción de robots móviles. De estas ideas se derivan
soluciones como robots con llantas, patas, orugas, robots que reptan o que se
desplazan en el aire o en el agua.
Tabla 1. Mecanismos de locomoción utilizados en sistemas biológicos. Tomado de [12].
Según Siegwart et al. en su libro Introduction to autonomous mobile robots [12],
el gasto de energía específica en función de la velocidad alcanzada por un robot
es uno o dos órdenes de magnitud más eficiente que el desplazamiento por patas
o reptando (ilustración 7). Por ende, y dada la naturaleza del terreno donde el
robot se va a desplazar, la aplicación a la que se va a exponer y la estabilidad
necesaria, se partirá de un robot con llantas. Siegwart et al. explican que este tipo
de locomoción es fácil de implementar y tienen un balance estable, sin embargo,
atraen más la atención a problemas de tracción, maniobrabilidad y control [12].
18
Ilustración 7. Potencia especifica versus velocidad esperada para diferentes mecanismos de locomoción.
Existen varios tipos de configuraciones de llantas para un robot móvil. Estas son
presentadas por Siegwart et al. en la tabla 2. Para mi aplicación no utilizaré
ninguna de las propuestas en esta tabla. Dado que quiero probar otro tipo de
locomoción diferente y que el robot debe ser lo más pequeño posible, utilizaré
una mezcla de varias configuraciones presentes en la tabla.
19
Tabla 2. Configuraciones de llantas para vehículos rodantes. Tomada de [12].
20
Tabla 2. Configuraciones de llantas para vehículos rodantes. Tomada de [12].
21
Tabla 2. Configuraciones de llantas para vehículos rodantes. Tomada de [12].
La propuesta es, entonces, utilizar una llanta de dirección y tracción en el centro
del robot, rodeada por tres llantas esféricas que proporcionen balance a la
estructura completa. Esta selección afecta tres características fundamentales del
robot: Estabilidad, maniobrabilidad y control. La primera puede ser definida
como la capacidad que tiene un robot para mantenerse de pie y no caerse al suelo.
Para ello, se ha demostrado que se requiere un mínimo de dos llantas, pues existen
robots diferenciales que logran este objetivo. Sin embargo, estos robots requieren
de grandes llantas o de mucho torque para no dar con el suelo.
Convencionalmente se usan al menos tres llantas. En segundo lugar, está la
maniobrabilidad, la cual se refiere a la capacidad de un robot de desplazarse en
cualquier dirección en un plano x-y. Un ejemplo de buena maniobrabilidad son
los robots omnidireccionales, aquellos con cuatro llantas giratorias con tracción y
direccionamiento, y los robots diferenciales. Finalmente, se encuentra el control.
Se dice que esta característica tiene una relación inversa con la maniobrabilidad.
Por ejemplo, los robots omnidireccionales requieren un procesamiento
significativo para transformar velocidades y direcciones del robot en indicaciones
individuales para cada llanta. En general, esta configuración requiere mucho
control para poder llevar a cabo un verdadero desplazamiento omnidireccional.
22
Por ejemplo, sus llantas deben ser capaces de moverse a la misma velocidad para
poder alcanzar direcciones exactas, lo cual es una tarea difícil teniendo en cuenta
las variaciones de manufactura de la llanta y el medio ambiente [12].
En lo que respecta a mi solución, la más grande falencia se da en la estabilidad.
Dado que es una configuración hiperestática de más de tres llantas, el robot
requiere de alguna forma de suspensión flexible para terrenos disparejos [12]. Por
lo que será necesario diseñar una suspensión que le permita sobrepasar desniveles.
En cuanto a maniobrabilidad, el robot puede desplazarse en cualquier dirección,
pues cuenta con un servomotor que modifica directamente el ángulo entre el
marco de referencia del robot y el marco de referencia global. El rango en el cual
el servo pude variar este ángulo es de 0° a 180°. Esto, combinado con un
movimiento de la llanta de tracción hacia atrás y hacia adelante, le permitirá al
robot alcanzar cualquier dirección. Finalmente, en términos de control, la
cinemática de este robot es muy sencilla, pues el actuador modifica y mide
directamente la dirección. Por lo tanto, no es necesario ningún procedimiento
previo para controlar esta variable.
El segundo problema consiste en inspeccionar un área disponible para encontrar
un objeto a ser llevado. Este problema puede atacarse desde dos enfoques
diferentes: El primero se llama map building o area exploration, en el cual un
agente autónomo tiene que escanear un campo desconocido usando sus sensores;
El segundo, llamado area coverage, requiere de un barrido físico de un elemento
en cada punto del área de trabajo. Dado que para nuestra aplicación el robot debe
ser capaz de encontrar el objeto señalado en cualquier lugar del terreno, nos
enfocaremos más en la segunda aproximación.
Uno de los algoritmos más efectivos para este enfoque fue desarrollado por
Gabriely y Rimon, al cual llamaron The Ant-line Spanning Tree Covering
algorithm [13]. Este es un algoritmo online, es decir, un algoritmo en el cual el
robot no tiene conocimiento previo del terreno que va a recorrer. Entonces, usa
sus sensores para calcular su posición en el espacio y reconocer los lugares por
los que ya ha pasado. Normalmente, divide este espacio en sub celdas 2D y
descarta aquellas que están parcialmente cubiertas por un obstáculo (ilustración
8). Ahora bien, igual que las hormigas, el robot dejará una marca o feromona en
los lugares donde ya ha pasado. Luego, calculará un Spanning tree o un árbol
expandible instantáneo que lo hará pasar por celdas donde no hay marca hasta que
complete todo el terreno. Una de las ventajas de este algoritmo es que no necesita
acordarse de cada una de las celdas por las que ha pasado, sino que, interactuando
con el ambiente a través de sensores, podrá saber cuál fue su movimiento
inmediatamente anterior.
23
Ilustración 8. Aproximación de grid 2D del área de trabajo. Tomado de [13]
- Obstacle Avoidance (OA): El problema de evadir obstáculos ha sido ampliamente
abordado a lo largo del tiempo. Desde el desarrollo de robots móviles y su
incursión en aplicaciones de inspección hasta la creación de individuos
autónomos, se han definido diferentes algoritmos para llevar a cabo esta tarea.
Entre dichos algoritmos se encuentran: The bug algorithms, métodos de campos
de fuerza, Vector field Histogram (VHF) y bubble algorithm. A continuación,
daré una breve descripción de cada uno de ellos y, dada la aplicación de mi robot,
haré una comparación para seleccionar el mejor.
The bug algorithm
The bug algorithm es el algoritmo más simple de todos y, sin embargo, el
más ineficiente. En este, el individuo rodea completamente el obstáculo
buscando el punto más cercano al objetivo. Una vez le da una vuelta
completa al obstáculo, va hasta dicho punto otra vez y desvía su
trayectoria de nuevo en curso hacia su objetivo. Este algoritmo utiliza dos
behavior para poder ser realizado. El primero es border following en
donde el robot debe cerciorarse de rodear el obstáculo mientras calcula en
cada punto la distancia hacia el objetivo. El segundo, es go-to-goal, pues
en cada punto traza una trayectoria desde su posición actual hasta el
objetivo. Por lo anterior, se puede notar que este algoritmo siempre
alcanza su punto de destino, así le tome un buen tiempo lograrlo [14] [15].
24
Ilustración 9. The bug Algorithm.
Bug2 Algorithm
Este algoritmo es similar al anteriormente explicado, sin embargo, es más
eficiente. En principio el robot traza una línea recta desde su posición
actual hasta su punto de destino. Luego avanza y cuando encuentre un
obstáculo lo rodea hasta interceptar la línea anteriormente trazada. En este
punto se desvía y continua su trayectoria hasta el objetivo. Si después de
superar un obstáculo se encuentra inmediatamente con otro, el
procedimiento anterior se repite (ilustración 10). La dirección en la cual
rodea el obstáculo es decisión del diseñador. Se observa que en este
algoritmo el robot toma menos tiempo para evadir el obstáculo, sin
embargo, no es un algoritmo óptimo si este se encuentra en un laberinto.
De nuevo, como el bug algorithm, Bug2 no toma en cuenta la cinemática
del robot y es sensible al ruido en los sensores. Por ende, podría ser muy
difícil para el robot bordear el objeto y él se podría confundir evadiendo
obstáculos falsos [14] [15].
Ilustración 10. Bug2 algorithm.
25
Potential Field algorithm
Este algoritmo representa el robot como una partícula dentro de un campo
de potencial generado por el objetivo y los obstáculos. El potencial
repulsivo está dado por los obstáculos y el potencial de atracción por el
objetivo. Entonces, el robot es sumergido en dichos campos de potencial
quienes lo mueven de acuerdo a las fuerzas generadas por los gradientes
del mismo.
Esto puede ser interpretado como campos de energía potencial, en donde
los obstáculos representas pendientes positivas que aumentan a medida
que el robot se acerque al obstáculo y que se vuelven negativas por acción
del objetivo. En este caso el robot es considerado como una esfera sin
fricción, que va cuesta abajo para acercarse al objetivo. Sin embargo, este
método tiene un problema y es los mínimos locales. Es posible que la
esfera caiga en un punto que no le permita acercarse al objetivo ni alejarse
de los obstáculos.
María Isabel Ribeiro [15] propone una representación matemática para
ambos tipos de potenciales, gradientes y fuerzas. El campo de potencial
artificial generado sobre el robot es la suma de ambos potenciales, el de
atracción del punto de llegada y los de repulsión de los obstáculos.
𝑈(𝑞) = 𝑈𝑎𝑡𝑡(𝑞) + ∑ 𝑈𝑟𝑒𝑝(𝑞)
𝑖
Donde i representa los obstáculos que estén cerca y que afecten el robot.
También define el potencial de atracción como cero en el punto de destino
y muy grande entre más se aleje el robot de este punto. Así mismo, el
potencial de repulsión es infinito en el centro de los obstáculos y muy
pequeño a medida que el robot se aleja de ellos. Teniendo en cuenta
entonces que los potenciales son diferenciables y que el gradiente de ellos
es la dirección en la que aumenta más rápido su magnitud, Ribeiro define
la fuerza que actúa sobre el robot como
𝐹(𝑞) = 𝐹𝑎𝑡𝑡(𝑞) + 𝐹𝑟𝑒𝑝(𝑞) = −∇𝑈𝑎𝑡𝑡(𝑞) − ∇𝑈𝑟𝑒𝑝(𝑞)
Ribeiro escoge para el potencial de atracción una función parabólica
estándar que aumenta cuadráticamente con la distancia entre el robot y el
punto de destino. En cambio, para el potencial de repulsión, se debe tener
en cuenta que el potencial es infinito en el obstáculo y disminuye con la
distancia entre el robot y el obstáculo. Además, hay un rango en el cual el
obstáculo ya no debería afectar el desplazamiento del robot, por lo que se
debe plantear una distancia de threshold en donde actúa la fuerza
producida por el campo.
26
VHF
The vector field histogram es un método descrito por primera vez por
Borenstein y Korem [15]. Consiste en crear un histograma polar de la
lectura más reciente de muchos sensores. En primer lugar, el robot crea un
mapa 2D con la lectura de los sensores sobre donde podrían estar los
obstáculos. Luego, convierte este mapa 2D en un histograma polar donde
el eje x es la dirección del robot y la magnitud del eje y es la probabilidad
de que haya un obstáculo en dicha dirección. Así, el robot identifica unas
regiones del histograma, donde hay poca probabilidad, como valles.
Entonces selecciona los valles más amplios del histograma y a través de
una función de costo genera la nueva dirección del robot y la velocidad a
la cual este se va a desplazar. Esta función de costo está basada en la
alineación del robot y el obstáculo, la diferencia entre la dirección del
robot y la del destino, y la diferencia entre la anterior dirección tomada
por el robot y la nueva [15].
Como ventajas, este método es más robusto frente a ruido en el sensor,
tiene en cuenta la cinemática del robot y elimina la inestabilidad generada
en el método de campos de potencial. Sin embargo, también posee
desventajas como su costo computacional y su difícil de implementación
en microcontroladores [14].
Bubble algorithm
Esta solución es propuesta por Susnea, Minzu y Vasiliu [14]. Yo le
atribuyo el nombre bubble algorithm pues se asemeja a un método de path
planning llamado bubble band technique.
El robot es un vehículo que contiene un anillo de sensores ultrasónicos
equidistantes que cubren un Angulo de 180°. Con este se genera una
burbuja alrededor del robot que determina un área de sensibilidad. Cuando
la burbuja del robot choca contra un obstáculo se genera un histograma
polar con las direcciones en donde hay y no hay obstáculos. Así, el robot
cambia su dirección hacia una en la que haya menos densidad de
obstáculos. Este continua su recorrido hasta encontrar otro obstáculo o
hasta que el objetivo se haga visible. Es decir, hasta que en el histograma
polar no haya obstáculos en la dirección en la que se encuentra el punto
de destino. De ser así, el robot cambia su dirección a aquella que lo lleva
al objetivo y continua su trayectoria directamente hacia él (Ilustración 11).
27
Ilustración 11. Proceso de rebote de la burbuja para el bubble algorithm. Tomado de [B].
Propuesta
Para mi propuesta tuve en cuenta que el objetivo de este proyecto es
puramente mecánico, por lo que seleccioné un algoritmo que no fuera tan
complicado de programar en un sistema embebido pero que permitiera
probar las habilidades mecánicas del robot. Por ende, tomé como base el
bug2 algorithm, pero lo modifiqué para que fuera más eficiente. Entonces,
dado que el robot se opera a través de behaviors en principio este se
moverá directamente hacia el punto de destino siguiendo el behavior go
to goal. Una vez los sensores sientan un obstáculo, el robot cambiara de
behavior a border follow. Durante este procedimiento evaluará en cada
posición la dirección a la cual está el objetivo, si en esta dirección aún hay
un obstáculo continuara con el behavior border follow, si no, cambiara de
behavior a go to goal y trazará de nuevo una línea recta desde su posición
actual hasta el objetivo.
28
Ilustración 12. Algoritmo propuesto para este proyecto.
Ahora bien, si el robot encuentra un obstáculo tal que al rodearlo hacia
una dirección lo aleje cada vez más del objetivo, este dará media vuelta y
tomara la dirección contraria de bordeado del obstáculo. Así hasta
encontrar una salida. Si hacia la otra dirección tampoco logra encontrar un
camino sin obstáculos hacia el objetivo, declara ese obstáculo como pared.
Este algoritmo requiere un poco más de costo computacional que el Bug2,
sin embargo, es más eficiente que este. Por otro lado, tiene como
desventajas que no tiene en cuenta la geometría del robot ni su cinemática.
- Go-To-Goal (GTG): Este comportamiento permite al robot llegar desde la
posición actual hasta el lugar donde se solicita la ayuda. Para esto necesita tener
conocimiento del lugar donde está y del lugar a donde hay que llegar. Esto
significa que previamente el individuo que necesita ayuda debió haberle
comunicado al ayudante su posición actual. De esta manera el robot planteará una
trayectoria en línea recta hasta el objetivo.
Para saber la posición del robot este tendrá sensores internos que le permitirán
calcular su posición relativa al su punto de partida. Para que todos los robots estén
en un mismo mapa, se requiere que todos partan del mismo punto de partida. Esta
técnica se llama odometria.
Una vez se conoce la posición del robot y la posición de destino, el robot calculara
la dirección relativa a la que se encuentra el uno del otro. Con esta dirección y
dada la naturaleza de la cinemática del robot, moverá su actuador para ubicar la
dirección de la llanta hacia el destino y avanzará hasta alcanzar el punto final.
- Test (T): A lo largo del tiempo se han planteado diferentes algoritmos para el
transporte colectivo de objetos. Según Torabi [6] existen tres grandes estrategias
para transportar objetos: Empujar, halar y enjaular. Con este comportamiento se
pretende intentar transportar el objeto desde el punto donde fue encontrado hasta
29
el punto de partida de los robots. Se propone como test debido a que en principio
el robot intentará llevarse el objeto, pero si este no lo logra, deberá proceder a un
comportamiento colectivo para llevarlo a cabo.
En principio el robot va a saber que lo que acaba de encontrar es un obstáculo.
No se profundizará en técnicas para reconocimiento de objetos específicos pues
se sale de la visión de este proyecto. Una vez el robot descubre el objeto lo rodeara
para saber qué tan grande es este. Mientras lo rodea, tomara muestras de las
coordenadas de sus fronteras con el fin de almacenar en memoria la posición del
mismo.
El siguiente paso consiste en intentar mover el objeto. Para ello se debe definir en
primer lugar el tipo de transporte que más se adapta a la aplicación. Por un lado,
tenemos la estrategia empujar, cuyos problemas son radican en el estancamiento
del objeto, la coordinación del movimiento hacia el punto de destino y el efecto
de la geometría que será empujada [6]. En segundo lugar, está la estrategia halar.
Esta estrategia, sin embargo, requiere de mecanismos físicos para conectar el
robot con el objeto, los cuales suelen ser complejos y difíciles de manufacturar.
Finalmente, esta enjaular, que corresponde a encerrar el objeto con robots
ensamblados entre sí, que lo empujaran y halaran hasta el punto de destino. Lo
anterior se puede realizar solo si se tiene información previa del objeto y si los
robots poseen mecanismos para conectarse entre sí.
Se escogió que el robot empujara el objeto desde donde lo encuentra hasta el
punto de destino. Esto debido a que es posible empujar cualquier geometría y a
que el robot no requiere de mecanismos extras que compliquen su manufactura.
Se escogió este camino pensando en que el robot debía ser lo más simple posible
y solo la unión de varios robots harían más fuerte y complejo el sistema. Además,
esta estrategia permite que varios robots se conecten entre si más fácilmente.
Ahora bien, pueden pasar dos cosas después de intentar empujar el objeto: Si por
un lado el robot logra desplazarse, el sistema pasará al comportamiento move
object; en caso de que no lo logre, se comunicara con sus compañeros para
solicitarles ayuda. La forma de saber si el robot fue capaz o no de desplazar el
objeto es mediante el nivel de corriente demandado por el motor. Para esto, se
midió el nivel límite de corriente que el motor puede pedir al llevar el objeto más
pesado posible. Entonces, si el motor pide más corriente que este límite cuando
no se trate de un pico de encendido, significara que el robot está siendo forzado a
llevar un objeto más pesado que su límite. Más adelante se presentarán los
resultados de las pruebas para los pesos imite.
- Communication (COM): En este trabajo no se utilizan protocolos de
comunicación para conectar los robots entre sí. Sin embargo, se propone utilizar
el protocolo zigbee IEEE 802.15.4 y tarjetas xbee que permitan el enmallado de
la comunicación.
30
- Self-Assembling (SA): Este comportamiento permite a los robots conectarse
entre sí para volverse un sistema más complejo y más fuerte a la hora de
transportar objetos. Diferentes mecanismos de auto-ensamble entre robots
móviles se han probado a lo largo de las investigaciones sobre swarm robotics.
Fukuda et al. Proponen un robot llamado CEBOT que tiene tres versiones: dos
con un actuador con memoria de forma que sirve como cerradura para atrapar una
ranura en un pin lateral del otro robot (Ilustración 13.a), y uno con una pinza
mecánica para hacer la función de auto-ensamble [16]. Otros conceptos robóticos
usan también este mecanismo de cerradura y ranura, llamada usualmente latch to
catch, como el CONRO o el Polybot [17]. Estas conexiones pueden ser
hermafroditas como en el Polybot o conexiones macho-hembra como en el
CONRO [G]. Así mismo, el sistema de pinzas es también usado por robots como
Swarm-bot, super-mecano Colony o el sistema de reparación colectiva de
Bererton y Kohsla [17]. Otro sistema de auto-ensamble utilizado corresponde a la
conexión de módulos por imanes. El MTRAN desarrollado por Kamimura et al.
Está basado en imanes permanentes combinados con resortes que permiten la
desconexión de los módulos (ilustración 13.d). Finalmente, existen también
mecanismos más complejos de auto-ensamble como conexiones macho-hembra
de geometrías complicadas, los cuales fueron aplicados en modelos como I-CES
y el robot Molécula [18].
Mondada et al. Resumen dichos mecanismos con la ilustración 13.
Ilustración 13. Resumen de los cuatro tipos principales de auto-ensamble de robots presentada por Mondada et
al.
Roderich Groß en su tesis doctoral Self-assembling Robots [17] presenta un
resumen más detallado de los mecanismos de unión (tabla 5).
31
Tabla 3. Características físicas de los módulos para auto-ensamblado de sistemas auto-propulsados.
Tomado de [F].
Los mecanismos de encaje como los presentados en la ilustración 13 a, b y c,
requieren de una coordinación y orientación muy cuidadosa a la hora de encajar
las geometrías de enganche. Adicionalmente, aquellos mecanismos con cerradura
móvil requerirán también de piezas motorizadas para completar el auto-
ensamblado, y aquellas con figuras complicadas necesitarán de una manufactura
especializada y compleja. Por lo anterior, se hace evidente el uso de imanes para
el auto-ensamble como el sistema más simple de implementar. Sin embargo, este
mecanismo presenta debilidades a la hora de soportar fuerzas de cizalla. Incluso
32
con fuerzas perpendiculares, debido a la poca disponibilidad de espacio y, por
ende, el pequeño tamaño del imán, podría presentarse una separación inesperada
de los módulos.
- Move object (MO): Con este comportamiento el robot podrá mover objetos desde
un punto a otro. En este trabajo no se estudiará algoritmos de transporte de objeto
tanto individual como colectivamente. Solo se probará que la mecánica del robot
es suficiente para transportar objetos y que a través del auto-ensamblado su
desempeño realizando esta tarea mejora. Para esto se evalúa entonces el
desplazamiento de objetos por un solo robot, el desplazamiento con un enjambre
de dos individuos y luego de tres. Para cada configura se mide el peso máximo
que puede ser desplazado.
- Planning (PL): Este comportamiento no fue implementado. Hace referencia a la
etapa en la cual el robot o el enjambre recalcula la trayectoria que debe seguir
mientras empuja el objeto para llegar al punto de destino. Lo anterior en respuesta
a obstáculos y paredes presentes en el mapa, que se irán conociendo a medida que
el robot avance a través del mismo.
- Stop (S): Una vez alcanzado el punto de destino, el robot pasa a un estado de
detención en el cual espera la próxima orden. Ahora bien, si aún no ha completado
la recolección completa de objetos, volverá a partir en busca de algo que traer a
su punto de origen.
6.3. Solución por subsistema La anterior explicación representa los algoritmos que utilizará el robot para llevar a
cabo cada uno de los behaviors a los que se debe enfrentar. Estas acciones, a su vez,
exhiben soluciones parciales a diferentes problemas relacionados con el prototipo
final. A continuación, se presenta un resumen de las dichas soluciones rescatadas de
los algoritmos escogidos para los behaviors:
Forma de movimiento
Para la forma de movimiento se escogió un robot con tres ruedas esféricas que le
dieran soporte y que no impusieran ninguna restricción a su modelo cinemático, y
una rueda corriente con tracción que permitiera el movimiento hacia atrás o adelante
del robot. Adicionalmente, esta rueda con tracción está conectada en su parte superior
a un servo motor que fijará directamente su dirección. Como se muestra en la
ilustración 14.b, las ruedas esféricas están ubicadas simétricamente con respecto al
eje vertical del robot, es decir, espaciadas entre ellas 120° y a la misma distancia del
punto central. Por otro lado, la rueda de tracción y dirección tiene el punto de contacto
con el suelo alineado con el eje vertical del robot. Esto permitirá que la dirección
seleccionada por el servomotor sea la misma dirección a la que el robot se moverá.
33
Ilustración 14. a) Sistema de tracción del robot. b) Disposición de las ruedas en el robot.
Por otro lado, dado que se quería reducir el tamaño del robot, se decidió ubicar el
motor de tracción paralelo al eje vertical del mismo, de manera que su longitud no
afectara el ancho de la estructura (ilustracion 15). Por ende, se hizo necesario un
sistema de transmisión de potencia que cambiara la dirección de movimiento. Para
esto, se utilizaron engranajes biselados con relación 1:0.75. La relación de
dimensiones fue determinada por el espacio disponible para situar las piezas dado que
se quería un robot con las dimensiones mas pequeñas posibles. Como se observa en
la ilustración 14.a el servomotor esta ubicado de manera que el punto de contacto de
la llanta con el suelo este en el centro del plano horizontal del robot. Además, el
motorreductor está pegado lo mas cerca posible al servomotor, de forma que se
redujera el tamano del robot pero que fuera posible encontrar una relación de
reducción que emparejara el eje del reductor con el eje de giro de la llanta.
Ilustración 15. Tamaño de un posible modulo si el motor se ubicaba horizontalmente conectado directamente a
la llanta.
Sistema de suspension
Dado que es un robot con más de 2 llantas, como propone Siegwart et. al en su libro,
se adecuó un sistema de suspensión que permitiría al robot superar desniveles de hasta
5 mm. Para ello usé un sistema de resortes sobre cada llanta esférica, de manera que,
si una de ellas era levantada por un desnivel, el resorte pudiera comprimirse cinco
milímetros sin que la llanta de tracción y dirección dejara el suelo. Para esta solución
era necesario tener en cuenta la rigidez del resorte, pues si se escogía un resorte muy
34
débil se aumentaba la posibilidad de deslizamiento de la llanta de tracción. Si, al
contrario, se usaba un resorte muy fuerte, se perdía estabilidad y la función de las tres
llantas esféricas era nula. Como resultado, los resortes estaban comprimidos 2 mm
mientras el robot se desplazaba por terreno plano, con el fin de presionar la llanta
contra el suelo, y se dejaban comprimir 5 mm más cuando un desnivel en el terreno
se presentaba.
Sistema de auto-ensamblado
Como se plantea en la sección anterior, la forma más viable para auto-ensamble en la
aplicación del robot es a través de imanes. Sin embargo, como ya se dijo, este
mecanismo presenta debilidades contra la fuerza de cizalla y altas fuerzas
perpendiculares. Por ende, decidí colocar cuatro imanes en cada cara, donde cada
esquina tuviera una polaridad diferente a sus vecinas. Entonces la configuración
queda polo positivo en la esquina superior derecha, negativo en la superior izquierda,
positivo en la inferior izquierda y negativo en la inferior derecha (ilustración 16). Esto
también se hizo para conservar la simetría de la cara, de manera que cualquier otra
cara de otro modulo pudiera conectarse sin problema. Una de las ventajas de los
imanes es que el robot no debe hacer movimientos precisos para conectarse a otro
robot, pues acercarse a su cara ya permite que las fuerzas magnéticas de atracción
generen el ensamble. Se decidió poner 4 imanes dado que permitiría una buena
conexión aun cuando la zona de ensamble del robot sufra la acción de un momento
par alrededor de su eje vertical
Ilustración 16. Disposición de la polaridad de los imanes.
Por otro lado, dada la geometría hexagonal del robot, en las uniones diagonales la
fuerza se repartirá en componentes perpendiculares y paralelas a la cara del robot. Lo
cual creara la posibilidad de separar el ensamblaje si las fuerzas paralelas son altas.
Por ende, a la geometría hexagonal de cada robot le agregué una pestaña de manera
simétrica, otra vez con el fin de conectar cualquier cara de los robots entre sí. Esta
pestaña no es más que un cambio de nivel suave, con perfil cilíndrico, sobre la
superficie de cada cara (ilustración 18). Esta variación suave del perfil de la cara se
hace, además, para permitir el fácil ensamblado de dos módulos. De nuevo, los robots
solo deberán acercarse uno al otro para ser atraídos por los imanes y desplazados por
el desnivel suave.
35
Ilustración 17. Cambio de sección en la cara de los robots.
Forma de transportar objetos
Como conclusión de la sección anterior se tiene que la forma más sencilla de
transportar objetos es empujándolos. Como se muestra en la ilustración 19.a los
robots pueden ubicarse en configuración de panal de abeja, uno tras el otro, para
empujar su objetivo pesado. Así, se volverán una sola estructura conectada que
empujara más fuerte a su objetivo hasta poder moverlo. Igualmente, y a pesar de que
el mecanismo no fue diseñado para eso, se plantea la posibilidad de transportar el
objeto por enjaulamiento. Esto podría ayudar en caso de que sea necesario cambiar
súbitamente de dirección de desplazamiento, ya que todos los robots no cambiarían
de posición para poder cambiar de dirección, sino que la jaula completa cambiaria de
dirección haciendo que los módulos que más ejercen fuerza cambien (ilustración
19.b).
Ilustración 18. a) transporte colectivo en formacion colmena por empuje. b) transporte colectivo por
enjaulamiento.
36
Geometría
Para escoger la geometría se tuvieron en cuenta cuatro parámetros: los módulos del
enjambre “debían ser simétricos de manera que se pudieran empaquetar densamente,
es decir que los espacios entre módulos adyacentes fueran minimizados” [19]; debía
ser posible unir un máximo de robots entre sí; las fuerzas aplicadas por los robots de
apoyo debían ser suficientemente aprovechadas; los costos del robot no debían
aumentarse drásticamente. Si se piensa entonces en las posibles geometrías que se
pueden aplicar se tiene como opción un circulo, un cuadrilátero, un triángulo, un
polígono de orden superior o una geometría especifica. Sin embargo, descartaré a
priori los polígonos de más de 6 lados, pues estos implican un mayor gasto en
sensores, material de impresión 3D y mecanismo de auto-ensamble. También,
descarté la opción de una geometría especifica diferente de una figura geométrica
estándar pues quería hacer los robots lo más simples y homogéneos posibles. Ahora
bien, con respecto al primer parámetro, en la ilustración 20 se observan las diferentes
configuraciones de ensambles que se pueden lograr con módulos de las diferentes
geometrías listadas.
Ilustración 19. Configuraciones de uniones de varias figuras geométricas.
Aquí se observa que el rectángulo, el triángulo y el hexágono son las únicas que están
densamente empaquetadas en un espacio, por lo que se descartara el circulo y el
pentágono. Ahora bien, si observamos los demás parámetros, el cuadrado solo
permite aprovechar la fuerza de dos módulos de apoyo en la parte trasera y el
triángulo requiere muchas más acciones de control para poder ejercer fuerzas
efectivas sobre los robots que necesitan apoyo. En conclusión, el hexágono es la
geometría que se adaptaba mejor a los requerimientos de geometría de los robots para
la aplicación en cuestión.
Sensores
Para lograr llevar a cabo la tarea de obstacle avoidance, es necesario que el robot se
comunique con el medio ambiente con el fin de saber dónde se encuentran los
obstáculos. Esto se hace tomando mediciones de varios sensores y sacando
información importante de ellas. Siegwart et al. clasifica los tipos de sensores para
robots móviles en dos grandes grupos funcionales: de acuerdo a la posición de la
variable que midan y de acuerdo a la forma de medirlo. En el primer gran grupo
funcional se encuentran los sensores proprioreceptive y exteroreceptive. Un sensor
proprioreceptive “mide valores internos en el sistema, por ejemplo, velocidad del
motor, carga sobre las llantas, ángulos de las uniones de un brazo robot, y voltaje en
37
la batería.” [12]. Un sensor exteroreceptive “adquiere información del ambiente cerca
al robot, por ejemplo, medición de distancias, intensidad de la luz, y amplitud del
sonido” [12]. El segundo grupo funcional está divido en sensores activos y pasivos.
Un sensor pasivo es aquel que “mide la energía del medio ambiente entrando al
sensor” por ejemplo, sensores de temperatura, micrófonos y cámaras CCD/CMOS
[12]. Un sensor activo, al contrario, “emite energía al ambiente, luego mide la
reacción ambiental” [12]. Según los autores, este tipo de sensores alcanzan un mejor
desempeño dada su controlada interacción con el medio ambiente, sin embargo,
introducen muchos riesgos. Por ejemplo, la energía emitida puede modificar las
características que el sensor intenta medir, también puede sufrir de interferencia por
otros sensores o por las mismas señales que intenta medir. Ejemplos de estos sensores
son encoders de cuadratura, sensores ultrasónicos y buscadores de rango laser.
Así, los autores presentan la tabla 4, donde exponen los sensores más usados para
aplicaciones de robots móviles, organizados ascendentemente en orden de
complejidad y descendentemente en orden de madurez tecnológica. Dada la
naturaleza simple e “incapaz” del robot que estoy diseñando, seleccionare solamente
sensores de los dos primeros usos típicos presentados en la tabla: Sensores táctiles y
sensores llanta/motor. Del primer tipo usare un optical barrier, es decir un sensor
óptico que le permita a cada módulo detectar objetos próximos. Para esto ubicaré un
sensor infrarrojo en cada una de las caras de la estructura hexagonal, de manera que
le permita tener varias aproximaciones de qué objeto se encuentra delante de él. Estos
se ubicarán en la parte más baja de la carcasa para poder detectar obstáculos de baja
altura que impidan la movilidad del robot. Serán el único contacto que tendrá el robot
con el medio ambiente.
Ilustración 20. Sensores infrarrojos ubicados en las caras del robot.
Del segundo tipo de sensores usaré un encoder incremental óptico y un encoder de
cuadratura. El encoder óptico se usará para obtener una segunda medición de la
dirección de la llanta relativa a la dirección del cuerpo del robot. En principio el
servomotor que modifica directamente esta variable mide y tiene en cuenta cuantos
pasos o cuantos grados cambió su dirección de la dirección original. Sin embargo,
dado el deslizamiento de la llanta y los errores de manufactura del robot, será
necesario otro sensor para comparar y hacer un loop de control que disminuya este
error. Un encoder óptico es básicamente “un interruptor mecánico de luz que produce
38
un cierto número de pulsos de onda sinusoidal o cuadradas, para cada revolución del
motor” [12]. Este consiste de un sensor infrarrojo con una fuente de luz y un receptor
y de un obstáculo en forma de disco con muescas que aparecen y desaparecen según
la posición angular del eje del motor.
Ilustración 21. Encoder óptico incremental utilizado.
Por otro lado, el encoder de cuadratura se usará para medir el avance angular de la
llanta y, junto con la medicion de la direccion, calcular la posicion actual del robot en
el marco de referencia del mismo. Se decidió usar un encoder de cuadratura pues es
un encoder absoluto, es decir, tiene en cuenta la direccion en la que gira la llanta.
Además, encontré un dispositivo en el mercado que se adaptaba a pequeños ejes de
llantas para medir su avance o su retroceso. Este corresponde al dispositivo utilizado
en el scroll de un mouse para avanzar o retroceder dentro de una pagina web oarchivo
en el computador (ilustracion 23). Este encoder de cuadratura consta de tres pines y
dos contactos de cobre conectados a un agujero giratorio. El agujero giratorio es
mecanicamente desplazado por el eje del rotor, haciendo que los contactos de cobre
conecten los dos pines laterales con el central en todas las configuraciones posibles.
Es decir, si llamamos A al pin izquierdo, C al central y B al derecho, obtendremos
conexiones AC, BC, ABC y ambos pines laterales desconectados de C.
Ilustración 22. Encoder rotatorio de cuadratura. Utilizado normalmente en el sistema de scroll de un mouse.
Entonces, para utilizar este sensor se propone el circuito presentado en la ilustracion
24. De manera que cuando haya contacto entre un pin y el pin central conectado a
39
tierra, la lectura digital sera 0 y cuando no la lectura digital sera 5V. En conclusion,
el sistema realizará lecturas que, en binario, corresponden a las siguientes parejas de
bits: 01, 10, 00 y 11. Donde el primer bit es la conexión del pin A y el segundo la
conexión del pin B.
Ilustración 23. Circuito para la lectura de los pines del encoder de cuadratura de un mouse.
Ahora bien ¿Cómo puede este encoder saber la posicion actual del robot y la direccion
a la cual se desplaza? Para esto, internamente el encoder esta configurado de manera
que las pulsos de onda que produce cada pin estan desfasados 90° uno del otro. La
ilustracion 25 muestra la forma de onda que tendrian los pulsos generados por este
encoder y la tabla de verdad que produciria. Por ende, si el robot avanza hacia
adelante, la senal esperada es 10, 11, 01, 00 y si el robot avanza hacia atrás, la
respuesta obtenida sera 10, 00, 01, 11. Ahora bien, cada lectura de estos dos bits
corresponde a un paso del encoder, el cual tiene un angulo relacionado en su
sensibilidad. Para calcular entonces la posicion angular del eje, basta con con contar
el numero de pasos avanzados y multiplicarlos por la sensibilidad o el angulo
relacionado a cada paso del encoder.
Ilustración 24. Encoder óptico de cuadratura. La relación de fases entre los trenes de pulso del canal A y el B son
usados para determinar la dirección de rotación. Tomado de [4].
40
Tabla 4. Clasificación de sensores usados en aplicaciones de robot móviles. Tomado de [12]..
Circuitos
En resumen, los elementos electrónicos utilizados durante el proyecto fueron: 6
sensores QRD1114, un encoder de cuadratura, un encoder óptico de herradura, 3
baterías de celular BL-5C, un puente H y un microcontrolador. Los sensores
QRD1114 son sensores ópticos del tipo exteroreceptive que poseen un emisor de luz
infrarroja y un receptor. Son los más baratos, pequeños y funcionales que pude
conseguir disponibles en el mercado. Sus características se explicarán más adelante
en la lista detallada de componentes. El encoder de cuadratura corresponde al ya
mencionado dispositivo que se encuentra en los mouses para medir el avance del
scroll. El encoder de herradura es una mezcla de los dos dispositivos anteriores, pues
mide la posición y velocidad angular con el encoder de cuadratura, pero usando una
configuración de emisor-receptor infrarrojos. Los circuitos utilizados para hacer
funcionar cada uno de estos módulos se muestran en las ilustraciones 26 y 27.
41
Ilustración 25. esquemáticos utilizados para la conexión del sensor QRD 1114 (a) y del encoder de cuadratura
(b).
Ilustración 26. Configuración utilizada para el encoder de herradura TCST1103. Tomado de [J].
Por otro lado, uno de los problemas grandes a solucionar en cuanto a la parte
electrónica del robot era el de la fuente de potencia, pues se debía encontrar una
batería que respondiera a las demandas de potencia de los circuitos y los motores,
pero que no aumentara el peso y las dimensiones del robot. En la tabla 5 se presenta
una aproximación a la potencia necesaria para hacer funcionar todos los elementos
electrónicos al mismo tiempo.
Componente Potencia consumida [mW]
Reductor 488
Servo 400
lm298n 350
Sensores y encoder 700
Arduino 315
Total 2253 Tabla 5. Resumen del consumo de potencia en el robot.
Se observa que se requieren 2.2W para encender todo el sistema, ahora, se supondrá
un tiempo de autonomía del robot de cinco horas. Por lo tanto, el sistema requerirá
una energía de 11 Wh para lograr esto. En términos de baterías, encontré dos opciones
42
para suplir esta necesidad: por un lado, se puede usar una batería LiPo de 11.1V y
1000mAh; por el otro, la cual es una opción poco convencional, descubrí que podría
utilizar baterías de celular recicladas, en total tres, cada una con 3.7V y 1020mAh. La
primera solución entrega 11.1Wh y la segunda 11.32 Wh. Si fijamos nuestra atención
en las ventajas y desventajas de cada solución, veremos que, por un lado, la batería
LiPo es más segura, pero más pesada y as difícil de ubicar dentro del robot. Ella tiene
dimensiones de 74 x 34 x 41 mm, lo cual está cerca del tamaño de la carcasa del robot.
Por otro lado, las baterías de celular requieren un poco más de hardware para poder
funcionar, es decir, requiere de un sistema lector para aprovechar su energía y de una
conexión en serie de las mismas para llegar a 11.1V. Sin embargo, son mucho más
pequeñas y se adaptan al tamaño del robot: cada una tiene dimensiones de 53 x 34 x
18 mm. Por esta razón, preferí utilizar baterías de celular recicladas BL-5C y adaptar
sus respectivos lectores a la carcasa del robot. El circuito utilizado para conectar las
baterías se muestra en la ilustración 28. Se observa que hay un master switch que
enciende y apaga el robot por completo.
Ilustración 27. Conexión de las baterías BL-5C dentro del robot.
Otro elemento electrónico utilizado fue un puente H L298n para regular la dirección
de movimiento y la velocidad del motor. El circuito utilizado se muestra en la
ilustración 29.
Ilustración 28. Esquemático de las conexiones del L298n.
43
Finalmente, es necesario tener un procesador para llevar a cabo las estrategias de
control, el diagrama de estados y los comportamientos en cada estado. Dado que este
proyecto tiene un enfoque más mecánico, se decidió utilizar un Arduino para suplir
estas funciones. Sin embargo, se plantea la posibilidad de en un futuro utilizar tarjetas
xbee para la comunicación entre agentes e incluso módulos Zigbee como el ATZB
24A2. Las conexiones del Arduino se muestran en la ilustración 30, el Arduino
utilizado es un Arduino nano. En los anexos se adjuntan los esquemáticos de todos
los circuitos juntos.
Ilustración 29. Esquemático de las conexiones del Arduino nano.
Ahora, dada la cantidad de circuitos que se deben implementar y el poco espacio
disponible, fue necesario separar las conexiones en dos PCB. Además, las geometrías
del robot, los lugares donde irían conectados los actuadores y los espacios para las
conexiones entre piezas como la carcasa y la tapa o las ruedas esféricas, limitaban
también la posibilidad de hacer una sola tarjeta electrónica para todo el modulo. En
la ilustración 31 se muestran imágenes de los caminos de cobre propuestos para cada
PCB. Se decidió ubicar una PCB como tapa superior del módulo y otra como tapa
inferior. La PCB superior cuenta con los elementos electrónicos de mayor tamaño
como el Arduino nano y el L298n. Además, tiene un botón que permite el inicio de
operación del robot. Por su parte, la PCB inferior cuenta con los agujeros necesarios
para introducir a presión las ruedas esféricas. Además, se aprovecha su posición para
conectar directamente los sensores infrarrojos. Finalmente, contiene el master switch
on/off que encenderá o apagará por completo cada individuo.
44
Ilustración 30. A la izquierda se presenta la PCB que ira en la parte superior de modulo. A la derecha, se
presenta la PCB para la parte inferior.
Cálculos de la fuerza de empuje de cada modulo
El diagrama de cuerpo libre del robot empujando un objeto se muestra en la
ilustración 32.
Ilustración 31. Diagrama de cuerpo libre del robot empujando un objeto.
Las variables son
𝑚1 = 𝑚𝑎𝑠𝑎 𝑑𝑒𝑙 𝑟𝑜𝑏𝑜𝑡
𝑚2 = 𝑚𝑎𝑠𝑎 𝑑𝑒𝑙 𝑜𝑏𝑗𝑒𝑡𝑜 𝑎 𝑑𝑒𝑠𝑝𝑙𝑎𝑧𝑎𝑟
𝐹𝑐 = 𝐹𝑢𝑒𝑟𝑧𝑎 𝑑𝑒 𝑟𝑒𝑎𝑐𝑐𝑖ó𝑛
𝐹𝑟1 = 𝐹𝑢𝑒𝑟𝑧𝑎 𝑑𝑒 𝑓𝑟𝑖𝑐𝑐𝑖ó𝑛 𝑒𝑛𝑡𝑟𝑒 𝑙𝑎 𝑙𝑙𝑎𝑛𝑡𝑎 𝑦 𝑒𝑙 𝑠𝑢𝑒𝑙𝑜
𝐹𝑟2 = 𝑓𝑢𝑒𝑟𝑧𝑎 𝑑𝑒 𝑓𝑟𝑖𝑐𝑐𝑖ó𝑛 𝑒𝑛𝑡𝑟𝑒 𝑒𝑙 𝑜𝑏𝑗𝑒𝑡𝑜 𝑦 𝑒𝑙 𝑠𝑢𝑒𝑙𝑜
𝑁1 = 𝐹𝑢𝑒𝑟𝑧𝑎 𝑛𝑜𝑟𝑚𝑎𝑙 𝑑𝑒𝑙 𝑟𝑜𝑏𝑜𝑡
𝑁2 = 𝐹𝑢𝑒𝑟𝑧𝑎 𝑛𝑜𝑟𝑚𝑎𝑙 𝑑𝑒𝑙 𝑜𝑏𝑗𝑒𝑡𝑜
𝐿 = 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 𝑑𝑒𝑙 𝑐𝑒𝑛𝑡𝑟𝑜 𝑑𝑒 𝑙𝑎 𝑙𝑙𝑎𝑛𝑡𝑎 𝑎𝑙 𝑝𝑢𝑛𝑡𝑜 𝑚𝑎𝑠 𝑎𝑙𝑡𝑜 𝑑𝑒𝑙 𝑟𝑜𝑏𝑜𝑡
𝜏 = 𝑡𝑜𝑟𝑞𝑢𝑒 𝑔𝑒𝑛𝑒𝑟𝑞𝑑𝑜 𝑝𝑜𝑟 𝑒𝑙 𝑚𝑜𝑡𝑜𝑟
𝑟 = 𝑟𝑎𝑑𝑖𝑜 𝑑𝑒 𝑙𝑎 𝑙𝑙𝑎𝑛𝑡𝑎
𝜇1 = 𝑐𝑜𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑒 𝑓𝑟𝑖𝑐𝑐𝑖𝑜𝑛 𝑒𝑛𝑡𝑟𝑒 𝑙𝑎 𝑙𝑙𝑎𝑛𝑡𝑎 𝑦 𝑒𝑙 𝑠𝑢𝑒𝑙𝑜
𝜇2 = 𝑐𝑜𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑒 𝑓𝑟𝑖𝑐𝑐𝑖𝑜𝑛 𝑒𝑛𝑡𝑟𝑒 𝑒𝑙 𝑜𝑏𝑗𝑒𝑡𝑜 𝑦 𝑒𝑙 𝑠𝑢𝑒𝑙𝑜
45
Se separa entonces el sistema en dos cuerpos y se analizan por separado: 1
corresponde al robot y 2 corresponde al objeto a ser desplazado. Se analiza la
dinámica por separado de ambos cuerpos
Cuerpo 1
∑ 𝐹𝑥 = 𝑚𝑎1 = −𝐹𝑟1 − 𝐹𝑐 + 𝐹𝑒
∑ 𝐹𝑦 = 0 = 𝑁1 − 𝑚1𝑔
∑ 𝑀𝑧𝑙𝑙𝑎𝑛𝑡𝑎 = 𝐼𝛼 = 𝜏 + 𝐹𝑟1 ∗ 𝑟 −𝐿
2𝐹𝑐
Cuerpo 2
∑ 𝐹𝑥 = 𝑚𝑎2 = −𝐹𝑟2 + 𝐹𝑐
∑ 𝐹𝑦 = 0 = 𝑁2 − 𝑚2𝑔
Ahora desarrollamos la ecuación de momentos en el eje de rotación de la llanta. Para
encontrar la masa limite a la cual el sistema deja de moverse, igualamos la sumatoria
de momentos a 0.
0 = 𝜏 + 𝐹𝑟1 ∗ 𝑟 −𝐿
2𝐹𝑐
Despejamos la fuerza de contacto entre ambos cuerpos
𝐹𝑐𝑐𝑟𝑖𝑡𝑖𝑐𝑎 =2(𝜏𝑚𝑎𝑥 + 𝑚1𝑔𝜇1𝑟)
𝐿
Reemplazando la ecuación de fuerzas en x del cuerpo 2 obtenemos la siguiente
expresión
𝑚𝑐𝑟𝑖𝑚𝑎𝑥 =2(𝜏𝑚𝑎𝑥 + 𝑚1𝑔𝜇1𝑟)
𝐿𝑔𝜇2
El torque máximo del motor es de 1.5 kg-cm y los coeficientes de fricción son
respectivamente
𝜇𝑀−𝑀 = 𝑚𝑎𝑑𝑒𝑟𝑎 𝑠𝑜𝑏𝑟𝑒 𝑚𝑎𝑑𝑒𝑟𝑎 = 0.7
𝜇𝑀−𝑆 = 𝑚𝑎𝑑𝑒𝑟𝑎 𝑠𝑜𝑏𝑟𝑒 𝑎𝑐𝑒𝑟𝑜 = 0.65
𝜇𝐶−𝑀 = 𝑐𝑎𝑢𝑐ℎ𝑜 𝑠𝑜𝑏𝑟𝑒 𝑚𝑎𝑑𝑒𝑟𝑎 = 0.7
𝜇𝐶−𝑆 = 𝑐𝑎𝑢𝑐ℎ𝑜 𝑠𝑜𝑏𝑟𝑒 𝑎𝑐𝑒𝑟𝑜 = 1
Con esto, los valores esperados de masa crítica para para ambas configuraciones son:
para madera sobre madera 0.595 kg y para madera sobre acero 0.667 kg.
46
7. Resultados
7.1. Sistema de suspensión
Para las pruebas del sistema de suspensión se hizo rodar al robot por diferentes alturas
de desnivel hasta encontrar una limite, a la cual se impedía el movimiento de su llanta
de tracción. Esta fue determinada a 4.5mm, 10% diferente a la calculada. Esto se debe
a que los resortes utilizados no eran todos exactamente iguales, pues en el mercado
no pude conseguir resortes con exactamente la misma constante de rigidez. Algo
similar sucedía con sus dimensiones, al no ser las mismas no se adaptaban
correctamente a la guía de la carcasa, dejando a veces holguras que hacían que el
resorte se desplazara. En la ilustración 33 se muestra al robot superando un obstáculo
de 4mm de altura.
Ilustración 32. Robot superando un desnivel de 4mm.
7.2. Resultados de llevar peso
Las pruebas para la fuerza de empuje del robot se hicieron en dos escenarios: Madera
sobre madera y madera sobre aluminio. Según a los resultados de la sección anterior
el máximo peso que el robot puede desplazar para madera sobre madera es de 554g,
y de madera sobre aluminio 603g. En la ilustración 34 se observa al robot desplazando
un peso variable soportado en una estructura de madera mdf sobre una placa de este
mismo material. El resultado experimental fue que el robot se detuvo cuando el peso
de todo el sistema era 510 ± 10 g. lo que corresponde a un error de 8% comparado
con lo esperado teóricamente.
47
Ilustración 33. Experimento de un robot empujando un objeto de madera sobre madera.
Por otro lado, la ilustración 35 muestra al robot empujando el mismo objeto de peso
variable sobre una placa de aluminio. Para este experimento el resultado fue de una
masa límite de 590 ± 5 g, es decir, 2.15% menos que el resultado teórico. Estas
variaciones se deben a que los cálculos se realizan bajo modelos teóricos que se
acercan a la realidad pero que no la describen completamente, además, a los valores
de fricción entre los materiales, los cuales no fueron calculados experimentalmente.
Ilustración 34. Experimento de un robot empujando un objeto de madera sobre aluminio.
48
7.3. Resultados de sistema de locomoción
Durante las pruebas del sistema de locomoción descubrí que había un gran error entre
el ángulo que se le pedía al robot tomar y la dirección real que este seguía. A pesar
de que el mecanismo funcionaba perfectamente y permitía al robot desplazarse en
cualquier dirección, lograr una exactitud a nivel del ángulo de giro no fue posible. El
problema se debe a la manufactura del robot, pues muchas veces el servomotor
quedaba muy apretado y no funcionaba correctamente. Además, la llanta no tenía un
único contacto con el suelo, como se había supuesto en el modelo cinemático del
robot, sino que se acerca a un rectángulo plano. Esto generaba más fricción entre el
giro del servo y el ángulo deseado. En la ilustración 36 se muestra un ejemplo del
mecanismo de locomoción apuntado a diferentes direcciones.
Ilustración 35. Mecanismo de locomoción en funcionamiento.
7.4. Resultados de obstacle avoidance
El robot fue capaz de evadir obstáculos. Como se muestra en la ilustración 37, el robot
va directamente hacia el obstáculo y cuando lo encuentra, se detiene y cambia de
dirección para poder rodearlo y seguir su trayectoria. Se notó, sin embargo, que la
distancia a la cual el robot sentía el obstáculo era muy pequeña, de máximo 5mm.
Esto puede deberse a la potencia con la que estaban funcionando los sensores, pues
en su datasheet se reporta que la máxima corriente en el colector del transistor foto
receptor se da entre 20 y 30 mm. Se recomienda en próximos trabajos utiliza sensores
infrarrojos más potentes, puesto mejorara la respuesta del robot a geometrías difíciles
y su tiempo de reacción a obstáculos sucesivos.
49
Ilustración 36. Secuencia de evasión de obstáculos del robot.
7.5. Resultados auto-ensamble
Este comportamiento se probó haciendo que un robot se ensamblara a otro y luego se
intentara separar en la dirección contraria. Se encontró que, si ambos robots no se
mueven al mismo tiempo y en la misma trayectoria, se modifica la dinámica del
sistema y se le impide avanzar correctamente en una dirección. Entonces, si el robot
que necesita apoyo está quieto y el ayudante auto-ensamblado se mueve en la
dirección a la que se encuentra el robot, la llanta estática del ayudado impedirá el
correcto desplazamiento de ambos módulos unidos.
En la ilustración 38 se muestran algunas secuencias de la unión y desplazamiento de
dos módulos ya auto-ensamblados. Sin embargo, cabe resaltar que hicieron falta
muchas pruebas a lo largo del desarrollo de este proyecto. Se recomienda en un futuro
probar el cambio de fuerza aplicada entre empujar con un solo robot y hacerlo con un
enjambre ensamblado. También, hizo falta probar el desempeño de la pestaña
agregada en la carcasa y las dinámicas de separación entre módulos auto-
ensamblados.
Ilustración 37. Secuencia de auto-ensamble de dos módulos del robot.
7.6. Resultados de la electrónica
En cuanto a las PCB fabricadas se encontró que, dada su geometría y todos los
agujeros que debía tener para permitir el paso de tornillos y cables, su manufactura
50
era difícil y cara. Esto aumentó el precio del robot e hizo difícil su modularidad y su
fácil ensamble. El hecho de tener una PCB como tapa superior y otra como tapa
inferior hizo que fuera necesario atravesar cables a lo largo del robot, lo que impedía
desarmarlo de nuevo en ciertas ocasiones. En un futuro se recomienda hacer un
circuito electrónico más completo y con componentes superficiales. Con más
completo me refiero a agregar un microcontrolador y no una tarjeta electrónica como
el Arduino nano. También, agregar circuitos de carga de la batería, amplificadores de
potencia para el sensor infrarrojo, transreceptores que usen el protocolo Zigbee para
la comunicación ente módulos, sensores de fuerza aplicada o algún sensor para
descubrir obstáculos, y sensores de proximidad o algún dispositivo para saber cuándo
ya se ha auto-ensamblado un robot. La ilustración 39 muestra la PCB superior ya
fabricada y soldada. La ilustración 40 muestra la PCB inferior.
Ilustración 38. PCB superior fabricada y soldada.
Ilustración 39. PCB inferior fabricada y soldada.
51
7.7. Lista de partes y justificación
Pieza Cant. Función imagen costo
carcasa 1
la carcasa escogida fue de geometría
hexagonal. Tiene 4 agujeros superficiales en
cada cara para pegar los imanes que
conectarán los robots entre sí, y un agujero
pasante en la parte inferior para ubicar los
sensores infrarrojos. Normalmente, estos
entran a presión, sin embargo, dada la
variación de la manufactura de los mismos, es
posible que para insertarlos sea necesario
utilizar algún pegante. Los agujeros de los
sensores se encuentran ubicados en la parte
más baja de cada cara, en el centro de la
misma. Adicionalmente, las caras superior e
inferior cuentan con agujeros y soportes para
los tornillos que sostendrán las respectivas
PCB. Los tornillos para la PCB superior son
de 3mm de diámetro y aquellos que soportan
la PCB inferior de 2.66. Por otro lado,
internamente, la carcasa tiene un agujero para
insertar las baterías a presión. En la parte
inferior de dichos agujeros tiene un espacio
destinado a los lectores de las baterías, estos
deben ser pegados con super bonder a la
carcasa. Otra característica de la carcasa es el
espacio destinado al sistema de suspensión.
Este corresponde a unas guías cilíndricas
agujeradas en su extremo superior. Allí se
insertarán los resortes seguidos de una tapa
que se asegurará con un tornillo al agujero. La
tapa fue necesaria para permitir la compresión
del resorte. El tamaño de esta pieza es de 65.3
x 82.5 x 74 mm. Está fabricada en filamentos
de PLA, material utilizado por los
laboratorios de impresión 3D de la
universidad de los andes. La impresora
utilizada fue la MAKERBOT.
Ilustración 40. CAD de la
carcasa.
Ilustración 41. Vista interna
del CAD de la carcasa.
Ilustración 42. Carcasa
construida
$78.000
Tapa 1
La tapa posee la misma geometría exterior
que la carcasa. Internamente, tiene espacios
destinados a conexiones con tornillos para
fijarla a la carcasa. Se decidió poner una tapa
para hacer un robot más modular y así poder
separar la PCB superior del cuerpo del
$32.000
52
módulo. Esto con el fin de retirar las baterías
y poder cargarlas y de evaluar el estado
interno de cada módulo. Está fabricada en
filamentos de PLA en los laboratorios de
impresión 3D de la universidad de Los Andes.
La impresora utilizada fue la MAKERBOT.
Ilustración 43. Tapa.
Ilustración 44. Tapa vista
superior.
PCB up 1
Esta PCB fue fabricada en los laboratorios de
circuitos impresos de la universidad de Los
Andes. Los esquematicos y los planos se
encuentran los anexos.
Ilustración 45. PCB superior.
$20.000
PCB bottom 1
Esta PCB fue fabricada en los laboratorios de
circuitos impresos de la universidad de Los
Andes. Los Esquematicos y los planos se
encuentran en los anexos.
Ilustración 46. PCB inferior.
$20.000
PCB infrarrojo 1
Esta PCB utilizada fue un resultado del trabajo
Prótesis funcional de mano con control y
retroalimentación de fuerza [20], proyecto de
grado de Mario Benitez para obtener el titulo
de ingeniero Mecanico en la universidad de los
andes.
Ilustración 47. PCB para el
infrarrojo de herradura
$5.000
Llanta
esférica 3
Esta llanta corresponde a una rueda esférica
incertada en un cilindro cuyo diámetro interno
es un poco menor al diámetro de la esféra.
Adicionalmente, cuenta con un cilindro de
menor diámetro en la parte superior para más
comodidad en la instalación. Fue la más
pequeña y barata que conseguí en el mercado,
y la más fácil de instalar. Para poder insertarla
a presión en el robot es necesario cortar el
cilindro superior de la pieza original e insertar
Ilustración 48. Llanta esférica
implementada.
$10.500
53
el cilindro inferior en la PCB, luego, usar
pegante para fijarla a ella.
Ilustración 49. Llanta esférica.
Batería BL-5C 3
Estas son baterías de Ion Litio, normalmente
utilizadas en celuares. Tienen un voltaje
nominal de 3.7V y una capacidad de 1020
mAh. Además, tienen una corriente máxima
de descarga de 1200 mA y un tiempo de vida
de más de 300 ciclos.
Ilustración 50. Baterias BL-5C.
$24.000
Imán 24
Decidí escoger imanes cuadrados porque van
mejor con la idea de simplicidad y de figura
geométrica que tiene el robot. Estos deben ser
pegados con super bonder a la carcasa del
robot. Se debe tener precaución a la hora de
pegarlos de manera que se respete la simetría
de polos presentada en la ilustración 16.
Ilustración 51. Modulos robot
con imanes.
Ilustración 52. Imán.
$7.200
Resorte 3
Dado el pequeño tamano del resorte, fue muy
difícil conseguir alguna referencia específica
en el mercado. Lo que hice entonces, fue
buscar varios resortes cuya constante de
rigidez y geometria fueran cercanas a la
necesaria y similares entre ellas.
- $900
Engranaje
pequeño 1 Estos engranajes fueron fabricados en el
labortorio de impresión 3D de la universidad
de Los Andes. Fueron fabricados en la
impresora FORM 1+ utilizando la tecnología
de estereolitografía. La relación de reducción
$23.000
Engranaje
grande 1 $23.000
54
es de 1:0.75, esto disminuye un poco el torque
del motor y aumenta la velocidad del robot.
Esta relación fue completamente determinada
por el espacio que había entre llanta y
motorreductor.
Ilustración 53. Transmisión por engranajes biselados.
Conector
servo 1
Esta pieza viene integrada al servo motor. Se
usa para conectar el eje del servomotor con
aquello que se quiere rotar. Es muy útil dado
que el eje del servo tiene una geometría en
forma de piñón, macho, que complementa la
geometría del agujero de la pieza, hembra.
Adicionalmente, cuenta con un agujero en el
centro para un tornillo, que viene incluido con
el motor, que permite una fijación mas fuerte
entre el par pieza/objeto y el servo motor.
Ilustración 54. Conector del servo. Viene incluido con el
motor.
$11.000
Servomotor 1
Servo motor SG90 tower pro de 1.8 kg-cm de
torque. Funciona entre 3 y 7.2 V y solo puede
girar 180°. Durante su instalación se observó
que si quedaba muy apretado perdía algunos
pasos y no alcanzaba a girar 180 grados
completamente. Ilustración 55. Servomotor.
Motorreductor 1
Motorreductor DC con voltaje de
funcionamiento entre 3 y 9 V. Tiene un torque
de 1.9 kg.cm a 60 rpm.
Ilustración 56.
Motorreductor.
$17.000
Lector batería 3
Componente presente en los celulares para leer
la batería BL-5C. Basicamente consiste en tres
láminas de cobre que hacen de contacto con los
tres pines de la batería. Están dispuestos a
manera de resorte para presionar la batería
contra el socket que la almacena.
Ilustración 57. Lector de la
batería.
$3.000
55
Ensamblador 1
Esta pieza es fundamental en el diseño del
robot. Sirve para ensamblar ambas partes del
sistema de locomoción, la tracción y la
dirección. Por la parte superior se conecta la
pieza designada como “conector servo”, que va
ensamblada al eje del servo y permite el
cambio de dirección del mecanismo. Se
observa que el agujero central es de gran
tamano, pues allí debe entrar el tornillo que
asegura el conector al servo y además debe
poderse apretar con un destornillador. En la
parte inferior cuenta con agujeros para encajar
el eje. Estos agujeros no son completamente
cerrados pues de esta manera era muy dificil
insertar el eje unido a la llanta. Por eso, se deja
un espacio para insertar el eje a presión.
Ahora bien, a un lado de la pieza se tiene una
placa con tres agujeros. Esta permite la fijación
del motorreductor. El agujero sentral es para el
eje del motor y los dos tornillos laterales, de
1.6mm de diámetro son para asegurar el motor
a la placa. Finalmente al otro lado de la pieza
hay un espacio destinado al encoder de
cuadratura. Dado que esta pieza es un
componente electrónico de actuación
mecánica, no tiene un sistema de fijación y
debe soportar grandes torques. Por ende,
diseñé este espacio que encierra el encoder y
no le permite rotar en la dirección de giro de la
llanta.
Esta pieza fue fabricada en la impresora
FORM 1+ usando la tecnología
Estereolitografía. Esta hecha de resina
fotopolimérica - Metacrilato.
Ilustración 58. Pieza
ensambladora. Vista 1.
Ilustración 59. Pieza
ensambladora. Vista 2.
$30.000
Llanta 1
Al principio se pretendía uilizar la misma
llanta que venía en el mouse junto con el
encoder de cuadratura, sin embargo, esta era
muy difícil de conseguir y no siempre tenía el
mismo tamaño. Por ende, decidí utilizar una
llanta comercial de diametro 41mm, hecha de
caucho blando. Este material hacía que el
contacto de la llanta con el suelo no fuera
solamente un punto y por ende que su
cinemática no fuera tan precisa.
Ilustración 60. Llanta.
$1.000
56
Eje 1
Eje comercial que se semeja a los ejes de los
motorreductores. Diseñado con una sección
especial para que transmita la potencia y pueda
encajar en la llanta. Originalmente era un eje
de aluminio de seccion circular, para darle la
geometría fue necesario limarlo.
Ilustración 61. Eje de la llanta.
$300
Encoder de
cuadratura 1
Este encoder es una pieza rescatada de un
mouse de computador. El agujero por donde
entra el eje es de perfil hexagonal de 1mm de
arista.
Ilustración 62. Encoder de
cuadratura.
$2.000
QRD1114 6
Sensor fotoreflectivo que consta de un led
emisor y uno receptor de luz infrarroja. A 3cm
de distancia del objeto permite el paso de 1mA
por el colector del transistor receptor.
Ilustración 63. Sensores
QRD1114 implementqdos.
$15.000
Infrarrojo
TCST1103 1
Sensor infrarrojo con una distancia entre leds
de 3.1mm. Típicamente su corriente de salida
es de 2mA. Tiempo de respuesta de encendido
10us y de apagdo 8us.
Ilustración 64. Sensor
infrarrojo de herradura.
$1.200
Disco de
madera 1
Disco hecho en cartón paja. Contiene las
ranuras que medirá el sensor infrarrojo de
herradura para contar los ángulos. Posee 100
pares agujero/barrera de manera que cada
pulso de subida medido por el sensor
representa 7.2° de desplazamiento. En el
centro posee un agujero para insertar el
conector del servo. De un costado, tiene
también un espacio por donde pasan los cables
que vienen del encoder de cuadratura.
Ilustración 65. Disco giratorio
de madera para el encoder óptico.
$2.000
57
Soporte servo 1
Pieza hecha en madera de 2mm de grosor.
Tiene un agujero para insertar el servo motor y
otro dentro del cual girara el motorreductor.
Adicionalmente, cuenta con tres agujeros a los
extremos donde se insertan las guias del
sistema de suspension. Presenta una ligera
marca superficial donde se ubicara el soporte
del sensor infrarrojo de herradura. Esta
fabricado en mdf y cortado a laser.
Ilustración 66. Pieza de
madera de soporte para el servo.
$2.000
Soporte
infrarrojo 1
Pieza de madera utilizada para soportar el
sensor infrarrojo de herradura. Consiste de dos
piezas, una sobre la otra, que se pegan al
soporte del servo en el espacio destinado para
esto.
Ilustración 67. Pieza de
madera que da soporte al infrarrojo de herradura.
$1.000
Conversor eje
de la lanta 1
Dado que no se pudieron utilizar llantas de
mouse especiales para trabajar con el encoder
de cuadratura, fue necesario adaptar el eje de
la llanta a la entrada del encoder. Con esta
pieza se empalman ambos ejes. En un extremo
posee la entrada hembra del eje de la llanta y
en el otro el macho con geometría hexagonal
del encoder.
Esta pieza fue fabricada en la impresora
FORM 1+ usando la tecnología
Estereolitografía. Esta hecha de resina
fotopolimérica - Metacrilato
Ilustración 68. Hembra del
conversor del eje de la llanta..
Ilustración 69. Macho del
cnversor del eje de la lanta.
$10.000
Tapas para
resorte 3
-
$800
Tornillos
2.66mm 8
$5.000
Tornillo
1.66mm 5
Tornillo 3mm 5 Tuerca 3mm 5 Tuerca 2.66 2
58
Arduino nano 1
Es el Arduino más pequeño disponible en el
mercado. A la PCB superior se le instalaron
unos sockets para pines de manera que fuera
posible conectar y desconectar el arduino.
Ilustración 70. Arduino nano.
$40.000
Componentes
electronicos - - $15.000
Corte laser de
elementos en
madera -
- $12.600
Total $412.500 Tabla 6. Lista de piezas con su descripción y precio para un solo modulo.
Como se observa en la tabla 6, el robot cuesta en total $412.000. Este valor es
mayor que el esperado, pues las técnicas de impresión 3D e impresión de circuitos
aumentan considerablemente el precio de manufactura. En total son $193.000 en
impresión 3D y $40.000 en fabricación de circuitos. Por otro lado, en motores se
gastaron alrededor de $30.000 y en el Arduino otros $40.000. En resumen, el
costo del robot es tan grande a causa de los procesos de manufactura, los motores
y el Arduino.
7.8. Características generales del robot
En la tabla 8 se presentan las características finales del robot diseñado. Se observa
que el peso máximo arrastrado por este es casi 3 veces su peso. Adicionalmente,
se observa que el robot es más grande que el construido por García. Este último
tiene unas dimensiones de 70 x 70 x 101.6mm mientras que el diseñado en este
documento mide 100 x 84 x 75 m.
Caracteristica Valor
Peso [g] 190
Carga máxima (madera sobre madera) 1 robot [g ] 510
Carga máxima (madera sobre metal) 1 robot [g] 590
Autonomia [h] 5,2
Tamano [mm] 100 x 84 x 75
Costo por unidad [COP] 412.500 Tabla 7. Características generales del Robot.
59
8. Conclusiones
Se ha creado una primera versión del prototipo para robots enjambre capaz de
reconocer objetos y transportarlos de un lugar a otro. El robot fue fabricado por
medio de técnicas de impresión 3D y usando elementos de bajo costo como
baterías recicladas de celulares. A pesar de que se quería fabricar un robot de
bajo costo, su precio resulto siendo elevado a causa de las técnicas de impresión
3D y del desarrollo de circuitos impresos. Así mismo, se quería que el robot fuese
más pequeño que el propuesto por García, sin embargo, a causa de su
complejidad, su tamaño fue mayor.
Pese a esto, el nuevo prototipo de robot enjambre tiene varias diferencias
remarcables. En primer lugar, su sistema de locomoción es una llanta de tracción
y dirección, y tres ruedas esféricas de estabilidad. Por lo que es más fácil controlar
su trayectoria, analizar su cinemática. Además, este mecanismo le permite
desplazarse más rápidamente hacia posiciones deseadas.
Por otro lado, permite ensamblarse a otros robots mediante el uso de imanes. Estos
imanes están situados particularmente en las caras del robot, de manera que cada
robot puede conectarse a cualquier otro robot por cualquier otra cara. Así mismo,
protegen el ensamble contra las fuerzas de cizalla en una dirección, mediante un
cambio de nivel en la superficie de cada cara. Finalmente, dada su configuración
en cuartetos, impiden el fácil desensamble producido por torques en el eje vertical
del robot.
En tercer lugar, este robot puede calcular su posición instantánea a través de las
mediciones de sensores internos. Posee un encoder de cuadratura para medir el
desplazamiento angular de la llanta y un encoder óptico para medir el cambio de
dirección de la misma. Con esta información se puede calcular la posición actual
del robot relativa a su punto de inicio.
Otra característica que diferencia este robot de su versión anterior es la capacidad
de transportar objetos de un punto a otro. Este, posee un actuador más potente y
una geometría especifica que le permite empujar objetos más pesados que él
mismo. Así, logró llevar hasta 2.6 veces su propio peso cuando transportaba
objetos de madera sobre madera, y hasta 3.1 veces su peso cuando transportaba
objetos de madera sobre metal.
En este mismo orden de ideas, una característica fundamental del robot aquí
implementado es su control interno basado en comportamientos. Entre los
comportamientos que puede llevar a cabo se encuentran obstacle avoidance, auto-
ensamblado y move objects. Existen otros comportamientos que no fueron
evaluados, pero de los cuales se propuso una metodología y algunos algoritmos,
como: go-to-goal, path planning, area coverage y communication.
60
Ahora bien, dado que se trata de un primer prototipo, el robot aun cuenta con
varias tareas a implementar. A continuación, presentaré algunas ideas de posibles
mejoras que se le pueden hacer al robot para convertirlo en un verdadero enjambre
funcional.
Las PCB de tapa inferior y superior, y la ubicación de los actuadores
y baterías, fueron un problema la hora de ensamblar el robot. Estas
introducían una gran cantidad de cables que atravesaban casi
transversalmente el robot, limitando su modularidad y su fácil
ensamblado. Se recomienda entonces para futuros trabajos, mejorar el
diseño de ambas PCB. Para esto, es posible utilizar dispositivos
superficiales para elementos como el puente H (L298n). También,
utilizar un microprocesador en lugar de una tarjeta ya diseñada como
el Arduino. Además, se podría cambiar la ubicación de las baterías de
manera que el lector quede más cerca de la PCB superior. Incluso, se
podría diseñar un sistema tal que, al encajar la tapa, la PCB se
conectara automáticamente a los lectores de baterías, sin necesidad de
cables.
Por otro lado, es posible mejorar las PCB adicionando nuevas
funcionalidades a la misma. Por ejemplo, implementando un circuito
de carga y control para las baterías, de manera que el robot se vuelva
recargable, o la implementación de una transreceptor o un módulo
zigbee capaz de permitir la comunicación entre robots.
Una de las mejoras más fuertes que puede tener el robot es la
capacidad de realizar diferentes funciones que no fueron
implementadas o evaluadas durante este proyecto. Entre estas están:
el diseño e implementación un código que permita la inspección de un
terreno y el reconocimiento de los objetos sobre él; el diseño e
implementación de un sistema de comunicación basado en protocolo
Zigbee; la implementación de algoritmos de transporte colectivo de
objetos pesados; la implementación y prueba de métodos de
corrección de posición, que permitan al robot desarrollar un
comportamiento de go-to-goal exacto y preciso.
Finalmente, a nivel mecánico también existen posibles correcciones.
A pesar de que los encoder fueron testeados y funcionan
correctamente, son dispositivos que aún tienen errores de fabricación.
Por ende, se propone buscar en el mercado encoders más
especializados y mejor fabricados. También, se podrían cambiar los
sensores infrarrojos QRD1114, dado que su alcance es muy corto. Así
mismo, se debe diseñar en un futuro un sistema de suspensión más
homogéneo y más fácil de implementar. Finalmente, se puede añadir
algún sensor de contacto o de proximidad que permita a cada módulo
saber si un amigo se ha auto-ensamblado para ayudarle en su tarea de
transporte.
61
9. Referencias
[1] V. Trianni, Evolutionary Swarm Robotics: Evolving self-organising Behaviours in Groups of
Autonomous robots, Roma, Italia: Springer-Verlag Berlin Heidelberg, 2008.
[2] E. Sahin, Swarm robotics: from sources of inspiration to domains of application, Ankara,
Turkey: Middle East Technical University, 2005.
[3] J. Liu et J. Wu, Multi-agent Robotic Systems, BocaRaton, Florida: CRC Press LLC, 2001.
[4] E. G. García, «Desarrollo de un robot prototipo para robótica de enjambres,» Universidad de
Los Andes, Bogotá, 2010.
[5] R. Groß et M. Dorigo, «Towards group transport by swarms of robots,» International journal
of bio-inspired computation, vol. 1, n° %11/2, 2009.
[6] S. Torabi, «Collective transportation of objects by a swarm of robots,» Chalmers university of
technology, G•oteborg, Sweden, 2015.
[7] R. Kube et E. Bonabeau, «Cooperative transport by ants and robots,» Robotics and
autonomous systems, vol. 30, pp. 85-101, 2000.
[8] J. Fink, A. Hsieh et V. Kumar, «Multi-Robot Manipulation Via Caging in Environments with
obstacles,» University of Pennsylvania, Philadelphia, 2008.
[9] E. Krick, Introducción a la ingeniería y al diseño en ingeniería, Mexico D.F.: Limusa, 2010.
[10] J. Jones y A. Flynn, Mobile robots: inspiration to implementation, Natick, MA: A.K. Peters Ltd,
1999.
[11] L. Cherroun y M. Boumehraz, «Fuzzy behavior based navigation approach for mobile robot in
unknown environment,» Journal of electrical Engineering, 2013.
[12] R. Siegwart, I. Nourbakhsh y D. Scaramuzza, Introduction to autonomous mobile robots,
Massachusetts: Massachusetts institute of technology, 2011.
[13] Y. Gabriely et E. Rimon, «Spanning-tree based Coverage of continuous Areas by a Mobile
Robot,» Technion, Israel Institute of technology, 1999.
[14] I. Susnea, V. Minzu et G. Vasiliu, «Simple, Real-Time Obstacle Avoidance Algorithm for
Mobile Robots,» chez CIMMACS'09 Proceedings of the 8th WSEAS International Conference
on Computational intelligence, man-machine systems and cybernetics, Puerto De La Cruz,
Tenerife, Canary Islands, Spain, 2009.
[15] M. I. Ribeiro, «Obstacle Avoidance,» 2005.
62
[16] T. Fukuda et S. Nakagawa, «Method of autonomous approach, docking and detaching
between cells for dynamically reconfigurable robotic system CEBOT,» JSME, vol. 33, n° %12,
pp. 263-268, 1990.
[17] R. Groß, «Self-Assembling Robots,» Universite Libre de Bruxelles, Bruxelles, Belgium, 2008.
[18] F. Mondada, M. Bonani, S. Magnenat, A. Guignard et D. Floreano, «Physical connections and
cooperation in swarm robotics,» chez 8th Conference on Intelligent Autonomous Systems,
Amsterdam, Netherlands, 2004.
[19] J. Walter, J. Welch et N. Amato, «Concurrent metamorphosis of hexagonal robot chains into
simple connected con¯gurations,» IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION,
vol. 18, n° %16, pp. 945 - 956, 2002.
[20] M. Benitez, «Prótesis funcional de mano con control y retroalimentación de fuerza,»
Universidad de Los Andes, Bogotá, Colombia, 2016.
63
10. Anexos
10.1. Esquemáticos
Ilustración 71. Esquemático de la PCB superior.
64
Ilustración 72. Esquemático de la PCB inferior.
65
Ilustración 73. PCB superior.
Ilustración 74. PCB inferior.
66
10.2. Códigos
Código completo
#include <Servo.h>
#include <math.h>
/*------------------------------------------------------------
---------------------------------------------------
VARIABLES*/
enum PinAssignments {
encoderPinA = 2, // rigth
encoderPinB = 3, // left
clearButton = 5, // another two pins
beginButton = 12,
PWM_servo = 11,
IN2 = 10,
encoderServo = 4,
IN1 = 9
};
Servo myservo;
//Contadores y señales del encoder de cuadratura
volatile int encoderPos = 0; // a counter for the dial
unsigned int lastReportedPos = 1; // change management
static boolean rotating=false; // debounce management
// variables de rutina del servicio de interrupción
boolean A_set = false;
boolean B_set = false;
boolean E_state, lastE_state;
int phi_act, deg, n, x0, y0, x1, y1;
double phi_ref, pi, d_ref, d, r, P, I1, I2, I_sum, w_up, diff,
D1, D2, D_sum, D, PID, control_reductor, output_reductor, Ki,
Kp, Kd, K_back, Factor, N;
/*------------------------------------------------------------
--------------------------------------------------- SETUP*/
void setup() {
//variables encoder distancia
pinMode(encoderPinA, INPUT_PULLUP);
pinMode(encoderServo, INPUT_PULLUP);
myservo.attach(PWM_servo);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(encoderPinB, INPUT_PULLUP);
pinMode(clearButton, INPUT_PULLUP);
pinMode(beginButton, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), doEncoderA,
CHANGE);
attachInterrupt(digitalPinToInterrupt(3), doEncoderB,
CHANGE);
inicializar ();
67
//funciones
Serial.begin(9600); // output
}
/*------------------------------------------------------------
--------------------------------------------------- LOOP*/
void loop() {
rotating = true; // reset the debouncer
//actualiza la posición del encoder de la llanta
if (lastReportedPos != encoderPos) {
lastReportedPos = encoderPos; }
if (digitalRead(clearButton) == LOW ) {
encoderPos = 0;
}
//si se oprime el botón el arduino va a la posición deseada
if (digitalRead(beginButton) == LOW ) {
while (x0!=x1 && y0!=y1){
lastE_state=digitalRead(encoderServo);
calculate(x1,y1,x0,y0);
if (phi_ref < 0){
phi_ref += pi;
}
deg = ((phi_ref)*180)/pi;
deg = round(deg);
while (phi_act != deg){
if (phi_act < deg){
n +=1;
myservo.write(n);
delay(40);
E_state = digitalRead(encoderServo);
if (E_state != lastE_state){
phi_act += 1;
n = phi_act;
}
lastE_state=E_state;
}
else if (phi_act > deg){
n -=1;
if (n<0){
n=0;
}
myservo.write(n);
delay(40);
E_state = digitalRead(encoderServo);
if (E_state != lastE_state){
phi_act -= 1;
n = phi_act;
}
lastE_state=E_state;
}
}
PID_d(d_ref);
output_reductor=map(control_reductor,0, 12, 0, 255);
if (y1-y0 >=0){
68
analogWrite(IN1,output_reductor);
analogWrite(IN2,0);
}
else{
analogWrite(IN2,output_reductor);
analogWrite(IN1,0);
}
delay (100);
analogWrite(IN1,0);
analogWrite(IN2,0);
d=((Factor*abs(encoderPos))/360)*2*pi*r;
x0 += d*cos(phi_ref);
y0 += d*sin(phi_ref);
encoderPos=0;
}
}
}
/*------------------------------------------------------------
---------------------------------------------------
doEncoderA*/
// Interrupt on A changing state
void doEncoderA(){
// debounce
if ( rotating ) delay (1); // wait a little until the
bouncing is done
// Test transition, did things really change?
if( digitalRead(encoderPinA) != A_set ) { // debounce once
more
A_set = !A_set;
// adjust counter + if A leads B
if ( A_set && !B_set )
encoderPos += 1;
rotating = false; // no more debouncing until loop() hits
again
}
}
/*------------------------------------------------------------
---------------------------------------------------
doEncoderB*/
// Interrupt on B changing state, same as A above
void doEncoderB(){
if ( rotating ) delay (1);
if( digitalRead(encoderPinB) != B_set ) {
B_set = !B_set;
// adjust counter - 1 if B leads A
if( B_set && !A_set )
encoderPos -= 1;
rotating = false;
}
}
69
/*------------------------------------------------------------
---------------------------------------------------
INICIALIZAR*/
void inicializar(){
E_state = false;
lastE_state = false;
phi_act = 0;
deg = 0;
n = 0;
phi_ref = 0;
pi = 3.1415;
d_ref = 0;
d = 0;
x0 = 0;
y0 = 0;
x1 = 0;
y1 = 0;
r = 1.17;
P = 0;
I1 = 0;
I2 = 0;
I_sum = 0;
w_up = 0;
diff = 0;
D1 = 0;
D2 = 0;
D_sum = 0;
D = 0;
PID = 0;
control_reductor = 0;
output_reductor = 0;
Ki = 13.4;
Kp = 268.1;
Kd = -13;
K_back = 1;
N = 5.71;
Factor = 24;
myservo.write(0);
delay(1000);
}
/*------------------------------------------------------------
---------------------------------------------------
CALCULATE*/
// Calcula la distancia y el ángulo del goal
void calculate (double xf, double yf, double xi, double yi)
{
double dx = xf - xi;
double dy = yf - yi;
d_ref = sqrt((dx*dx)+(dy*dy));
phi_ref = atan2(dy,dx);
}
/*------------------------------------------------------------
--------------------------------------------------- PID*/
void PID_d (double err){
P = Kp*err;
70
I1 = Ki*err;
w_up = K_back* diff;
I2 = I1 + w_up;
double D1 = Kd*err;
double D2 = D1 - D_sum;
D = D2*N;
D_sum += D;
PID = P + I_sum + D;
I_sum += I2;
/* saturación de la entrada al motor*/
if (PID > 12)
{
control_reductor = 12;
}
else if (PID < 0)
{
control_reductor = 0;
}
else
{
control_reductor = PID;
}
diff= control_reductor - PID;
}
Obstacle avoidance
#include <Servo.h>
enum PinAssignments {
PWM_servo = 11,
IN2 = 10,
encoderServo = 4,
IR1 = A0,
IR2 = A1,
IR3 = A2,
IR4 = A3,
IR5 = A4,
IR6 = A5,
IN1 = 9
};
Servo myservo;
boolean dir, moving;
int S1=0, S2=0, S3=0, S4=0, S5=0, S6=0, phi=0;
void setup() {
myservo.attach(PWM_servo);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
}
void loop() {
obstacles();
degree();
71
if (moving == true){
direccion();
myservo.write(phi);
delay(600);
if (dir == true){
analogWrite(IN1,255);
analogWrite(IN2,0);
}
else if (dir == false){
analogWrite(IN2,255);
analogWrite(IN1,0);
}
delay (100);
analogWrite(IN1,0);
analogWrite(IN2,0);
}
moving = true;
}
void obstacles(){
if (analogRead(IR1) > 512){
S1 = 1; }
else{
S1 = 0; }
if (analogRead(IR2) > 512){
S2 = 1; }
else{
S2 = 0; }
if (analogRead(IR3) > 512){
S3 = 1; }
else{
S3 = 0; }
if (analogRead(IR4) < 900){
S4 = 1; }
else{
S4 = 0; }
if (analogRead(IR5) > 512){
S5 = 1; }
else{
S5 = 0; }
if (analogRead(IR6) > 512){
S6 = 1; }
else{
S6 = 0; }
}
void degree(){
if (S1*S2*S6 == 1 && S3*S4*S5 ==0 || S3*S4*S5 == 1 &&
S2*S1*S6 == 0){
phi = 90;
}
else if (S1*S2*S3 == 1 && S4*S5*S6 ==0 || S4*S5*S6 == 1 &&
S1*S2*S3 == 0){
phi = 30;
}
else if (S1*S3*S6*S5 == 1 && S2*S4 ==0 || S2*S3*S4*S6 == 1 &&
S1*S5 == 0){
72
phi = 150;
}
else if (S1*S2 == 1 && S3*S4*S5*S6 ==0 || S4*S5 == 1 &&
S2*S1*S3*S6 == 0){
phi = 60;
}
else if (S2*S3 == 1 && S1*S4*S5*S6 ==0 || S5*S6 == 1 &&
S1*S2*S3*S4 == 0){
phi = 0;
}
else if (S1*S6 == 1 && S2*S3*S4*S5 ==0 || S3*S4 == 1 &&
S2*S1*S6*S5 == 0){
phi = 120;
}
else if(S1*S2*S3*S4*S5*S6 == 0){
moving = false;
}
}
void direccion (){
if (S4 == 0){
if (S1*S2*S3 == 0){
dir = true;
}
else{
dir = false;
}
}
else{
dir = true;
}
}
10.3. Planos
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de Grado CarcazaMaterial:PLA
CANT:
2 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil [email protected] 3007540652
Proyecto de gradoJonathan Camargo
74,5
74,5
65,2
H ( 2 : 1 )
J-J ( 1 : 1 )
H
JJ
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de grado IMEC TapaMaterial:PLA
CANT:
1 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil Romero 201215413af.villamil231 3502491320
Proyecto de gradoJonathan Camargo
5,0
4,8
4,0
4,0
90,0°
R2,5
3,2
R3,0
5,5
2,7
2,0
5,5
2,7
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de Grado EncoderMaterial:Resina
CANT:
7 A4 Escala:
10:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
4.9 x 4.9 x 9 mm
Andrés Felipe Villamil [email protected] 3007540652
Proyecto de gradoJonathan Camargo
4,8
4,0
1,0
R1,0R1,0
5,0
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de Grado Engranajes BiseladosMaterial:Resina
CANT:
5 de c/u A4 Escala:
2:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil [email protected] 3007540652
Proyecto de gradoJonathan Camargo
R7,0
R1,5
2,13,9
R8,3R1,5
2,1 3,6
Engranaje biselado 12 Engranaje biselado 22
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de Grado EnsambladorMaterial:Resina
CANT:
4 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil [email protected] 3007540652
Proyecto de gradoJonathan Camargo
3,1
5,0
2,7
8,0 11,4
12,0 4,5
22,8
13,0 2,0 16,0 2,0
40,02,0
2,0
7,0
R1,6
1,923,0
15,9
11,5
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de grado IMEC Soporte servoMaterial:Madera
CANT:
1 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil Romero 201215413af.villamil231 3502491320
Proyecto de gradoJonathan Camargo
2,0
59,8
34,55,5
1,8R2,5
22,3
11,8
11,4
24,0
2,9
4,7
R1,3 R7,6
17,39,9
R12,4
R27,5
8,0
10,6
11,3
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de grado IMEC PCB inferiorMaterial:Baquela
CANT:
1 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil Romero 201215413af.villamil231 3502491320
Proyecto de gradoJonathan Camargo
1,6
R22,5
71,0
41,0
9,0
35,82,3
R1,6
R6,3
4,0
4,7
4,4 18,3
Las líneas punteadas indican marcas superficiales
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de grado IMEC PCB superiorMaterial:Baquela
CANT:
1 A4 Escala:
1:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil Romero 201215413af.villamil231 3502491320
Proyecto de gradoJonathan Camargo
65,8
1,7
8,6
6,0
3,0
5,03,0
8,7
3,0
3,9
13,8
7,0
25,6
19,0
1,8
3,1
R3,3
R1,625
,6
25,5
5,610,07,0
7,0
5,0
38,0
16,2
7,0
5,0
3,4
2,9
1
1
2
2
A A
B B
Rev.
Plan
oRe
v. Té
cnico
de La
bora
torio
Facultad de IngenieríaDepto. Ing. Mecánica
Nombre del proyecto: Nombre de la pieza:Proyecto de grado IMEC Disco EncoderMaterial:Carton Paja
CANT:
1 A4 Escala:
2:1Código plano:
Unidades en [mm] - Ángulos en [°]Tolerancia General: ± 0,5 mm y ± 1°
TIEMPO COSTOEQUIPO
Nombre del Estudiante: Código:E-mail: Celular:Nombre del Curso:Nombre Profesor:
Observaciones: Fecha Solicitud Servicio: Fecha Reserva Servicio:
Dimensiones Materia Prima:
Andrés Felipe Villamil Romero 201215413af.villamil231 3502491320
Proyecto de gradoJonathan Camargo
1,2
R24,5
R1,3
9,0
3,010,04,5
8,0
83,0° R4,1
48,5°
En total son 100 agujeros al rededor del circulo central