<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gonzalo.mercadante</id>
		<title>Proyecto Butiá - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gonzalo.mercadante"/>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Especial:Contribuciones/Gonzalo.mercadante"/>
		<updated>2026-04-05T19:03:46Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7357</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7357"/>
				<updated>2015-06-29T22:11:36Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Importando el jar y utilizando las funciones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder comprender correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
==Desarrollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distintas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el servidor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7351</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7351"/>
				<updated>2015-06-29T21:30:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Investigación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder comprender correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
==Desarrollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distintas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el servidor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7350</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7350"/>
				<updated>2015-06-29T21:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distintas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el servidor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7302</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7302"/>
				<updated>2015-06-29T17:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Utilizando el cliente java desde la consola */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el servidor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7301</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7301"/>
				<updated>2015-06-29T17:32:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Desarollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7297</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7297"/>
				<updated>2015-06-29T17:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anexo==&lt;br /&gt;
&lt;br /&gt;
===Actas===&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7283</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7283"/>
				<updated>2015-06-28T17:59:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego su traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7282</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7282"/>
				<updated>2015-06-28T17:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
    ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7281</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7281"/>
				<updated>2015-06-28T17:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;
        robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
        sleep(100);&lt;br /&gt;
        robot.set2MotorSpeed(1, 400, 0, 400, 0);&lt;br /&gt;
        sleep(10); // Calibrar&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} catch (InterruptedException ex) {&lt;br /&gt;
&lt;br /&gt;
     Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7280</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7280"/>
				<updated>2015-06-28T17:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
ButiaFunctions robot = new ButiaFunctions(); // POr defecto servidor en localhost, puerto 2009.&lt;br /&gt;
&lt;br /&gt;
//Codigo seguidor de lineas.&lt;br /&gt;
&lt;br /&gt;
boolean run = true;&lt;br /&gt;
while (run){&lt;br /&gt;
    try {&lt;br /&gt;
        while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
            sleep(100);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
            robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
            sleep(10);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } catch (InterruptedException ex) {&lt;br /&gt;
            Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7279</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7279"/>
				<updated>2015-06-28T17:35:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
        ButiaFunctions robot = new ButiaFunctions();&lt;br /&gt;
        boolean run = true;&lt;br /&gt;
        &lt;br /&gt;
        while (run){&lt;br /&gt;
            try {&lt;br /&gt;
            while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
                sleep(100);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
                &lt;br /&gt;
            } catch (InterruptedException ex) {&lt;br /&gt;
                    Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7278</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7278"/>
				<updated>2015-06-28T17:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejemplos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Realizando un cuadrado ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Seguidor de líneas ===&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
        ButiaFunctions robot = new ButiaFunctions();&lt;br /&gt;
        boolean run = true;&lt;br /&gt;
        &lt;br /&gt;
        while (run){&lt;br /&gt;
            try {&lt;br /&gt;
            while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
                sleep(100);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
                &lt;br /&gt;
            } catch (InterruptedException ex) {&lt;br /&gt;
                    Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7277</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7277"/>
				<updated>2015-06-28T17:33:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos básicos ===&lt;br /&gt;
&lt;br /&gt;
== Realizando un cuadrado ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Seguidor de líneas ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
        ButiaFunctions robot = new ButiaFunctions();&lt;br /&gt;
        boolean run = true;&lt;br /&gt;
        &lt;br /&gt;
        while (run){&lt;br /&gt;
            try {&lt;br /&gt;
            while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
                sleep(100);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
                &lt;br /&gt;
            } catch (InterruptedException ex) {&lt;br /&gt;
                    Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7276</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7276"/>
				<updated>2015-06-28T17:31:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto del serividor, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos básicos ===&lt;br /&gt;
&lt;br /&gt;
== Realizando un cuadrado ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un cuadrado con la API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Seguidor de líneas ==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el código necesario para realizar un seguidor de líneas con la API .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        import functions.ButiaFunctions;&lt;br /&gt;
&lt;br /&gt;
        ButiaFunctions robot = new ButiaFunctions();&lt;br /&gt;
        boolean run = true;&lt;br /&gt;
        &lt;br /&gt;
        while (run){&lt;br /&gt;
            try {&lt;br /&gt;
            while (robot.getGrey(1, 0)&amp;lt;31000 &amp;amp;&amp;amp; robot.getGrey(4, 0)&amp;lt;25000){ // Calibrar.&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 0, 400, 0);&lt;br /&gt;
                sleep(100);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            while(robot.getGrey(1, 0)&amp;gt;=31000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(0, 400, 1, 400, 0);//giro a la derecha&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            while(robot.getGrey(4, 0)&amp;gt;=25000){ // Si es negro&lt;br /&gt;
                robot.set2MotorSpeed(1, 400, 0, 400, 0);//giro a la izquierda&lt;br /&gt;
                sleep(10);&lt;br /&gt;
            }&lt;br /&gt;
                &lt;br /&gt;
            } catch (InterruptedException ex) {&lt;br /&gt;
                    Logger.getLogger(javabot_client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=IIIS_nr5jaU Aquí] se muestra un video del paso a paso para realizar el seguidor de líneas en NetBeans, mostrando cuáles son las importaciones que hay que hacer para utilizar la API.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=MtHbW-hjnZY Aquí] se muestra un video del seguidor de líneas realizado en el video anterior con la API Java.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7275</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7275"/>
				<updated>2015-06-28T17:18:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez levantado el cliente, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
'''Opción 1:'''&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente con el que se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Opción 2:'''&lt;br /&gt;
Si no se especifica el cliente, se asume que por defecto el servidor está en localhost:2009. Para utilizar las funciones hacer:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
Y luego por ejemplo: &lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos básicos ===&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7274</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7274"/>
				<updated>2015-06-28T16:47:40Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez corriendo, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, luego de creado el proyecto en java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functions.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
Opción 1:&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente, para de esta forma especificar con qué cliente se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions(cliente);&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opción 2:&lt;br /&gt;
No se especifica el cliente, y se asume que por defecto el servidor está en localhost:2009&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7273</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7273"/>
				<updated>2015-06-28T16:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez corriendo, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;br /&gt;
&lt;br /&gt;
Si se quiere realizar un programa y utilizar la API en Java, luego de creado el proyecto en java, se debe importar la librería javabot_robedu.jar en el proyecto.&lt;br /&gt;
Las importaciones que pueden necesitarse son:&lt;br /&gt;
&lt;br /&gt;
    import functons.ButiaFunctions;&lt;br /&gt;
    import javabot_client.javabot_client;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar las funciones, hay 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
Opción 1:&lt;br /&gt;
&lt;br /&gt;
Se especifica el cliente, para de esta forma especificar con qué cliente se acceden a la funciones para manejar el robot. Al cliente puede pasarse el host y puerto, o por defecto utilizar localhost y puerto 2009. A continuación se muestran los constructores para el cliente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    javabot_client cliente = new javabot_client(); // Por defecto localhost:2009.&lt;br /&gt;
    javabot_client cliente = new javabot_client(host, puerto); // Especificando el host y puerto del servidor.&lt;br /&gt;
&lt;br /&gt;
Luego, para utilizar la funciones debe hacerse:&lt;br /&gt;
&lt;br /&gt;
    ButiaFunctiones robot = new ButiaFunctions();&lt;br /&gt;
&lt;br /&gt;
A continuación se muestran algunas de las funciones sobre los sensores:&lt;br /&gt;
&lt;br /&gt;
   robot.getButton(port, board)                    // obtiene el valor del sensor botón conectado en el puerto port&lt;br /&gt;
   robot.getDistance(port, board)                  // obtiene el valor del sensor de distancia conectado en el puerto port&lt;br /&gt;
   robot.getGray(port, board)                      // obtiene el valor del sensor de grises conectado en el puerto port&lt;br /&gt;
   robot.getLight(port, board)                     // obtiene el valor del sensor de luz conectado en el puerto port&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opción 2:&lt;br /&gt;
No se especifica el cliente, y se asume que por defecto el servidor está en localhost:2009&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7272</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7272"/>
				<updated>2015-06-28T16:27:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez corriendo, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7271</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7271"/>
				<updated>2015-06-28T16:27:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez corriendo, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
Por defecto, se asume que el serivdor está en el host = localhost y puerto = 2009. Si se desea especificar otro host o puerto, puede ejecutarse de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar localhost puerto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7270</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7270"/>
				<updated>2015-06-28T16:21:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizando el cliente java desde la consola ===&lt;br /&gt;
&lt;br /&gt;
Una vez que se tiene corriendo el servidor, se puede ejecutar el cliente desde la consola de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
    java -jar javabot_robedu.jar&lt;br /&gt;
&lt;br /&gt;
Una vez corriendo, pueden ingresarse los diferentes comandos para comunicarse con el serivdor y manejar el robot.&lt;br /&gt;
#[https://www.youtube.com/watch?v=_7E9b8iP8CI Aquí] puede verse un video ejemplo, donde se manejan los motores de butiá mediante el cliente java.&lt;br /&gt;
&lt;br /&gt;
=== Importando el jar y utilizando las funciones ===&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7269</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7269"/>
				<updated>2015-06-28T16:05:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
'''Cliente Python:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cliente Java:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==¿Cómo utilizar la API en Java?==&lt;br /&gt;
&lt;br /&gt;
=== Antes de empezar ===&lt;br /&gt;
&lt;br /&gt;
En el caso de usar [[pyBot]] se debe ejecutar:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py&lt;br /&gt;
&lt;br /&gt;
Para habilitar el DEBUG:&lt;br /&gt;
&lt;br /&gt;
    python pybot_server.py DEBUG&lt;br /&gt;
&lt;br /&gt;
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7268</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7268"/>
				<updated>2015-06-28T15:59:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
Cliente Python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliente Java:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public String doCommand(String msg) {&lt;br /&gt;
        /* Executes a command in butia.@param msg message to be executed*/&lt;br /&gt;
        msg = msg + '\n';&lt;br /&gt;
        String ret = &amp;quot;&amp;quot;;&lt;br /&gt;
        try {&lt;br /&gt;
            this.lock.acquire();&lt;br /&gt;
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));&lt;br /&gt;
            outToServer.write(msg.getBytes());&lt;br /&gt;
            outToServer.flush();&lt;br /&gt;
            &lt;br /&gt;
            char[] respuesta = new char[1024];&lt;br /&gt;
            inFromServer.read(respuesta);&lt;br /&gt;
            ret = String.valueOf(respuesta);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            ret = &amp;quot;&amp;quot; + ERROR;&lt;br /&gt;
            process_error(e);&lt;br /&gt;
        }&lt;br /&gt;
        this.lock.release();&lt;br /&gt;
        return ret;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7267</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7267"/>
				<updated>2015-06-28T15:57:35Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:&lt;br /&gt;
&lt;br /&gt;
Cliente Python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def _doCommand(self, msg, ret_type = str):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        Executes a command in butia.&lt;br /&gt;
        @param msg message to be executed&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        msg = msg + '\n'&lt;br /&gt;
        ret = ERROR&lt;br /&gt;
        self._lock.acquire()&lt;br /&gt;
        try:     &lt;br /&gt;
            self._client.send(msg)&lt;br /&gt;
            ret = self._client.recv(1024)&lt;br /&gt;
            ret = ret[:-1]&lt;br /&gt;
        except Exception, e:&lt;br /&gt;
            self._process_error(e)&lt;br /&gt;
        try:&lt;br /&gt;
            ret = ret_type(ret)&lt;br /&gt;
        except:&lt;br /&gt;
            ret = ERROR&lt;br /&gt;
        self._lock.release()&lt;br /&gt;
        return ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliente Java:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7266</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7266"/>
				<updated>2015-06-28T15:54:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Investigación==&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar.&lt;br /&gt;
Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir.&lt;br /&gt;
Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;br /&gt;
&lt;br /&gt;
Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7265</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7265"/>
				<updated>2015-06-28T15:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7264</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7264"/>
				<updated>2015-06-28T15:43:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizara el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7263</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Java&amp;diff=7263"/>
				<updated>2015-06-28T15:43:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tutor==&lt;br /&gt;
*Federico Andrade&lt;br /&gt;
&lt;br /&gt;
==Objetivo==&lt;br /&gt;
&lt;br /&gt;
Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente.&lt;br /&gt;
Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actas==&lt;br /&gt;
&lt;br /&gt;
===3 de junio de 2015===&lt;br /&gt;
* Fueron planteadas las principales características del proyecto.&lt;br /&gt;
* Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizara el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2: &lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/functions.py functions.py]&lt;br /&gt;
#[http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/pybot/pybot_client.py pybot_client.py]&lt;br /&gt;
&lt;br /&gt;
=== 24 de junio de 2015 ===&lt;br /&gt;
* Se probaron los ejemplos realizados.&lt;br /&gt;
* Se establecieron las pautas para la entrega y presentación.&lt;br /&gt;
&lt;br /&gt;
==Desarollo==&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Los_supersonicos&amp;diff=6951</id>
		<title>Los supersonicos</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Los_supersonicos&amp;diff=6951"/>
				<updated>2015-04-26T23:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Integrantes===&lt;br /&gt;
&amp;lt;b&amp;gt;Butiá&amp;lt;/b&amp;gt;&lt;br /&gt;
*Santiago Behak&lt;br /&gt;
*Gonzalo Mercadante&lt;br /&gt;
*Fernanda Toledo&lt;br /&gt;
&amp;lt;b&amp;gt;Lego&amp;lt;/b&amp;gt;&lt;br /&gt;
*Camila Serena&lt;br /&gt;
*Josefina Fasoli&lt;br /&gt;
*Gonzalo Herrera&lt;br /&gt;
===El trabajo realizado por cada sub-equipo y las decisiones tomadas.===&lt;br /&gt;
&amp;lt;b&amp;gt;Butiá&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el kit butiá se pretendía resolver los problemas asociados a la traslación del robot. Lo primero que se realizó fue el seguidor de líneas, para que el robot pudiera seguir el camino correctamente. Además se agregó un sensor de distancia en uno de los laterales, para detectar las casas. &lt;br /&gt;
Una vez detectada una casa, el siguiente problema a enfrentar fue girar el robot y avanzar hasta poder detectar al gato. Para esto se hizo girar el butiá y se utilizó un sensor de distancia del kit Lego (por ser más preciso), para poder detectar el momento en el cual el robot se encontrara a la distancia deseada para que el Lego pudiera agarrar al gato. A partir de ese momento se le pasaba el control al kit Lego.&lt;br /&gt;
Luego de agarrado el gato, el siguiente problema a enfrentar por el kit butiá era girar hasta encontrar la casa. Tanto para detectar el gato como para detectar la casa, se tomó la decisión de ir girando hasta encontrar el elemento (gato o casa) y luego ir acercandose tratando de alinearse al elemento. Este fue uno de los grandes problemas que se tuvo, dada la gran presición que se debía tener.&lt;br /&gt;
Por último, el butiá debía tener la capacidad de poder volver a la línea y seguir el camino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Lego&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el kit lego se pretendía resolver el problema de salvar al gato y poder devolverlo a su hogar. Para esto nuestro equipo armo una garra, que a su vez tenía la movilidad de subir y bajar, lo que permitía agarrar al gato desde arriba y tenes menos probabilidades de tirar el árbol con la garra. La garra fue lograda con un motor lego y un sistema de engranajes. Una de las paletas de la garra sigue el mismo giro que el motor y la otra el giro contrario gracias al uso de engranajes, lo que genera el cerrar o abrir de la garra.  &lt;br /&gt;
&lt;br /&gt;
===Aspectos de integración de los equipos.===&lt;br /&gt;
En esta parte, ambos equipos tuvimos que coordinar ambos kits para cumplir el objetivo. En nuestro caso el mayor desafío se presento al tener que posicionar la garra exactamente encima del gato para poder salvarlo exitosamente.&lt;br /&gt;
===Código desarrollado.===&lt;br /&gt;
[[Archivo:DesafioButia.png]]&lt;br /&gt;
===Material multimedia.===&lt;br /&gt;
&amp;lt;b&amp;gt;Por partes&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:BrazoLego1.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:BrazoLego2.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
====Video====&lt;br /&gt;
https://youtu.be/krWncvX1u9I&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Ya todo integrado&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:RobotSupersonicos.jpg]]&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6815</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6815"/>
				<updated>2015-04-18T13:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6814</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6814"/>
				<updated>2015-04-18T13:57:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6813</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6813"/>
				<updated>2015-04-18T13:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6812</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6812"/>
				<updated>2015-04-18T13:53:56Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Medir distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6811</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6811"/>
				<updated>2015-04-18T13:53:20Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Senso distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6810</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6810"/>
				<updated>2015-04-18T13:51:48Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro. Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6809</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6809"/>
				<updated>2015-04-18T13:50:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Movimiento:''' El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* '''Distancia:''' Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro.&lt;br /&gt;
Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6808</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6808"/>
				<updated>2015-04-18T13:50:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Movimiento: El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro. Butiá es más fácil de manejar si se quiere un movimiento simple pero lego permite un mejor manejo mediante la potencia y las rotaciones.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Distancia: Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro.&lt;br /&gt;
Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6807</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6807"/>
				<updated>2015-04-18T13:49:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
* Movimiento: El manejo del movimiento en ambos kits es diferente, por lo tanto dependiendo de qué tipo de movimiento se pretenda, puede convenir utilizar uno o el otro.&lt;br /&gt;
&lt;br /&gt;
* Distancia: Como se mencionó anteriormente, Lego utiliza ultrasonido mientras que butiá utiliza infrarrojo, por lo tanto esto puede llevar a que dependiendo de ciertas condiciones, uno de los dos funciones mejor que el otro.&lt;br /&gt;
Por ejemplo, en el caso del sensor de ultrasonido de Lego, no influyen ni los materiales ni los colores para sensar la distancia. Esto puede considerarse una ventaja sobre butiá.&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6806</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6806"/>
				<updated>2015-04-18T13:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Generales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego. Esto posiblemente se deba a que los sensores de distancia del kit Lego utilizan ultrasonido, mientras que los del kit Butiá utilizan infrarrojo.&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6805</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6805"/>
				<updated>2015-04-18T13:30:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
*Luego de realizadas las pruebas, se pudo ver que para algunos sensores el kit Lego era más preciso. En el caso de butia, para una misma situación, los valores obtenidos podían llegar a variar bastante. Un ejemplo de esto es el sensor de distancia, que colocado a una misma distancia, se obtenían valores que variaban más que en el caso Lego.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6804</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6804"/>
				<updated>2015-04-18T13:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6803</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6803"/>
				<updated>2015-04-18T13:25:13Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6802</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6802"/>
				<updated>2015-04-18T13:24:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Botón====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sensor distancia&lt;br /&gt;
! Sensor luz&lt;br /&gt;
! Sension presión (botón)&lt;br /&gt;
! Sensor sonido&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Escala 0 - 100 aprox.||0 - 100 aprox.|| Valores: 0 o 1 || 0 -100 aprox.&lt;br /&gt;
|-&lt;br /&gt;
|Suelto||0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6801</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6801"/>
				<updated>2015-04-18T13:22:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Botón====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sensor distancia&lt;br /&gt;
! Sensor luz&lt;br /&gt;
! Sension presión (botón)&lt;br /&gt;
! Sensor sonido&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Apretado||1&lt;br /&gt;
|-&lt;br /&gt;
|Suelto||0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6800</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6800"/>
				<updated>2015-04-18T13:21:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Botón====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Estado&lt;br /&gt;
! Valor&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Apretado||1&lt;br /&gt;
|-&lt;br /&gt;
|Suelto||0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6799</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6799"/>
				<updated>2015-04-18T13:20:04Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6798</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6798"/>
				<updated>2015-04-18T13:19:40Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Kit Lego: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6797</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6797"/>
				<updated>2015-04-18T13:19:06Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Butia:===&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6796</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6796"/>
				<updated>2015-04-18T13:18:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: /* Actuadores utilizados y pruebas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
'''Kit butia'''&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Kit lego'''&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6795</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6795"/>
				<updated>2015-04-18T13:18:09Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
'''Kit butia'''&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores, y se puede indicar hacia dónde debe ser el movimiento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Kit lego'''&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. En este kit el motor se pude controlar especificando potencia y cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
 Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6794</id>
		<title>Grupo 7</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Grupo_7&amp;diff=6794"/>
				<updated>2015-04-18T13:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo.mercadante: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Integrantes ==&lt;br /&gt;
 &lt;br /&gt;
* Santiago Behak&lt;br /&gt;
* Gonzalo Mercadante&lt;br /&gt;
* Fernanda Toledo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desarrollo de la actividad==&lt;br /&gt;
&lt;br /&gt;
Para poder apreciar las desviaciones de cada uno de los sensores se trabajó con cada uno de los kits y se tomaron varias veces las mismas mediciones para poder ver que tan grande era la desviación.&lt;br /&gt;
Para tomar las medidas se utilizó turtlebots, y para cada sensor se realizó un pequeño programa que permitiera tomar las medidas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
===Kit Lego:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala 0 - 100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores: 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de sonido: Escala: 0 -100 aprox.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kit Butiá:===&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de presión(botón): Valores 0 o 1.&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de luz: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor de distancia: Escala: 0 - 65535.&amp;lt;/i&amp;gt;&lt;br /&gt;
Existe una distancia mínima en la cual si el sensor se acerca más al material entonces este deja de proporcionar valores correctos. La mínima distancia obtenida en el laboratorio fue 24785.&lt;br /&gt;
*&amp;lt;i&amp;gt;Sensor escala de grices: Escala: 0 - 65535&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Actuadores utilizados y pruebas==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el kit butiá se puede controlar la velocidad de los motores mientras que en el lego se puede controlar la potencia y la cantidad de rotaciones.&lt;br /&gt;
&lt;br /&gt;
La potencia en el kit lego puede variar entre los valores -127 y 127. Además se observó que en ambos motores hay un valor mínimo a partir del cual para valores inferiores entonces el motor no se mueve.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
===Generales===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparación de los dos Kits (Ventajas y Desventajas de cada uno)===&lt;br /&gt;
&lt;br /&gt;
*Se plantea la investigación varios kits robóticos para hacer un revelamiento de los actuadores que incorpora.&lt;br /&gt;
*Uno de los actuadores a incorporar será el motor pasos a paso y para comenzar a trabajar en este tipo de motores debemos discutir varios puntos por lo cual decidimos&lt;/div&gt;</summary>
		<author><name>Gonzalo.mercadante</name></author>	</entry>

	</feed>