Diferencia entre revisiones de «API»

De Proyecto Butiá
Saltar a: navegación, buscar
m
 
(No se muestran 34 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
== API del Butiá ==
+
Butiá puede utilizarse de muchas formas, como un servicio consumible mediante la red como es el caso de [[bobot|bobot server]] utilizando directamente la biblioteca [[bobot]] o mediante diferentes APIs de programación como C, Java, Python.
 +
También es posible utilizando [[PyBot]].
  
Descripción de las funciones y algunos ejemplos.
+
==Antes de empezar==
  
INSTANCIAR CLASE:
+
Para utilizar la API es necesario tener corriendo un servidor.<br>
 +
En el caso de [[bobot]] se debe ejecutar:
  
<syntaxhighlight lang="python">
+
    ./lua bobot-server.lua
butiabot = butiaAPI.robot()
+
</syntaxhighlight>
+
  
APERTURA:
+
Si se desea ver que dispositivos está detectando y mas, se debe habilitar el DEBUG:
  
<syntaxhighlight lang="python">
+
    ./lua bobot-server.lua DEBUG
butiabot.abrirButia()
+
</syntaxhighlight>
+
  
 +
En el caso de usar [[pyBot]] se debe ejecutar:
  
VERSIÓN:
+
    python pybot_server.py
getVersion
+
Devuelve la version del firmware de la placa con el que estamos trabajando:
+
  
<syntaxhighlight lang="python">
+
Para habilitar el DEBUG:
ver = butiabot.getVersion()
+
print ver
+
</syntaxhighlight>
+
  
CERRAR comunicación con el servidor lubot
+
    python pybot_server.py DEBUG
  
<syntaxhighlight lang="python">
+
Luego de iniciado el servidor, podemos conectarnos desde el cliente pybot_client.py.
butiabot.cerrar()
+
</syntaxhighlight>
+
  
CONEXIÓN/DESCONEXIÓN CON SERVIDOR:
+
==Uso de la API en Pippy y Python==
Conecta o Reconecta al bobot en address:port
+
  
<syntaxhighlight lang="python">
+
Para poder utilizar la librería butiaAPI es necesario que especifiquemos la ruta donde se encuentra.
butiabot.reconnect (address, port)
+
Para ello, en Pippy agregamos:
</syntaxhighlight>
+
  
MÓDULOS:
+
    import sys
 +
    sys.path.insert(0, '/home/olpc/Activities/TurtleBots.activity/plugins/butia')
  
listarModulos:
+
La ruta /home/olpc.. es la ruta donde por defecto se encuentra TurtleBots cuando se instala en una XO.
devuelve la lista de los modulos disponibles en el firmware de la placa
+
En otras computadoras puede variar.
 +
Asimismo, este truco permite utilizar la butiaAPI desde cualquier otro lugar en el sistema, directamente desde python.
  
<syntaxhighlight lang="python">
+
Luego de tener eso, procedemos a usar la API.
modulos = butiabot.listarModulos()
+
print modulos
+
</syntaxhighlight>
+
  
abrirModulo:
+
==Importando la API==
Apertura de modulos, abre el modulo "moduloname"
+
  
<syntaxhighlight lang="python">
+
Para importar el cliente:
butiabot.abrirModulo (moduloname)
+
</syntaxhighlight>
+
  
llamarModulo:
+
    from pybot import pybot_client
Operacion de llamada de una funcion de un modulo (CALL)
+
  
<syntaxhighlight lang="python">
+
No es necesario importar "pybot" ya que solo vamos a utilizar el cliente.
butiabot.llamarModulo(modulename, function , params = "")
+
</syntaxhighlight>
+
  
 
+
Para ver las todas las funciones entrar a: [[PyBot]].
FUNCIONES VARIAS:
+
 
+
isPresent
+
Retorna si esta presente el modulo
+
butiabot.isPresent (moduloname)
+
 
+
abrirLback
+
Abrir módulo loopBack: modulo de ayuda presente en el butia (open)
+
 
+
<syntaxhighlight lang="python">
+
butiabot.abrirLback()
+
datoRet = butiabot.loopBack("hola")
+
</syntaxhighlight>
+
 
+
loopBack:
+
envia un mensaje a la placa y espera recibir exactamente lo que fue enviado
+
 
+
<syntaxhighlight lang="python">
+
butiabot.loopBack(data)
+
</syntaxhighlight>
+
 
+
 
+
MOTORES:
+
Operaciones solicidatas al driver motores.lua
+
 
+
abrirMotores:
+
 
+
<syntaxhighlight lang="python">
+
butiabot.abrirMotores()
+
butiabot.setVelocidadMotores(self, sentidoIzq = "0", velIzq = "0", sentidoDer = "0", velDer = "0")
+
butiabot.setVelMotor(self, idMotor = "0", sentido = "0", vel = "0")
+
 
+
datoRet2 = butiabot.setVelocidadMotores("0", "1000", "0", "500")
+
print datoRet2
+
time.sleep(1)
+
datoRet3 = butiabot.setVelocidadMotores("0", "0", "0", "0")
+
print datoRet3
+
datoRet4 = butiabot.setVelMotor("0","1","1023")
+
time.sleep(1)
+
print datoRet4
+
datoRet4 = butiabot.setVelMotor("0","1","0")
+
datoRet4 = butiabot.setVelMotor("1","0","452")
+
time.sleep(1)
+
print datoRet4
+
datoRet4 = butiabot.setVelMotor("1","1","0")
+
</syntaxhighlight>
+
 
+
SENSORES:
+
Operaciones solicitadas al driver de los sensores
+
 
+
abrirSensor()
+
 
+
getValSenAnalog(pinAnalog = "0"):
+
 
+
getValSenDigital(pinDig = "0"):
+
 
+
<syntaxhighlight lang="python">
+
butiabot.abrirSensor()
+
sen1 = butiabot.getValSenAnalog("2")
+
print sen1
+
sen2 = butiabot.getValSenAnalog("4")
+
print sen2
+
sen3 = butiabot.getValSenDigital("5")
+
print sen3
+
</syntaxhighlight>
+
 
+
Operaciones solicitadas al modulo de la placa, driver butia.lua
+
 
+
abrirButia()
+
ping()
+
 
+
CARGA DE BATERIA
+
Esta operacion nos devuelve la carga aproximada del pack de pilas del robot con un error de 1 volt.
+
getCargaBateria()
+
 
+
<syntaxhighlight lang="python">
+
carga = butiabot.getCargaBateria()
+
print carga
+
</syntaxhighlight>
+
 
+
 
+
+
setVelocidad3(velIzq = 0, velDer = 0)
+
 
+
setPosicion(idMotor = 0, angulo = 0)
+
 
+
 
+
 
+
 
+
Operaciones solicitadas al driver boton
+
 
+
abrirBoton(self)
+
+
getBoton(self)
+
+
getLuzAmbiente(self)
+
 
+
getDistancia(self)
+
+
getEscalaGris(self)
+
 
+
getTemperature(self)
+
 
+
getVibration(self)
+
 
+
getTilt(self)
+
 
+
getContactoCapacitivo(self)
+
 
+
getInduccionMagnetica(self)
+
 
+
setLed(self, nivel = 255)
+

Revisión actual del 01:27 8 abr 2013

Butiá puede utilizarse de muchas formas, como un servicio consumible mediante la red como es el caso de bobot server utilizando directamente la biblioteca bobot o mediante diferentes APIs de programación como C, Java, Python. También es posible utilizando PyBot.

Antes de empezar

Para utilizar la API es necesario tener corriendo un servidor.
En el caso de bobot se debe ejecutar:

   ./lua bobot-server.lua

Si se desea ver que dispositivos está detectando y mas, se debe habilitar el DEBUG:

   ./lua bobot-server.lua DEBUG

En el caso de usar pyBot se debe ejecutar:

   python pybot_server.py

Para habilitar el DEBUG:

   python pybot_server.py DEBUG

Luego de iniciado el servidor, podemos conectarnos desde el cliente pybot_client.py.

Uso de la API en Pippy y Python

Para poder utilizar la librería butiaAPI es necesario que especifiquemos la ruta donde se encuentra. Para ello, en Pippy agregamos:

   import sys
   sys.path.insert(0, '/home/olpc/Activities/TurtleBots.activity/plugins/butia')

La ruta /home/olpc.. es la ruta donde por defecto se encuentra TurtleBots cuando se instala en una XO. En otras computadoras puede variar. Asimismo, este truco permite utilizar la butiaAPI desde cualquier otro lugar en el sistema, directamente desde python.

Luego de tener eso, procedemos a usar la API.

Importando la API

Para importar el cliente:

   from pybot import pybot_client

No es necesario importar "pybot" ya que solo vamos a utilizar el cliente.

Para ver las todas las funciones entrar a: PyBot.