Conceptos generales para el diseƱo de Robots

 

Esta es una pequeƱa guiĆ” que le servia a las personas que estĆ©n empezando en el diseƱo de robots no es un tutorial de diseƱo, solamente una introducciĆ³n a los puntos claves del proceso de diseƱo que a lo largo de mis estudios de maestrĆ­a y doctorado he empleado, no estĆ” basado en estrictamente en algĆŗn otro patrĆ³n de diseƱo aunque si tomo inspiraciĆ³n y varias partes de otros procesos mĆ”s estructurados, es importante remarcar que no estĆ” escrito en piedra y uno debe ser flexible con sus procesos para llegar al mejor resultado.

 

Voy a utilizar como ejemplo el robot Ein, este robot lo construĆ­ poco antes de la pandemia del 2020 a peticiĆ³n de mi asesor de tesis para que los alumnos del curso de visiĆ³n por computadora pudieran probar una serie de implementaciones de los mĆ©todos en problemas del mundo real (hablando de en la implementaciĆ³n en un hardware y los retos que esto trae), este es uno de los robots en los que me ha gustado mĆ”s trabajar debido a que aun con su aparente simplicidad de diseƱo da pie a muchas posibles implementaciones mĆ”s allĆ” de su propĆ³sito original, entre las que resaltan la enseƱanza de ROS, la prueba de algoritmos de navegaciĆ³n y como una plataforma de pruebas para generar bancos de datos con sensores.

 

0. Prototipo para pruebas o producciĆ³n en serie.

Antes de empezar con el proceso de diseƱo hay que considerar si es un prototipo de pruebas o un robot para producciĆ³n, generalmente en la mayorĆ­a de las universidades no se profundiza en este punto lo que puede llevar a grandes problemas cuando se emprende un proyecto.

 

Hay que tomar en cuenta que un prototipo para pruebas sirve para desarrollar tecnologĆ­as o probar nuevos algoritmos, por lo cual no se plantea su producciĆ³n en serie, esto significa que no hace falta seguir modelos estandarizados para su manufactura, tambiĆ©n brinda una mayor flexibilidad en el proceso de construcciĆ³n y su costo por unidad suele ser relativamente alto. 

 

Generalmente los prototipos de prueba los podemos encontrar en laboratorios o centros de investigaciĆ³n, normalmente los robots que desarrolla un estudiante durante su tesis de posgrado caen en esta categorĆ­a.

 

Por otro lado tenemos los modelos para producciĆ³n en serie, en este caso cuando un modelo va a ser producido en serie es importante que la tecnologĆ­a que se va a implementar este probada y documentada ya que un error en el modelo original sera repetido en los cientos o miles de unidades que se construyan a partir de Ć©l. Los modelos para producciĆ³n en serie deben considerar en su diseƱo la tecnologĆ­a de manufactura que se utilizara, el costo de producciĆ³n por unidad, aspectos legales como los derechos de autor y patentes que se emplearan, la asequibilidad (affordance), el publico al que este dirigido, etc...

 

Dentro de los modelos para producciĆ³n en serie se suelen crear tambiĆ©n prototipos, los cuales asemejan al producto final, estos con el fin de validar el diseƱo y el mĆ©todo de manufactura elegido.

 

Generalmente cuando se diseƱa un nuevo robot se suele partir de un prototipo de pruebas para validar la propuesta, una vez verificados los aspectos generales y la factibilidad se suele pasar a la producciĆ³n en serie con la creaciĆ³n del modelo que sera maquinado, hay que tomar en cuenta que en el mundo real raramente el proceso es tan lineal, generalmente se prueban varias propuestas y se desarrollan varios prototipos en distintas etapas, por eso es importante no perder la visiĆ³n del proyecto a la vez que se permite una flexibilidad en el proceso de desarrollo, el lograr balancear estos dos aspectos es fundamental para poder concluir un proyecto en un tiempo optimo y con los resultados esperados por lo cual recomiendo periĆ³dicamente tomarse un tiempo para reflexionar sobre el curso del desarrollo y tratar de ver el panorama general.

 

1. PropĆ³sito y recursos.

El primer paso para poder construir un robot es definir cual es su propĆ³sito, existen dos enfoques para esta etapa, el primero es definir directamente que funciones queremos que realice el robot por ejemplo “un robot diferencial que siga trayectorias” o “un brazo robĆ³tico de 5 grados de libertad”, el segundo enfoque surge de un problema o necesidad como “un robot repartidor” o “un sistema que pueda ordenar los productos en un estante”, el segundo enfoque suele ser mucho mĆ”s complejo ya que hay que desglosar y analizar el problema pero tambiĆ©n suelen ser los mĆ”s divertidos para trabajar.

 

Las herramientas del diseƱo industrial se vuelven muy Ćŗtiles en esta etapa, hay que determinar cuales van a ser las cualidades que queremos en nuestro robot, posteriormente procederemos a revisar de estas cualidades podrĆ­an llegar a ser opuestas y rehacer el listado hasta obtener un conjunto que creamos conveniente.

 

Se realizan una serie de bocetos para poder visualizar cuales son las posibles propuestas que tengan las cualidades que estamos buscando en nuestro diseƱo, tambiĆ©n conviene iterar sobre las que nos parezcan mĆ”s prometedoras, en esta etapa conviene comenzar a considerar la asequibilidad y el “Woow” factor (asĆ­ se le dice a las caracterĆ­sticas del diseƱo que sirven para sorprender a los usuarios, por lo general estĆ”s caracterĆ­sticas pueden parecer algo banales pero en mi experiencia suelen ser fundamentales para el Ć©xito de un proyecto), siempre es buena idea guardar los bocetos y ponerles la fecha y nombre.

 

En esta etapa hay que revisar cuales son los recursos con los que contamos para la fabricaciĆ³n, incluyendo las maquinas, herramientas, presupuesto y tiempo, asĆ­ como los procesos que se utilizaran.

 

Se construyen los prototipos de los diseƱos mĆ”s prometedores, cuando se realiza un robot para el Ć”rea acadĆ©mica solemos construir solamente un diseƱo, en el caso de la industria se suelen construir varios prototipos, uno por cada uno de los bocetos, con un prototipo es mucho mĆ”s sencillo ver las posibles fallas, si se trata de un robot que se va a comercializar se utiliza el mejor de los prototipos como base para el modelo de producciĆ³n, generalmente del prototipo de pruebas al modelo de producciĆ³n sĆ© realizar cambios significativos, se afinan los detalles del producto, esto para que el resultado final pueda ser manufacturado en serie y que sea de uso practico para el usuario.

 

2. Partes fundamentales de un robot.

Las secciones previas suelen ser batane generales para el diseƱo y se pueden aplicar en casi cualquier cosa, pero a partir de esta secciĆ³n me enfocare mĆ”s en las particularidades que conlleva un robot.

 

Antes de seguir adelante hay que definir que es un robot, realmente no existe una definiciĆ³n universalmente aceptada de lo que es un robot, a mĆ­ me gusta utilizar la que da IEEE A robot is an autonomous machine capable of sensing its environment, carrying out computations to make decisions, and performing actions in the real world., partiendo de esta definiciĆ³n podemos empezar a delimitar las partes que requiere un robot.

 

La primera son los actuadores, estos son los que proporcionan al robot la capacidad de moverse y realizar las diferentes tareas que tenga asignadas, en este caso podemos hablar desde actuadores neumƔticos, motores de corriente directa, servomecanismos por dar unos ejemplos.

 

Los sensores tienen la funciĆ³n de darle al robot una manera de poder percibir el mundo, estos pueden ser desde botones, sensores ultrasonicos, sensores lĆ”ser, de temperatura o IMU, entre muchos otros, dependerĆ” de la aplicaciĆ³n y el ambiente en el que este pensado su uso.

 

La estructura es otra de las partes fundamentales del robot, la cual debe proveer el soporte y le da su morfologĆ­a al robot, tambiĆ©n esta definida por el ambiente y funciĆ³n que despeƱara el robot, hay ocasiones en la que su importancia es especialmente relevante, como en el caso de la robĆ³tica social.

 

La fuente de poder y etapa de potencia estĆ”n conformadas por las baterĆ­as, la tarjeta de distribuciĆ³n y el amplificador de corriente. Las baterĆ­as suelen variar segĆŗn las necesidades desde unas de reloj a las de plomo, la mayorĆ­a de las veces se utilizan baterĆ­as de litio polĆ­mero debido a su alta densidad energĆ©tica, la tarjeta de distribuciĆ³n es la que se encarga de regular el voltaje de la baterĆ­a para poder alimentar los distintos componentes del robot, esta suele ser un BEC y finalmente el amplificador de corriente es el encargado de amplificar la seƱal de control que controla los motores, comĆŗnmente se utilizan puentes h para esta etapa pero se pueden utilizar drivers de alta corriente incluso arreglos con opto-acopladores.

 

Finalmente tenemos el cerebro de nuestro robot, generalmente es un microcontrolador aunque tambiĆ©n suelen utilizarse plataformas de desarrollo como Arduino o Raspberry pi, incluso en algunos casos puede utilizar un arreglo de transistores u opams como es el caso del robot Tortoise creado por  W. Grey Walter.

 

 

Robot Tortoise.

 

Depende de la complejidad del desarrollo un robot se puede reducir a un motor, un sensor de distancia y un arreglo de opams o llegar a tener varios sistemas de cĆ³mputo embebido con mĆ”s de 20 actuadores y diferentes tarjetas de distribuciĆ³n.

 

3. SimulaciĆ³n y modelado.

Una parte muy importante del desarrollo de robots es la simulaciĆ³n y modelado, esta etapa consta de realizar un modelo matemĆ”tico que represente la movilidad y caracterĆ­sticas del robot con el fin de poder validar sus movimientos o trayectorias, probar si serĆ” capaz de cumplir sus funciones y servir como una plataforma para desarrollar el software, hay que tomar en cuenta que generalmente el desarrollo de un robot es algo costoso por lo que vale la pena realizar la simulaciĆ³n, esta etapa nos las podemos salta cuando se traten de robots muy sencillos para problemas conocidos, aunque siempre es bueno tener el modelo.

 

Cuando hablamos del desarrollo del modelo del robot podemos hablar desde el mĆ”s sencillo que es la cinemĆ”tica directa hasta el anĆ”lisis de espacio de estados o en casos mĆ”s exĆ³ticos teorĆ­a de tornillos.

 

Para poder llevar a cabo estas simulaciones se suele utilizar Matlab, Python con el paquete pybullet, o en casos mƔs complejos se suele usar gasebo, existen otras alternativas como las que brinda juliarobotics.

4. Software.

Como se podrĆ” notar se pueden realizar robots que no dependan del software, como es el tortoise o varios ejemplos en el campo del softrobotics , pero la gran mayorĆ­a de los robots dependen del software, los robots mĆ”s sencillos suelen programarse en Ensamblador, en C o Python sin ningĆŗn paradigma especifico aunque muchos se enfocan a utilizar la programaciĆ³n funcional, para robots con mĆ”s componentes o tareas mĆ”s complejas se suele utilizar el modelo de descomposiciĆ³n funcional, lo cual facilita mucho el proceso aunque puede parecer algo engorroso al principio, este enfoque busca dividir a las tareas en subrutinas, a la vez estas en procesos, de manera que una tarea muy compleja sea vista como una serie de procesos mĆ”s sencillos.

 

Para el uso de la descomposiciĆ³n funcional se suele utilizar ROS (Robotic Operating System) el cual es un framework que soporta C y Python con cierto soporte no oficial para Java y Julia, este framework se ha vuelto un estĆ”ndar dentro de la academia y se cree pronto sera una norma en la industria.

 

Dentro del diseƱo del software hay que tomar en cuenta si se va a montar en un RTOS (Real Time Operating System), en una computer on a board o en un microcontrolador, tambiĆ©n se debe de tener en cuenta el tipo de sensores y aplicaciĆ³n que se plantea realizar, muchas veces se suele utilizar un microcontrolador para controlar los procesos que requieren una respuesta mĆ”s rĆ”pida mientras que una computer on a board para el procesamiento de los datos mĆ”s complejos y la toma de decisiones.

 

5. ImplementaciĆ³n y caso de estudio.

Ejemplificando el proceso de diseƱo y construcciĆ³n hablare un poco sobre Ein, Ein es un pequeƱo robot que surgiĆ³ de una conversaciĆ³n con mi asesor, en esa Ć©poca estaba diseƱando unos robots (calico) para un proyecto del IPN, hablando sobre ese proyecto y su clase de visiĆ³n por computadora me pidiĆ³ que desarrollara un robot para poder realizar practicas de visiĆ³n por computada, el cual se hiciera utilizando en lo posible los materiales disponibles en el laboratorio.

 

Como se trataba de un robot para uso del laboratorio descarte por completo la producciĆ³n en serie, aunque decidĆ­ hacerlo sencillo y fĆ”cil de reproducir, por si en el futuro hicieran falta hacerle reparaciones o duplicarlo por completo, para el mĆ©todo de manufactura decidĆ­ utilizar la impresora 3d del laboratorio por practicidad, tomando en cuenta que harĆ­a falta procesar video escogĆ­ una Raspberry Pi 4 como computadora, esto tambiĆ©n fija los parĆ”metros que debe cumplir la etapa de potencia especialmente para un robot de tamaƱo pequeƱo como es el caso, los motores son un par de Dynamixel Ax-12 los cuales son de excelente calidad y se encontraban en el laboratorio, finalmente un Arduino nano esto debido a mi experiencia previa con Raspberry con comunicaciĆ³n serial la cual es requerida para controlar los motores, esto debido a que el modulo que genera la comunicaciĆ³n serial en Raspberry pi para el GPIO suele tener problemas para comunicarse con los motores.

 

En ese momento me di cuenta que el hardware y los requerimientos para el proyecto son compatibles con un robot sencillo capaz de realizar navegaciĆ³n, lo cual abre la puerta para una plataforma de desarrollo bastante interesante muy parecido a un turtlebot por lo que decidĆ­ tomar este rumbo.

 

Con el propĆ³sito y los recursos bien definidos empece a realizar el diseƱo, elegĆ­ un robot diferencial ya que es fĆ”cil de modelar y construir, ademas para el caso brinda mucha flexibilidad, realice varios bocetos de como podrĆ­a ir la forma general, al final elegĆ­ hacer 2 placas hexagonales conectadas por tornillos con un castor ball en cada extremo.

 

Con una forma general definida empece a seleccionar los componentes especĆ­ficos que me hacĆ­an falta y considerar su distribuciĆ³n dentro del chasis, finalmente elegĆ­ utilizar una baterĆ­a de lipo de 11.1v para alimentar el sistema de igual manera una fuente conmutada tipo buck con salida de 5 volts para alimentar los 3 amperes que requiere la Raspberry, una pequeƱa protoboard a cada lado de la placa inferior para poder conectar el Arduino nano y facilitar el cableado, asĆ­ como varias ranuras para reducir el tiempo de impresiĆ³n y poder atornillar futuros mĆ³dulos.


Realice el diseƱo utilizando freecad para generar el archivo de impresiĆ³n, finalmente el robot quedo terminado en cuestiĆ³n de un par de semanas, mĆ”s que otra cosa porque la impresora estaba ocupada esos dĆ­as, lo que faltaba era el software.



Robot Ein.

 

Pensando que faltaba tiempo para el final de semestre (cuando los alumnos de la clase de visiĆ³n lo utilizarĆ­an) decidĆ­ instalarle ROS para probar unas posibles aplicaciones, lo primero que hice fue un nodo que permitiera leer una trayectoria desde un archivo .txt, esto para probar que todo funcionara correctamente, tambiĆ©n probĆ© la cĆ”mara, unos compaƱeros del laboratorio hicieron unas pruebas instalĆ”ndole tensor flow para reconocer objetos utilizando una red neuronal, por esas fechas empezĆ³ el confinamiento debido a la pandemia de COVID-19, por lo que el trabajo quedo suspendido hasta hace poco.

    

Ein ejecutando ROS.


                                Prueba del robot Ein
 

En marzo regresamos a actividades presenciales en el IPN, asĆ­ que decidĆ­ retomar el desarrollo del robot, aunque ya es una plataforma bastante capaz aĆŗn hacen falta desarrollar el software para que los alumnos de la clase de visiĆ³n puedan utilizarlo en sus prĆ”cticas, tambiĆ©n cambie la etapa de potencia y la baterĆ­a que se encontraban gastadas, finalmente le puse una cĆ”mara Pro de Raspberry, entre otros pequeƱos cambios. 



VersiĆ³n actual de Ein.

 

Ein fue utilizado para generar datos de sensor con el propĆ³sito de probar un filtro que estĆ” desarrollando un colega del posgrado, se le monto una IMU, en este momento la prioridad concerniente a Ein estĆ” en escribir una guiĆ” de usuario y manual de ensamblaje para que se pueda replicar, la idea es subir este material de manera gratuita al repositorio del proyecto con la idea de facilitar el trabajo a las personas que requieran un robot con estas caracterĆ­sticas y deseen replicarlo. TambiĆ©n he pensado en ponerle un LIDAR y empezar a probar algoritmos de navegaciĆ³n mĆ”s interesantes.


 

Espero que este blog les pareciera interesante y que les sea de utilidad, el repositorio aĆŗn estĆ” en un estado muy temprano pero pueden descargar los modelos de las placas ahĆ­, posteriormente se ira actualizando con los manuales y proyectos en los que se utilice.

 

Les dejo estos links relacionados al tema.
IEEE Robots https://robots.ieee.org/

 

Libro sobre asequibilidad https://www.amazon.com.mx/Design-Everyday-Things-Don-Norman/dp/0465050654/ref=sr_1_16?__mk_es_MX=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1AQW15WU3QX4P&keywords=affordance&qid=1650335655&s=books&sprefix=affordance%2Cstripbooks%2C102&sr=1-16 

 

Curso de diseƱo https://www.coursera.org/learn/design/home/welcome
Patrones de diseƱo https://refactoring.guru/es/design-patterns/catalog

 
 

Hablando de robĆ³tica, este aƱo empezĆ³ muy bien, la verdad me gusta mucho trabajar en el diseƱo de robots y todo lo relacionado pero no siempre es posible, aun asĆ­ este aƱo me encuentro dando clases de robĆ³tica mĆ³vil, ademĆ”s de que en la escuela estamos organizando un club de robĆ³tica, pude retomar el trabajo con Ein y estoy trabajando en un robot para poder empezar un negocio con el (espero tenerles noticias pronto), entre muchas otras oportunidades y aunque siento que me estoy tardando me gustarĆ­a publicar un pequeƱo libro de introducciĆ³n a la robĆ³tica donde poder profundizar mĆ”s en estos temas e incluir otros como la navegaciĆ³n o el uso del cĆ³mputo suave ademĆ”s de ayudar a los nuevos en el Ć”rea en cada paso del proceso de diseƱo y construcciĆ³n.


Hablando de otros temas espero pronto hacer una entrada sobre la vida diaria de mis gatitas y "ProgramaciĆ³n en Julia Pt3:ROS", asĆ­ como otras ideas que tengo por lo que espero estar mĆ”s activo en este blog, ya tenia mĆ”s de un aƱo que no publicaba, la verdad el trabajo y la escuela no me han dejado tanto tiempo libre como quisiera pero me gusta bastante como van avanzando las cosas.

 
Si les gusto el blog y quisieran apoyarme pueden invitarme un cafĆ© dando click en el botĆ³n que se encuentra en la parte inferior izquierda.

Comentarios

Entradas populares