Diferencia entre revisiones de «API»

De Proyecto Butiá
Saltar a: navegación, buscar
m (Antes de empezar)
m
 
Línea 1: Línea 1:
 
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.
 
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]].
  
 
==Antes de empezar==
 
==Antes de empezar==
Línea 12: Línea 13:
 
     ./lua bobot-server.lua DEBUG
 
     ./lua bobot-server.lua DEBUG
  
En el caso de usar [[pybot]] se debe ejecutar:
+
En el caso de usar [[pyBot]] se debe ejecutar:
  
 
     python pybot_server.py
 
     python pybot_server.py
Línea 44: Línea 45:
 
No es necesario importar "pybot" ya que solo vamos a utilizar el cliente.
 
No es necesario importar "pybot" ya que solo vamos a utilizar el cliente.
  
==Pybot Client==
+
Para ver las todas las funciones entrar a: [[PyBot]].
 
+
Descripción de las funciones y algunos ejemplos.
+
 
+
'''Instanciar la clase:'''
+
 
+
<syntaxhighlight lang="python">
+
    robot = pybot_client.robot()
+
</syntaxhighlight>
+
 
+
'''Versión del Firmware:'''
+
Devuelve la versión del firmware de la placa con el que estamos trabajando
+
 
+
<syntaxhighlight lang="python">
+
    ver = robot.getFirmwareVersion()
+
    print ver
+
</syntaxhighlight>
+
 
+
'''Cerrar:'''
+
Cierra la comunicación con el servidor
+
 
+
<syntaxhighlight lang="python">
+
    robot.close()
+
</syntaxhighlight>
+
 
+
'''Conexión/Desconexión con el servidor:'''
+
Conecta o Reconecta con el servidor
+
 
+
<syntaxhighlight lang="python">
+
    robot.reconnect()
+
</syntaxhighlight>
+
 
+
'''Cerrar cliente y servidor:'''
+
Cierra el servidor y el cliente
+
 
+
<syntaxhighlight lang="python">
+
    robot.closeService()
+
</syntaxhighlight>
+
 
+
== Módulos ==
+
 
+
'''listarModulos:'''
+
 
+
devuelve la lista de los modulos disponibles en el firmware de la placa
+
 
+
 
+
<syntaxhighlight lang="python">
+
modulos = robot.listarModulos()
+
print modulos
+
</syntaxhighlight>
+
 
+
 
+
'''llamarModulo:'''
+
 
+
Operacion de llamada de una funcion de un modulo (CALL)
+
 
+
 
+
<syntaxhighlight lang="python">
+
robot.llamarModulo(modulename, function , params = "")
+
</syntaxhighlight>
+
 
+
 
+
Para conocer la lista de funciones de un módulo y sus parametros puede ejecutarse en un terminal:<br>
+
<br>
+
<syntaxhighlight lang="text">
+
telnet localhost 2009
+
DESCRIBE nombre_de_modulo
+
</syntaxhighlight>
+
A futuro hay que exportar este servicio en la API<br>
+
 
+
== Funciones Varias ==
+
 
+
'''isPresent'''
+
 
+
Retorna si esta presente el modulo<br>
+
 
+
 
+
<syntaxhighlight lang="python">
+
robot.isPresent (moduloname)
+
</syntaxhighlight>
+
 
+
 
+
'''loopBack'''
+
 
+
Módulo loopBack: modulo de ayuda presente en el butiá que
+
envía un mensaje a la placa y espera recibir exactamente lo que fue enviado
+
 
+
 
+
<syntaxhighlight lang="python">
+
datoRet = butiabot.loopBack("hola")
+
print datoRet
+
> hola
+
</syntaxhighlight>
+
 
+
== Motores ==
+
 
+
Operaciones solicidatas al driver motores.lua
+
 
+
 
+
'''setVelocidadMotores'''
+
 
+
robot.set2MotorSpeed(self, sentidoIzq = "0", velIzq = "0", sentidoDer = "0", velDer = "0")
+
 
+
 
+
sentido: 0: adelante, 1: atras
+
velocidad: 0..1023
+
 
+
 
+
Detiene los 2 motores:
+
 
+
<syntaxhighlight lang="python">
+
robot.set2MotorSpeed("0", "0", "0", "0")
+
</syntaxhighlight>
+
 
+
 
+
robot.set2MotorSpeed("0", "500", "1", "500") - gira a la izquierda
+
 
+
robot.set2MotorSpeed("1", "500", "1", "500") - va hacia atrás
+
 
+
robot.set2MotorSpeed("0", "500", "0", "500") - va hacia adelante
+
 
+
robot.set2MotorSpeed("1", "500", "0", "500") - gira a la derecha
+
 
+
 
+
 
+
 
+
 
+
'''setVelMotor'''
+
 
+
robot.setMotorSpeed(self, idMotor = "0", sentido = "0", vel = "0")
+
 
+
 
+
idMotor: 0: motor derecho, 1: motor izquierdo
+
 
+
 
+
Va hacia adelante:
+
<syntaxhighlight lang="python">
+
robot.setMotorSpeed("1","1","500")
+
robot.setMotorSpeed("0","1","500")
+
</syntaxhighlight>
+
 
+
 
+
Va hacia atrás:
+
<syntaxhighlight lang="python">
+
robot.setMotorSpeed("1","0","500")
+
robot.setMotorSpeed("0","0","500")
+
</syntaxhighlight>
+
 
+
== Sensores ==
+
 
+
port es el número de puerto donde se encuentra conectado el sensor
+
 
+
getButton(port)
+
+
getLight(port)
+
 
+
getDistance(port)
+
+
getGray(port)
+
 
+
getTemperature(port)
+
 
+
getResistance(port)
+
 
+
getVoltage(port)
+
 
+
setLed(level)
+
level is 0: off or 1: on
+
 
+
== Carga de batería ==
+
 
+
Esta operacion nos devuelve la carga aproximada de las pilas del robot con un error de 0.1 volt.
+
La medición de la carga la realizan los motores, por lo cual, si no se tienen los motores, el
+
valor devuelto es -1.
+
 
+
'''Carga de la Batería'''
+
 
+
<syntaxhighlight lang="python">
+
carga = robot.getBatteryCharge()
+
print carga
+
</syntaxhighlight>
+

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.