Grupo 2

De Proyecto Butiá
Revisión del 21:14 2 ago 2014 de Smartinez (Discusión | contribuciones) (Desarrollo:)

Saltar a: navegación, buscar

Introducción:

El siguiente proyecto se basa en poner a disposición y funcionamiento los motores ax-12 para el robot Butiá por medio de la paleta 'nombre de la paleta'.

Objetivos:

Nuestro objetivo es agregarle al programa Turtlebots, una nueva paleta para poder extender el funcionamiento de los motores ax-12.

Integrantes:

  • Misael Mallada
  • Andrés Piñeyro
  • Sixto Martínez

Tutor:

  • Rodrigo Dearmas

Motivación:

El impulso de todo esto fue debido a la asignación del proyecto a nuestro grupo, que de todos los que había fue el que más nos atrapó. Nos pareció realmente interesante, ya que podríamos agregar una nueva funcionalidad al Turtlebots y además, aportar nuestro granito de arena a la evolución y crecimiento de la plataforma, ya que estos motores son de mayor precisión que los de corriente continua.

Investigación:

Como primer paso, buscamos información acerca de estos servomotores. Tratamos de interiorizarnos, ya que era la primera vez que teníamos contacto con ellos. Pasada esta etapa, que fue la más teórica, tuvimos una idea de que era lo que teníamos y necesitábamos. Procedimos a centrarnos en los archivos que nos servirían de ayuda, y además a crear nuestros propios archivos para poner en marcha la creación de la paleta con sus respectivos bloques.

Evolución:

En nuestra primer reunión tuvimos un pantallazo general de los motores AX-12. Por medio de un manual pudimos ver las funciones, que a la postre van ser útiles para implementar a la hora de armar los paquetes de datos. También vimos un ejemplo de su utilización como lo puede ser una pinza, y nos dio una idea de lo que vamos a proponer como proyecto. Para nuestra próxima reunión se acordaron objetivos puntuales para ir avanzando en el tema.


En la segunda reunión expusimos los objetivos que nos habíamos trazado anteriormente, que era poder armar una paleta en turtlebots con sus respectivos bloques. Estuvimos charlando sobre como realizar y de que forma el llamado a las funciones que van a utilizar posteriormente cada bloque, donde además tuvimos que clonar el git. Para la próxima reunión acordamos presentar las funciones que realmente vamos a necesitar para la paleta de AX-12.


En la reunión n°3 propusimos una selección de las funciones que vamos a utilizar para implementar cada bloque, donde el tutor nos explicó cada una de ellas. Además, nos proporcionó los materiales para comenzar a trabajar: el robot butía y un par de motores Ax-12. También hubo inconvenientes, ya que hubo que puentear la placa para que los motores de AX-12 puedan funcionar. Finalmente nos pusimos de acuerdo que para la próxima reunión no íbamos a poder avanzar mucho, y que de ser necesario concurriéramos al laboratorio para estar más al tanto con los nuevos materiales y así poder trabajar y familiarizarnos.


Al ir al laboratorio quisimos obtener información de los motores AX-12 por medio de telnet. Pedimos ayuda y pudimos charlar con Aylen, que básicamente nos explicó el funcionamiento general desde los bloques turtlebots hasta la placa, llegando a la conclusión de que falta grabar el firmware en dicha placa, por lo tanto se planea para la próxima reunión ver este último punto.


En la cuarta reunión el tutor grabó el firmware en la placa y soldó la placa de tal forma de que el butía pudiera tener acceso tanto a los motores de continua como ax-12. Gracias a esto pudimos realizar las primeras pruebas en el robot por medio de telnet. Cabe destacar que en los puntos recientemente mencionados el docente Santiago nos dió una mano para poder realizarlo y además nos brindo una guía, aclarando nuestras dudas e inquietudes a cerca de los motores. Probamos listar las funciones y además llamarlas, como por ejemplo setSpeed o getPosition. Además pudimos agregar 3 funciones a la paleta.


  • Fijar Posición
  • Obtener Posición
  • Fijar velocidad


Donde "Fijar velocidad" funcionó perfectamente. Para nuestra siguiente reunión debido al avance, fijamos como meta agregar más funciones a la paleta y a su vez poder implementarlas de forma tal de que funcione correctamente en el robot.


En la reunión número 5 llegamos con las siguientes funciones agregadas a la paleta con sus respectivas implementaciones:


  • Fijar Posición
  • Obtener Posición
  • Fijar velocidad
  • WheelMode
  • JointMode
  • ChangeID


Procedimos a depurarlas y probarlas, funcionando correctamente. Gracias a esto accedimos a la propuesta por parte del tutor, de agregar nuevas funciones, no solo a la paleta, sino también al driver de ax-12, como lo son encender led, obtener carga de batería y obtener temperatura. Nos manifestó que no es algo fundamental, pero que estaría bueno agregarlo, ya que le da una funcionalidad más amplia a los motores. Por lo tanto se planteó para próximas reuniones, seguir puliendo las funciones ya existentes para obtener un funcionamiento lo más óptimo posible, y además poder agregar funciones al driver de ser necesario.

Desarrollo:

Lo primero que hicimos para comenzar a hacer la paleta fue ir al archivo Butia.py, que ya trae 3 paletas incorporadas. Al ver este panorama, hablamos con nuestro tutor y llegamos a la conclusión de agregar la paleta de ax-12, que dicho sea de paso sería lo más práctico y menos complicado. Esto nos sirvió de mucha ayuda, ya que en el archivo está la implementación de dichas paletas, y nos dio una base para poner en marcha el proyecto. A continuación se explicará brevemente nuestro proceder en la codificación, por medio de imágenes y una explicación de dicho código.


  • Butia.py

Aquí creamos la palette4 con el nombre 'ax'

Tortu1.jpg

Luego definimos la parte gráfica por cada bloque. A modo de ejemplo se mostrará un solo bloque, ya que el desarrollo para el resto de dichos bloques es análogo al que presentaremos a continuación. Se definió: el nombre del bloque, los argumentos (parámetros) necesarios, valores por defecto para dichos parámetros, un letrero de ayuda, la llamada a una función que luego será invocada y el color del bloque.

Tortu2.jpg

Como habíamos dicho anteriormente, se hizo una llamada a una función, que precisamente es la siguiente. Esta se encarga de establecer una relación entre los archivos Butia.py y Functions.py. Lo que va a realizar esta función es setear la velocidad de los motores, y para ello necesitamos un tipo de giro "wheelmode", y por supuesto, el id y la velocidad que se le va a poner a los ax-12


Tortu3.jpg


  • Functions.py

Dentro de Functions.py, nos encontramos con la siguiente función. Esta, sera la encargada de comunicarse con los drivers por medio del modulo "ax" para que este último le envíe mensajes a la placa, y de esta forma hacer funcionar los motores.

Tortu4.jpg

  • Ax.py

Finalmente, el módulo "ax" se comunica con la placa, envíando mensajes por medio de instrucciones hexadécimales y conversiones para obtener la velocidad (incluyendo también el modo de giro) de seteo deseada

Conclusión:

Queda para el final