Close

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

A project log for Robot Quadruped de 8 DOF

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

vel17075vel17075 05/01/2021 at 18:280 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.

Discussions