Diferencia entre revisiones de «API»
(→Uso de la butiaAPI en Pippy y Python) |
(→butiaAPI) |
||
Línea 36: | Línea 36: | ||
Luego de tener eso, procedemos a usar la API. | 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. | ||
+ | |||
+ | ==Pybot Client== | ||
Descripción de las funciones y algunos ejemplos. | Descripción de las funciones y algunos ejemplos. | ||
Línea 43: | Línea 51: | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
− | robot = | + | robot = pybot_client.robot() |
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 23:33 7 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.
Contenido
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.
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.
Pybot Client
Descripción de las funciones y algunos ejemplos.
Instanciar la clase:
robot = pybot_client.robot()
Versión del Firmware: Devuelve la versión del firmware de la placa con el que estamos trabajando
ver = robot.getFirmwareVersion()
print ver
Cerrar: Cierra la comunicación con el servidor
robot.close()
Conexión/Desconexión con el servidor: Conecta o Reconecta con el servidor
robot.reconnect()
Cerrar cliente y servidor: Cierra el servidor y el cliente
robot.closeService()
Módulos
listarModulos:
devuelve la lista de los modulos disponibles en el firmware de la placa
modulos = robot.listarModulos()
print modulos
llamarModulo:
Operacion de llamada de una funcion de un modulo (CALL)
robot.llamarModulo(modulename, function , params = "")
Para conocer la lista de funciones de un módulo y sus parametros puede ejecutarse en un terminal:
telnet localhost 2009
DESCRIBE nombre_de_modulo
A futuro hay que exportar este servicio en la API
Funciones Varias
isPresent
Retorna si esta presente el modulo
robot.isPresent (moduloname)
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
datoRet = butiabot.loopBack("hola")
print datoRet
> hola
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:
robot.set2MotorSpeed("0", "0", "0", "0")
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:
robot.setMotorSpeed("1","1","500")
robot.setMotorSpeed("0","1","500")
Va hacia atrás:
robot.setMotorSpeed("1","0","500")
robot.setMotorSpeed("0","0","500")
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
carga = robot.getBatteryCharge()
print carga