Encoder

De Proyecto Butiá
Saltar a: navegación, buscar

Integrantes

  • Pablo Anzorena anzorena.fing@gmail.com
  • Sebastián Lorenzo sebastianlorenzo88@gmail.com
  • Manuel Laguarda lag.manuel@gmail.com
  • Bruno Olivera bruno.olivera.dev@gmail.com

Tutor

  • Gonzalo Tejera - gtejera@fing.edu.uy.

Introducción

El presente trabajo tiene como objetivo principal extender las capacidades del butiá en lo que a movimiento refiere, permitiendole realizar desplazamientos y giros mas precisos.

Objetivo

El objetivo del proyecto es dotar al butiá con la capacidad de conocer en cada instante de tiempo, cual fue su desplazamiento. Hasta el momento para mover el butiá, existe un comando que setea el valor de potencia de los motores. Quedando a cargo del “programador” la lógica de movimiento. Por ejemplo para avanzar una cierta distancia, hay que accionar los motores por un cierto tiempo a una potencia determinada.


Motivación

Extender las capacidades del kit butiá, permitiendo tener más precisión en los movimientos. Vimos que existía un problema al momento de programar un movimiento con precisión solamente con la potencia de los motores y esperas, por eso es que nos interesó mejorar este aspecto.

Investigación

Posibles soluciones:

  • Algoritmo flujo óptico: Este algoritmo lo que hace es tomar datos del entorno mediante la cámara y comparar el desfazaje entre imágenes sucesivas.

Esta opción fue descartada porque era bastante complejo saber que pixeles entre las imágenes habÍa que comparar.

  • Utilizar Mouse Óptico Como Sensor: La idea consiste en ir sensando con un mouse óptico ubicado en la parte inferior del butiá y de acuerdo a las coordenadas x e y determinar el movimiento.

En esta etapa decidimos descartar esta opción ya que para hacer el giro sobre el eje, las coordenadas x e y se mantienen.

  • Motores CC sin escobillas: Los motores de corriente continua tienen sensores de hall para determinar la posición en donde se encuentra la rueda mediante la medición de campos magnéticos, pudiendo mediante esto establecer la distancia recorrida y el sentido del giro.

Al momento de hacer el proyecto no habÍan estos motores, por lo que no pudimos probarlos, pero usamos el mismo tipo de algoritmo para la solución.

  • Sensor de Gris y Marcas en una Rueda: Esta idea consiste en marcar una rueda e ir sensando con un sensor de grises las marcas. Estas marcas las utilizamos para medir la distancia recorrida, dichas marcas se encuentran equidistantes en la rueda.

Esta fue la solución elegida, porque nos permitió aplicar los conocimientos adquiridos en el curso.

Posibles mejoras

Como posible trabajo futuro, se puede integrar el sensor de grises al motor que ya está en el butiá. Así como que el sensor esté conectado directamente con la placa y liberar un puerto. También aislar el sensor para reducir el ruido producido por la iluminación ambiente.

Trabajos futuros

Ya que contamos con una buena precisión para determinar el desplazamiento, la idea es poder determinar la velocidad dado el desplazamiento y el tiempo. Crear un algoritmo que vaya ajustando su velocidad de acuerdo a la distancia desplazada por el tiempo transcurrido.

Materiales

Como en el laboratorio de robótica hay muchas “sobras” y recortes de acrilico de viejos robots Butiá, éstos se utilizarán para la construcción de la torre y el brazo. La pinza se cortará en acrílico de 6mm. Además se utilizaran tornillos, tuercas y fichas de ensamblaje pertenecientes al kit butiá.

Esta decisión tiene como ventaja que la grúa quedará mejor integrada a la plataforma butiá, además de que las piezas utilizadas son casi enteramente del kit butiá (el brazo utiliza dos barandas ligeramente modificadas para la tarea), por lo que no será necesario fabricar piezas personalizadas, a excepción de la pinza.

 Materiales.jpg

Conexión con la placa USB4Butia

USB4All y módulos de usuario

Para mover los motores es preciso comunicarse con los mismos a través de PWM, es decir enviando pulsos de una determinada duración. Sería necesario, entonces, crear un módulo de usuario para llevar a cabo esta tarea. Afortunadamente, el firmware usb4all cuenta con un módulo de usuario para controlar el shield de los motores de corriente continua del Butiá (la señal PWM es generada a través de software), de modo que se re-utilizará esta funcionalidad para controlar los servomotores.

Configuración

Para utilizar los motores de ésta forma es necesario “hacer creer” a la placa que se ha conectado el shield de los motores de CC. Para esto se utilizan los “hackpines”, con la siguiente configuración.

Pin 09 - Gnd Pin 10 - Gnd Pin 11 - 5v

Los cables de datos se conectaron en los pines 6 y 7.

Conexion.jpg

De esta forma los motores pueden ser movidos con las funciones para mover los motores existentes en pybot (setMotorSpeed() y set2MotorSeed()).


Paleta de Turtlebots

Se agregan los siguientes bloques de funciones para el programa Turtlebots:

  • Bajar Grúa: Enciende el motor de la torre para que se mueva en dirección horaria, de modo que la grúa baje, durante la cantidad de segundos indicada. Si es 0, el motor queda encendido hasta que se lo detenga.
  • Subir Grúa: Enciende el motor de la torre para que se mueva en dirección anti-horaria, de modo que la grúa suba, durante la cantidad de segundos indicada. Si es 0, el motor queda encendido hasta que se lo detenga.
  • Detener Grúa: Detiene el motor de la torre.
  • Abrir Pinza: Enciende el motor de la pinza durante 0.5 segundos y lo detiene, de modo que la pinza se abre.
  • Cerrar Pinza: Enciende el motor de la pinza durante 2 segundos y lo detiene, de modo que la pinza se cierra (esta diferencia de tiempos es debido a inconsistencias en el PWM, ver ‘Conclusiones’).
  • Apretar Pinza:Enciende el motor de la pinza de modo que esta se cierra, el motor continúa encendido, ejerciendo presión, hasta que se ejecute la función Abrir Pinza, o Cerrar Pinza.

Siguiendo con el concepto de integrar la Grúa al robot butiá, se decide agregar los bloques a la paleta Extra de Butiá.

Paletabrazo.PNG

Ejemplo de programa básico (usado en el video demostrativo):

Programabrazo.PNG

Video demostrativo:

Conclusiones

Si bien el brazo robótico construido cumple con los requerimientos suficientes, mucho se puede mejorar todavía, especialmente en lo relacionado al control del mismo.

En nuestro proyecto, se buscó minimizar el costo todo lo posible para que el brazo fuera funcional, tal vez por un costo un poco mayor se podría construir un brazo con más grados de libertad. Pero esto presentaría nuevos retos, pues uno de los problemas en que incurrimos, en la etapa de codificación, fué que la señal PWM enviada a un motor se ve afectada cuando se intenta controlar un segundo motor al mismo tiempo. Por ejemplo: En nuestro modelo, la potencia de la pinza se ve disminuida cuando, al mismo tiempo, se sube la pinza. Esto puede deberse a que el PWM es generado registrando eventos periódicos, y tal vez la presencia de más de uno de estos eventos afecte la performance del controlador, lo cual puede afectar la frecuencia de dichos eventos, afectando a su vez el ancho de la señal.

Por lo tanto, para agregar más grados de libertad, se deberá solucionar ese problema, modificando los módulos de usuario existentes, o bien creando un circuito PWM para controlar los motores, que sea manejable desde la placa USB4Butia.

Queda como trabajo pendiente la creación de una interfaz para conectar ambos motores a los hackpines sin depender de un protoboard.


Fuentes citadas

https://es.wikipedia.org/wiki/Servomotor https://en.wikipedia.org/wiki/DYNAMIXEL https://es.wikipedia.org/wiki/Brazo_rob%C3%B3tico


Agradecimientos

Quedamos agradecidos con los integrantes del proyecto butiá, especialmente a los docentes:

  • Mercedes Marzoa
  • Federico Andrade
  • Rodrigo Dearmas
  • Gonzalo Tejera

Sin sus consejos y sabiduría este proyecto no habría sido posible.