Difference between revisions of "Tutorial yarp"

From Asociación de Robótica UC3M
Jump to navigation Jump to search
(Replaced content with "__NOTITLE__ ---- '''Por favor rediríjanse a NUEVO TUTORIAL: https://asrob-uc3m.gitbooks.io/tutoriales/content/software/programming/yarp.html (https://github.com/asrob-u...")
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
A continuación, presentamos un mini-tutorial, destinado a establecer las comunicaciones en un entorno '''Yarp'''. La organización está basada en pequeñas lecciones que explican los primeros pasos para comprender Yarp. Para más información existe, en el apartado tutoriales, un enlace a la guía oficial de Yarp.
+
__NOTITLE__
  
'''Requisitos''': Se supone un mínimo conocimiento de sistemas '''Linux''', y de '''C++'''.
+
----
  
== Lección 1: "yarp server", "yarp write", y "yarp read" ==
+
'''Por favor rediríjanse a NUEVO TUTORIAL: https://asrob-uc3m.gitbooks.io/tutoriales/content/software/programming/yarp.html (https://github.com/asrob-uc3m/tutoriales/blob/a1033fa28d5acd7dc89da1d297df0e28c684c4fb/software/programming/yarp.md)'''
  
Abre una terminal en un sistema Linux (que llamaremos consola+número) y sigue estos pasos:
+
----
 
 
* consola1~$ yarp server
 
 
 
* consola2~$ yarp read /read
 
 
 
* consola3~$ yarp write /write /read
 
 
 
Ahora escribimos (casi) cualquier cosa en consola3 y vemos cómo aparece mágicamente en consola2.
 
 
 
== Lección 2: "yarp read" con función de "quit" ==
 
 
 
Crea un archivo llamado "loquesea.cpp" con este código:
 
 
 
#include <yarp/os/Network.h>
 
#include <yarp/os/Port.h>
 
#include <yarp/os/Bottle.h>
 
#include <stdio.h>
 
using namespace yarp::os;
 
int main() {
 
    Network yarp;
 
    Bottle bot;
 
    Port input;
 
    input.open("/read");
 
    while(1) {
 
        input.read(bot);
 
        printf("Got message: %s\n", bot.toString().c_str());
 
        // Now exit the loop if first element (this is, 0), treated as a string, equals "quit":
 
        if(bot.get(0).asString() == "quit") break;
 
    }
 
    input.close();
 
    return 0;
 
}
 
 
 
Abre una consola (que llamaremos consola1) en donde tengas ese archivo.
 
 
 
* consola1~$ yarp cmake
 
 
 
* consola1~$ mkdir build; cd build; cmake ..; make
 
 
 
* consola2~$ yarp server
 
 
 
* consola1~$ ./yarpy
 
 
 
* consola3~$ yarp write /write /read
 
 
 
Ahora escribimos (casi) cualquier cosa en consola3 y vemos cómo aparece mágicamente en consola1. Si escribimos "quit" en la consola3, vemos que el módulo de la consola1 se cierra, tal y como está explícito en el código que le hemos implementado.
 
 
 
 
 
== FAQ (Frequently asked questions o Preguntas frecuentes) ==
 
 
 
* P: ¿Que es /yarpy?
 
** R: Está definido en la línea 10 del CMakeLists.txt que genera "yarp cmake". Es simplemente el nombre por defecto que asigna al ejecutable que generas tras el cmake y make (o sistema de compilación que utilices). Prueba a cambiar esa palabra antes del cmake!
 
 
 
* P: ¿Que funcion tiene una botella?
 
** R: Es una estructura de datos flexible, un contenedor donde puedes incorportar enteros, cadenas de caracteres, coma flotante... Si nos fijamos en la declaración de la clase Port de YARP, no es más que un puerto especializado en manejar objetos de clase Bottle.
 

Latest revision as of 13:49, 1 December 2019