Diferencia entre revisiones de «Seguidor de Luz»

De Proyecto Butiá
Saltar a: navegación, buscar
(Implementación)
Línea 51: Línea 51:
 
Para eliminar las diferencias en las mediciones de los sensores provocadas por la luz ambiente almacenamos el valor inicial de cada sensor y para eliminar errores de medición de los sensores utilizamos el promedio de 10 mediciones.
 
Para eliminar las diferencias en las mediciones de los sensores provocadas por la luz ambiente almacenamos el valor inicial de cada sensor y para eliminar errores de medición de los sensores utilizamos el promedio de 10 mediciones.
  
    acumulateTopLight = 0
+
        acumulateTopLight = 0
 
     for i in range(10):
 
     for i in range(10):
 
         acumulateTopLight += robot.getLight(1)  
 
         acumulateTopLight += robot.getLight(1)  
 
     topLight_init = acumulateTopLight / 10
 
     topLight_init = acumulateTopLight / 10
 
+
        acumulateBottomLight = 0
    acumulateBottomLight = 0
+
 
     for i in range(10):
 
     for i in range(10):
 
         acumulateBottomLight += robot.getLight(3)
 
         acumulateBottomLight += robot.getLight(3)
 
     bottomLight_init =  acumulateBottomLight / 10
 
     bottomLight_init =  acumulateBottomLight / 10
 
+
        acumulateLeftLight = 0
    acumulateLeftLight = 0
+
 
     for i in range(10):
 
     for i in range(10):
 
         acumulateLeftLight += robot.getLight(5)
 
         acumulateLeftLight += robot.getLight(5)
 
     leftLight_init = acumulateLeftLight / 10
 
     leftLight_init = acumulateLeftLight / 10
 
+
        acumulateRightLight = 0
    acumulateRightLight = 0
+
 
     for i in range(10):
 
     for i in range(10):
 
         acumulateRightLight += robot.getLight(6)
 
         acumulateRightLight += robot.getLight(6)
Línea 75: Línea 72:
 
             acumulateTopLight += robot.getLight(1)  
 
             acumulateTopLight += robot.getLight(1)  
 
         return (acumulateTopLight/10) - topLight_init
 
         return (acumulateTopLight/10) - topLight_init
 
+
            def getBottomLight():
    def getBottomLight():
+
 
         acumulateBottomLight = 0
 
         acumulateBottomLight = 0
 
         for i in range(10):
 
         for i in range(10):
 
             acumulateBottomLight += robot.getLight(3)
 
             acumulateBottomLight += robot.getLight(3)
 
         return (acumulateBottomLight/10) - bottomLight_init
 
         return (acumulateBottomLight/10) - bottomLight_init
 
  
 
     def getLeftLight():
 
     def getLeftLight():
Línea 88: Línea 83:
 
             acumulateLeftLight += robot.getLight(5)
 
             acumulateLeftLight += robot.getLight(5)
 
         return (acumulateLeftLight/10) - leftLight_init
 
         return (acumulateLeftLight/10) - leftLight_init
 
  
 
     def getRightLight():
 
     def getRightLight():

Revisión del 17:14 27 jun 2020

Introducción

Materiales

  • Kit Robótico Butia.
  • 4 sensores de luz.
  • Esfera de Espuma Plast.
  • Carton sueco o similares.
  • Cinta Aisladora.
  • XO/pc con TurtleBots y el Plugin de Butia.

Construcción

Paso 1: Retirar la rueda derecha del Kit butia junto a su soporte.

Paso 2: Unir dos barras de encastre en forma de L y con dos tornillos fijarlas a la rueda.

Paso 3: Recortar un soporte auxiliar para el motor y con cinta aisladora unirlo al la rueda izquierda del robot Butiá.

Paso 4: Cortar un Cuadrado de cartón de 25 cm de lado, realizarle los agujeros correspondientes y con dos tornillos unirlo a la L de barras de encastre.

Paso 5: Tomar media esfera de espuma Plast y pegar con cinta doble faz los cuatro sensores de luz.

Paso 6: Conectar los sensores a los respectivo puertos de la placa Butiá. En este ejemplo : 1 - Arriba, 3 - Abajo, 5 - Izquierda, 6 Derecha.

Paso 7: Recortar dos soportes en cartón para que el robot Butiá permanezca en forma vertical y unirlos al robot.

Implementación

Importamos la librería PyBot

   sys.path.insert(0, '/home/olpc/Activities/TurtleBots.activity/plugins/butia')
   sys.path.insert(0, "/usr/share/sugar/activities/TurtleBots.activity/plugins/butia")

Importamos el módulo de pybot

   from pybot import usb4butia

Generamos una instancia de la placa USB4Butia

   robot = usb4butia.USB4Butia()
   robot.refresh()


Definimos una comprador de dos números aplicando un tolerancia

   tolerance = 5000
   def isBigger(num1, num2, tolerance):
       return (num1 - tolerance)>num2

Definimos las funciones que retornan el valor de cada uno de los 4 sensores de luz.

Para eliminar las diferencias en las mediciones de los sensores provocadas por la luz ambiente almacenamos el valor inicial de cada sensor y para eliminar errores de medición de los sensores utilizamos el promedio de 10 mediciones.

       acumulateTopLight = 0
   for i in range(10):
       acumulateTopLight += robot.getLight(1) 
   topLight_init = acumulateTopLight / 10
       acumulateBottomLight = 0
   for i in range(10):
       acumulateBottomLight += robot.getLight(3)
   bottomLight_init =  acumulateBottomLight / 10
       acumulateLeftLight = 0
   for i in range(10):
       acumulateLeftLight += robot.getLight(5)
   leftLight_init = acumulateLeftLight / 10
       acumulateRightLight = 0
   for i in range(10):
       acumulateRightLight += robot.getLight(6)
   rightLight_init = acumulateRightLight /10
   def getTopLight():
       acumulateTopLight = 0
       for i in range(10):
           acumulateTopLight += robot.getLight(1) 
       return (acumulateTopLight/10) - topLight_init
           def getBottomLight():
       acumulateBottomLight = 0
       for i in range(10):
           acumulateBottomLight += robot.getLight(3)
       return (acumulateBottomLight/10) - bottomLight_init
   def getLeftLight():
       acumulateLeftLight = 0
       for i in range(10):
           acumulateLeftLight += robot.getLight(5)
       return (acumulateLeftLight/10) - leftLight_init
   def getRightLight():
       acumulateRightLight = 0
       for i in range(10):
           acumulateRightLight += robot.getLight(6)
       return (acumulateRightLight/10) - rightLight_init