Close
0%
0%

Robot Quadruped de 8 DOF

Este proyecto muestra el diseño mecánico de un cuadrúpedo de 8 grados de libertad.

Similar projects worth following
El aumento de los grados de libertad en un robot se traduce a mejor estabilidad, pero mayor costo. Dentro de esta bitácora se presentan los distintos métodos para diseñar un pequeño robot cuadrúpero insectoide de 8 grados de libertad (2 motores servo por cada pata).

Se empleó el software Autodesk Inventor para diseñar las piezas; se propuso fabricar el robot con acrílico transparente de 2mm. Para la sujeción de algunas piezas, se emplearán tornillos M3 de plástico de distintos largos.

¿Por qué el diseño seleccionado?

Entre los dos tipos de robots cuadrúpedos que hay (inspirado en mamíferos o en insectos) se decidió uno inspirado en insectos. Esto es debido a que los robots inspirados en insectos tienden a tener una base simétrica y suelen elevarse a pocos centímetros del piso. Esto permite que el centro de masa del robot se encuentre en un punto bajo mientras avanza, y que sea más difícil que caiga por alguno de sus laterales.

En general, los cuadrúpedos inspirados en insectos tienen 12 grados de libertad (o DOF, por sus siglas en inglés), teniendo 3 motores por cada pata.

En esta aplicación, se trata de ecomomizar lo más posible. Tomando como base el documento "Development of an 8DOF quadruped robot and implementation of Inverse Kinematics using Denavit-Hartenberg convention", se estableció que es posible trabajar un robot cuadrúpedo con un mínimo de 2 motores por pata, haciendo un total de 8 DOF. Con esto se espera que los brazos tengan una rotación respecto al eje vertical y otro para rotación horizontal.

Cuadrupedo_17075_17092.rar

Dentro de esta carpeta se encuentran los archivos .m que realizan el cálculo de la cinemática directa, diferencial e inversa de las patas del robot. Además también contiene el archivo .mlappinstall de la simulación de la cinemática del robot.

RAR Archive - 479.44 kB - 04/12/2021 at 04:54

Download

BOM Componentes Electrónicos Proyecto 1 Perafan Vela 17092 17075.pdf

Dentro de este PDF se encuentra el listado de materiales de los componentes electrónicos a utilizar en el proyecto. El precio del adaptador AC-DC se excluye ya que para este paso todavía no se había realizado el power budget.

Adobe Portable Document Format - 418.30 kB - 03/13/2021 at 22:27

Preview
Download

Esquematicos Proyecto 1 Perafan Vela 17092 17075.pdf

Dentro de este PDF se encuentran los esquemáticos del controlador y sus respectivas conexiones a los actuadores

Adobe Portable Document Format - 225.31 kB - 03/13/2021 at 22:21

Preview
Download

Planos Proyecto 1 - 17092 17075.pdf

Dentro de este PDF se encuentran los planos de todas las piezas del robot, así como la forma de ensamble.

Adobe Portable Document Format - 1.16 MB - 02/19/2021 at 17:39

Preview
Download

  • Detalle sobre la generación y ejecución de trayectorias

    vel1707505/01/2021 at 18:28 0 comments

    Se estableció una rutina que permitió que el robot avanzara en una dirección establecida. Ya que el diseño del robot es simétrico, se pudo utilizar la misma rutina para los distintos movimientos descritos, únicamente modificando qué motor era el responsable de realizar qué movimiento. El gait escogido fue el creep, en el cuál se mantienen tres patas en contacto con el suelo; buscando mantener el centro de gravedad dentro del triángulo que forman.


    Es importante que, al momento que se desee, se deben de mover los 4 motores de la base (los cuáles permiten la rotación de las patas) hacia atrás, y luego, devolver las patas a su posición neutral, siguiendo un patrón de movimiento, de forma que se mantenga la estabilidad del cuadrúpedo. Debido a que, nuestro segundo grado de libertad de la pata no funcionaba como rodilla, no se pudo utilizar completamente el gait mencionado, por lo que se realizaron modificaciones para su funcionamiento en el robot.

    Para las trayectorias, se obtuvieron empíricamente por medio del simulador diseñado, descrito en logs anteriores. El proceso se realizó haciendo uso de los sliders de la simulación para seguir el gait escogido y posteriormente las configuraciones encontradas fueron probadas en el controlador implementado en Webots. Las patas solo eran elevadas 15° para poder mantener una buena estabilidad y en el caso de que hubieran perturbaciones externas y el robot se desbalanceara, la caída no afectara su funcionamiento. En un principio, el movimiento de los cuatro motores para avanzar se realizaba con el mismo valor de ángulo, sin embargo, al hacer esto, después de cierto tiempo, el robot comenzaba a desviarse de una trayectoria recta. Por lo tanto, por medio de un proceso iterativo, se modificaron los valores que tomarían cada uno de los motores, lo cuál al final redujo hasta la mitad el valor de desviación. Finalmente, como se explicó anteriormente, los diferentes movimientos establecidos son redundantes, ya que utilizan el mismo patrón de movimiento. Los valores de ángulo asignado a los motores eran los que establecían qué movimiento se realizaría; estos valores eran de igual magnitud, pero eran asignados a diferentes motores para cada movimiento.

    La ejecución de las trayectorias se realizó dentro de un controlador en lenguaje C, y en este, se definieron 4 arrays, los cuáles cada uno contenían las configuraciones necesarias para realizar un movimiento específico. Posteriormente, en el ciclo infinito, se revisó qué tecla fue oprimida para así, activar una bandera que generara el movimiento deseado. Al estar la bandera activada, esta habilitaba un contador, el cuál iba a recorrer el array y le asignaba a los motores la configuración requerida. Finalmente, al terminar la asignación, la bandera se apagaba para poder a realizar otro movimiento.

    Algunos de los problemas encontrados para la simulación dentro de Webots fue la asignación de las propiedades físicas del robot; esto para que el entorno comprendiera dónde y cómo debía de actuar tanto la geometría del robot como las juntas rotacionales para apegarse al funcionamiento en la vida real. Esto ya que la gran cantidad de nodos que se debían emplear no dejaban en claro específicamente dónde asignar tales propiedades. Dentro del controlador del robot, el parámetro de TIME_STEP fue modificado, ya que no es posible emplear delays. Esto se hizo para que la asignación de cada configuración se realizara de forma secuencial, lo cual hizo que la simulación se realizara de forma lenta.

  • Video del funcionamiento completo del robot

    Camilo Perafán M.05/01/2021 at 16:41 0 comments

    Aquí se presenta el funcionamiento del robot, el cual se realizó en la plataforma Webots. El robot era controlado por medio de las teclas 'w', 'a', 's' y 'd', las cuales hacían que el robot avanzara, se moviera a la izquierda, retrocediera y se moviera a la derecha respectivamente. Para demostrar el correcto diseño de estos movimientos se formó un cuadrado con el movimiento del robot, lo cual se presenta en el vídeo a continuación:

  • Visualización de la cinemática del robot

    Camilo Perafán M.04/12/2021 at 03:49 0 comments

    Para esta sección se desarrolló una interfaz gráfica de usuario en MATLAB, haciendo uso de la herramienta de App Designer. En esta interfaz, el usuario, a través de sliders, podría modificar los parámetros q1 y q2 de cada pata y ver este cambio reflejado en otra pantalla, la cual presenta un diagrama del robot. Esto se consiguió por medio del uso de la Robotics Toolbox de Peter Corke, en la cual se usaron principalmente su función SerialLink y su función plot(). Cabe resaltar que se restringieron los valores que podían tomar los sliders de q1 y q2 a un rango de -90° a 90° y de 0° a 90°, respectivamente. Esta GUI se encuentra en la carpeta Cuadrupedo_17075_17092.rar en la sección de Archivos, bajo el nombre de Simulacion_Cuadrupedo_17075_17092.mlappinstall, y una foto ejemplo de la GUI diseñada se presenta a continuación: 

  • Rutinas de cinemática directa, diferencial y cinemática inversa

    Camilo Perafán M.04/12/2021 at 03:48 0 comments

    Para calcular la cinemática directa, diferencial e inversa de las patas, se desarrollaron tres diferentes códigos de MATLAB, los cuales se encuentran en la carpeta Cuadrupedo_17075_17092.rar de la sección de Archivos. Las rutinas fueron basadas en funciones creadas durante los laboratorios, y los nombres de estas se presentan a continuación:

    • CuadrupedoFK ( q, numero_de_pata )   ---->  Rutina correspondiente a la cinemática directa
    • CuadrupeodJ ( q, numero_de_pata )   ---->   Rutina correspondiente a la cinemática diferencial 
    • CuadrupedoIK (T, q0, completa_o_posicional, numero_de_pata )   ---->   Rutina correspondiente a la cinemática inversa

    Cada una de estas rutinas contiene el parámetro numero_de_pata, el cual permite elegir para que pata se quiere calcular la cinemática correspondiente, realizando la transformación de base correspondiente. Cabe resaltar que la cinemática directa es post-multiplicada por una transformación de herramienta para tomar en cuenta la forma extraña de la pata. Esta operación ya fue realizada en la respuesta obtenida de la rutina.

    En la cinemática inversa se seleccionó el algoritmo de Levenberg-Marquadt  con un lambda cuadrado igual a 0.001. Se escogió este método debido a su buena robustez con respecto a singularidades, además de presentar una convergencia lo suficientemente rápida. El parámetro de lambda fue escogido con la guía presentada en clase, en la cual se indicaba que este debía ser lo suficientemente pequeño pero mayor a cero.

  • Matrices de parámetros de DH y transformaciones de base

    vel1707504/08/2021 at 03:33 0 comments

    La definición de los parámetros de la matriz de Denavit-Hartenberg se establece con el diseño físico de una pata del robot. Para ello, se considera la pata como un manipulador serial de 2 grados de libertad, con juntas de rotación. Orientando el eje +x hacia adelante del robot y el eje +z hacia arriba, se utilizó el assembly de Inventor 2019 para realizar las mediciones:

    En la imagen anterior, se muestran las mediciones en conjunto con la dirección de los ejes en cada punto. Hay que notar que, solamente se tienen 2 motores (2 parámetros), pero, se desplazó el sistema de coordenadas al final de la pata, trabajando esas transformaciones como transformación de efector final (ya que nos interesa saber en dónde se ubica la punta de la pata). Estos datos generan la siguiente tabla de parámetros DH:


    Siendo una matriz con un vector de configuración q de dos dimensiones. Esta matriz es útil para las 4 patas del robot; solamente se debe de tener en cuenta que, para las patas opuestas (lado derecho en este caso), un movimiento hacia adelante requiere el mismo ángulo theta, pero con signo opuesto.

    Con los mismos datos de Inventor, se obtiene la siguiente matriz de transformación de efector final:

    Para la transformación de base, se midió el tamaño de la base respecto al eje del primer motor:

    Además, el punto donde se rota se encuentra arriba de la base, por lo que se debe de considerar esta elevación para la transformación:

    Además, el sistema de coordenadas de las patas se encentra rotado 45° (en distintas direcciones); esto para que la configuración inicial sea con las cuatro patas apuntando a los extremos de la base, y no a los lados. Con lo anterior, es posible obtener las matrices de transformación de base:

    Esta matriz se repite para las 4 patas, siendo variable únicamente el signo de los valores (en dependencia del lado en el que se encuentren).

  • Power Budget y Selección de Fuente de Alimentación

    vel1707503/13/2021 at 22:20 0 comments

    Para la selección de la fuente de alimentación (establecida como alámbrica en la selección de componentes) se realizó una sumatoria de las corrientes que exige cada componente eléctrico en el robot.

    Las corrientes de los motores fueron encontradas en distintos datasheets (como por ejemplo la Datasheet de Open Circuit o los datos brindados por Proto Supplies ), así como una pequeña verificación física con uno de estos motores:

    La corriente de 118.5mA se obtuvo al hacerle resistencia al giro del motor; sin embargo, al tener un rango máximo de 200mA, al pasarlos el multímetro no mostró medida, por lo que se tomaron los valores de 225mA en cada uno. Lo anterior se realizó con la idea de diseñar con sobre dimensionamiento. Con lo anterior se generó la siguiente tabla:

    Por lo que la alimentación adecuada debe de poder brindar un total de 2.2A. Al momento de realizar el cálculo, ya se contaba con una fuente de 9V de 1A (Adaptador AC-DC de 9V a 1A, de la tienda "La Electrónica"), por lo que, para reducir costos, se utilizará dicha fuente para la alimentación del Arduino UNO, y posiblemente, la alimentación de al menos dos motores. Con esto, se tiene que se requiere de una fuente de alimentación de 1.5A a 5V, por lo que se hará la compra de la fuente AC-DC TMC Variable (3-12V) de 2A de la misma tienda que la fuente anterior. Con esto se cumplen los requisitos de alimentación del robot.

  • Bill Of Materials (BOM)

    Camilo Perafán M.03/13/2021 at 22:19 0 comments

    El BOM se encuentra en la sección de archivos. En este se presenta el listado de componentes electrónicos a utilizar, con sus respectivos precios, y el cálculo del valor total del proyecto, el cual fue de USD 60.55. Estos precios fueron obtenidos de Mouser Electronics y Sparkfun. 

  • Esquemáticos

    Camilo Perafán M.03/13/2021 at 22:18 0 comments

    Los esquemáticos se encuentran en la sección de archivos. En estos se presentan las conexiones que se realizaran entre el controlador escogido (Arduino Uno) y los actuadores (Servos SG90).

  • Selección de Componentes (Trade Study)

    Camilo Perafán M.03/13/2021 at 22:14 0 comments

    En esta sección se presenta la selección de ciertos componentes de relevancia para el proyecto. Estos componentes son: el microcontrolador a utilizar, los servos a utilizar, la fuente de alimentación a utilizar y el tipo de conexión a utilizar. Todo esto fue realizado por medio de la herramienta Trade Study. Las valoraciones van de 0 a 10, siendo 0 malo y 10 excelente.

    1. Microcontrolador

    Las opciones consideradas en esta sección fueron un Arduino UNO, una Tiva C y un PIC16F887, y estas fueron escogidas debido a factores como disponibilidad inmediata y familiaridad con el componente. El criterio de facilidad de programación evaluaba que tan sencillo es realizar las rutinas necesarias para la aplicación del proyecto, tomando en cuenta el lenguaje de programación utilizado y el IDE. Cabe resaltar que la Tiva C tiene una valoración más baja que el Arduino debido a que se asumió que esta sería programada en Code Composer y no en Energia. Por otra parte, el criterio de librerías disponibles evaluaba la facilidad de encontrar librerías que nos permitiría implementar funciones necesarias para la aplicación del proyecto. Por otra parte, se evaluaron los canales PWM disponibles y el voltaje de trabajo de los controladores, aspectos de gran importancia para el proyecto, ya que los servos trabajan con 5V y se utilizaran un total de 8 de estos, por lo que el controlador a seleccionar debía cumplir con los aspectos descritos anteriormente, sin necesidad de componentes externos. Finalmente, se evaluó el tamaño que tendrían estos ya que debían caber en el robot, el cual ya había sido diseñado con antelación. Cabe resaltar que el tamaño del PIC se tomó como el componente y su respectiva galleta. 

    2. Servo

    Las opciones consideradas en esta sección fueron un SG90 de 180°, un SG90 de 360° y un S3003, y estas fueron escogidas debido a disponibilidad inmediata. La mayoría de criterios descritos en la tabla son auto explicativos; sin embargo, se quiere hacer énfasis en los que se consideran los más importantes: Peso, Tamaño, Consumo de Corriente y Torque Suministrado. El peso y el tamaño son criterios de gran peso en el estudio debido a que estos tienen que cumplir con el diseño mecánico realizado anteriormente, además de entrar en el rango de pesos extras que se tomaron en cuenta en el cálculo del torque necesario. Por otra parte, se busca que el servo seleccionado cumpla con proveer con facilidad el torque necesitado, además de mantener su consumo de corriente al mínimo, por lo que los criterios siguientes que se les da un mayor peso son el consumo de corriente y el torque suministrado.  

    3. Fuente de Alimentación

    Las opciones consideradas en esta sección fueron un adaptador AC-DC y el uso de baterías, las cuales fueron escogidas debido a su disponibilidad inmediata, ya que se quería comprobar si un adaptador AC-DC que se tenía disponible era una opción válida como fuente de alimentación. La mayoría de criterios son auto explicativos; sin embargo, se quiere hacer énfasis en los que se consideran los más importantes: Entrega de Corriente, Peso, Tiempo de Operación y Facilidad de Conexión. La entrega de corriente y el tiempo de operación son criterios de gran peso en el estudio ya que se busca que la fuente de alimentación pueda operar sin problema al Arduino y los 8 servos, además de tener un tiempo de operación de como mínimo 30 minutos. Por otra parte, el peso y la facilidad de conexión toman en cuenta que la fuente ente en el rango de pesos extras que se tomaron en cuenta en el cálculo del torque necesario, además de que la conexión al Arduino y a los servos sea fácil, respectivamente....

    Read more »

  • Validación de la selección de los motores

    vel1707502/20/2021 at 22:49 0 comments

    Para este proyecto se utilizarán los servo motores Micro Servo SG90 1.6kg de torque. Estos motores pueden proveer un torque máximo de 1.6 kg-cm. Para esperar una operación suave de los motores en la aplicación, el torque que soporten debe estar entre 1/5 y 1/3 de la carga máxima. Este rango es de 0.32 a 0.53 kg-cm. Para encontrar el torque del motor, se requieren los valores de cargas y el radio entre ellos y el eje del motor; esto empleando la expresión:

    Donde tau es el torque, F es la carga y r es el radio perpendicular entre la fuerza y el pivote. 

    Los motores que soportarán mayor torque son los de las articulaciones de las cuatro paras (los que rotan en el eje horizontal), ya que, además de tener como carga su propio peso, se tiene la reacción del suelo con la pata, la cuál se relaciona con el peso total de la base del robot. Por ello, se utilizó el software de Autodesk Inventor para encontrar el centro de masa del robot; esto con el objetivo de encontrar el radio del torque que la pata genera.

    Con la imagen anterior, se encuentra el radio de torque del centro de masa, el cuál es de 1.64 cm. Una pata pesa, con todo y motor, 0.038 kilogramos. Con esto se puede encontrar el torque que genera el propio peso de la pata en el motor, la cual es de 0.062 kg-cm.

    Ahora se mide la distancia entre el punto de contacto de la pata con el suelo, ya que es en ese lugar donde se genera la fuerza de apoyo.

    Este radio es de 5.01 cm. Cada pata debe de soportar 1/4 del peso de la base, el cuál se compone de:

    • Base de acrílico: de 36.0 gramos.
    • Arduino UNO: de 26.0 gramos.
    • Servo motores de la base: de 10.0 gramos cada uno (40.0 gramos en total).
    • Protoboard pequeño: de 15.0 gramos.
    • Miscelánea* (carga posible de cables u otros): 25 gramos (esta carga para cada pata).

    Con lo anterior, la base tiene 0.117 kg, correspondiendo 0.0543 kg a cada pata. Esto hace que el torque producido por la reacción sea de 0.271 kg-cm. En total, el torque que el motor crítico debe de soportar es de 0.33 kg-cm, el cuál está en el rango de operación óptimo, validando la selección de los motores.

    *La carga de miscelánea es sólamente una carga adicional para que se tenga holgura en el cálculo y no sea un dato exacto.

View all 11 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates