[Jderobot-dev] Nuevo Componente(Filtro Rojos)

Borja Menéndez Moreno b.menendez en alumnos.urjc.es
Jue Nov 1 10:38:40 CET 2012


Hola Jaime,

Vayamos por partes:

1) Para instalar gazebo 0.9 lo mejor que puedes hacer es bajarte de aquí
[1] la versión que quieras. Creo recordar que no hacía falta instalarse
ninguno de los tres programas que mencionas, pero ahora mismo no estoy del
todo seguro.

Por otra parte, el error que comentas que te sale puede ser que sea porque
no te has debido de instalar gearbox, ya que el error de compilación que te
da es por no poder compilar gbxsmartbatteryacfr, que pertenece a las
librerías de gearbox. Si y a te lo has instalado, lo mismo no ha sido la
versión que esté especificada en el manual. De cualquier forma, trata de
seguir lo que se dice en [2].

Por otra parte, y ya de cara al futuro, porque a mucha gente le ha pasado,
mira a ver qué versión tienes de gcc (pon en un terminal "gcc --version",
sin comillas) y si es una versión distinta de la 4.4 (aunque sea más
avanzada), instala la 4.4. Una vez hecho eso lo que debes hacer es enlazar
gcc a esa nueva versión. Te dejo, por si las necesitases, las instrucciones
exactas:

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
cd /usr/bin
sudo rm gcc
sudo rm g++
sudo ln -s gcc-4.4 gcc
sudo ln -s g++-4.4 g++

2) No estoy muy puesto en ice para C++ (espero que sea solo por el
momento), pero si te fijas en el manual propio de Ice [3], lo mismo es que
te faltan los includes en server.cpp (mira en la sección de cómo escribir
un Hola Mundo). De todas formas, yo no empezaría por ahí si no fuese
estrictamente necesario. Lo mismo ya hay algún componente que hace algo
parecido a lo que tú quieres hacer... No sé, opencvdemo quizás te pueda
inspirar, sobre todo porque si no recuerdo mal éste componente cogía
también la imagen que servía cameraserver. Podrías empezar por mirarte un
poco el código y modificarlo de manera que haga un filtro de rojos. Es una
idea para no tener que hacer un componente desde cero nada más empezar ;-)

No pidas perdón, aquí estamos todos igual que tú. Esto es una lista para
solucionar dudas y problemas que tengamos :)

Un saludo,

Borja.

[1] - http://jderobot.org/apt/dists/lucid/jderobot/binary-i386/
[2] -
http://jderobot.org/index.php/Manual-5#Installing_GearBox_development_package
[3] - http://www.zeroc.com/Ice-Manual.pdf


2012/11/1 jgandia <jaimerodriguezgandia en gmail.com>

> *Hola muy buenas, estoy intentando empezar a programar mi primer
> componente y
> me he quedado un poco bloqueado debido a la cantidad de errores que estoy
> recibiendo.
> Decidi compilar basic_component y leyendo algunos hilos me di cuenta que
> necesitaba gazeboserver para poder ejecutar basic_component.
> Entonces decidi bajarme Gazebo 0.9 desde sourceforge.net. Buscando por
> google  siempre me redirecciona para bajarme:
>
> -player
> -stage
> -websim
>
> me bajo player-3.0.2.tar.gz
> descomprimo
> realizo cmake
> make
> y me da el siguiente error:*
>
> 6%] Building CXX object
>
> server/libplayerdrivers/CMakeFiles/playerdrivers.dir/__/drivers/power/oceanserver.o
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc: In
> member function ‘bool OceanServer::ReadSensor()’:
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:187:
> error: argument of type ‘int
> (gbxsmartbatteryacfr::OceanServerSystem::)()const’ does not match ‘float’
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:193:
> error: invalid types ‘<unresolved overloaded function type>[unsigned int]’
> for array subscript
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:209:
> error: invalid types ‘<unresolved overloaded function type>[unsigned int]’
> for array subscript
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:212:
> error: invalid types ‘<unresolved overloaded function type>[unsigned int]’
> for array subscript
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:220:
> error: invalid types ‘<unresolved overloaded function type>[unsigned int]’
> for array subscript
> /home/jaime/Downloads/player-3.0.2/server/drivers/power/oceanserver.cc:223:
> error: invalid types ‘<unresolved overloaded function type>[unsigned int]’
> for array subscript
> make[2]: ***
>
> [server/libplayerdrivers/CMakeFiles/playerdrivers.dir/__/drivers/power/oceanserver.o]
> Error 1
> make[1]: *** [server/libplayerdrivers/CMakeFiles/playerdrivers.dir/all]
> Error 2
>
>
>
> *Que estoy haciendo mal?
>
> Otra duda:
>
> Estuve mirando el manual de jdeRobot 5.0 y vi como empezar a programar el
> primer Hola mundo CLiente-Servidor
>
> hasta el momento entendi que habia que crear un fichero:
>
> Printer.ice:*
>
>  module Demo {
>        interface Printer {
>             void printString(string s);
>        };
>     };
>
> *Luego nos dice que hay que crear un  archivo
>
> Client.cpp:*
>
> #include "Printer.h"
>   Ice::CommunicatorPtr ic;
> ic = Ice::initialize(argc,argv);
>  Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");
> // -p xxx -> where xxx is the port to send requests
>    PrinterPrx printer = PrinterPrx::checkedCast(base); // With the variable
> casted "printer" we can acces to remote functions.
>
>   catch (const Ice::Exception& ex) {
>      std::cerr << ex << std::endl;
>      status = 1;
>      } catch (const char* msg) {
>      std::cerr << msg << std::endl;
>      status = 1;
>      }
>
>
>      if (ic)
>         ic->destroy();
>
>
>
>
> *y un archivo:
>
> Server.cpp:*
>
>  class PrinterI : public Printer {
>       public:
>           virtual void printString(const string& s, const Ice::Current&);
>    };
> void
>    PrinterI::printString(const string& s, const Ice::Current&){
>        cout << s << endl;
>    }
> int
>    main(int argc, char* argv[])
>    {
>        int status = 0;
>        Ice::CommunicatorPtr ic;
>    try {
>        ic = Ice::initialize(argc, argv);
>    Ice::ObjectAdapterPtr adapter =
> ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p
> 10000");
> Ice::ObjectPtr object = new PrinterI;
>  adapter->add(object, ic->stringToIdentity("SimplePrinter"));
>    adapter->activate();
>  ic->waitForShutdown();
>    } //try
>  } catch (const Ice::Exception& e) {
>        cerr << e << endl;
>        status = 1;
>    } catch (const char* msg) {
>        cerr << msg << endl;
>        status = 1;
>    }
>    if (ic) {
>        try {
>            ic->destroy();
>        } catch (const Ice::Exception& e) {
>            cerr << e << endl;
>            status = 1;
>        }
>    }
>
>
>
> *Teniendo estos 3 achivos debemos de ejecutar la siguiente linea:
>
> #> slice2cpp Printer.ice
>
> La cual nos generara un Printer.cpp,Printer.h,Printer.o
>
> siguiendo el manual ejecutamos la siguiente linea:
>
> #> c++ -I. -I$ICE_HOME/include -c Printer.cpp Server.cpp*
>
> *y obtengo la siguiente lista de errores:*
>
> Server.cpp:2: error: expected class-name before ‘{’ token
> Server.cpp:4: error: ISO C++ forbids declaration of ‘string’ with no type
> Server.cpp:4: error: expected ‘,’ or ‘...’ before ‘&’ token
> Server.cpp:7: error: ISO C++ forbids declaration of ‘string’ with no type
> Server.cpp:7: error: expected ‘,’ or ‘...’ before ‘&’ token
> Server.cpp: In member function ‘virtual void PrinterI::printString(int)’:
> Server.cpp:8: error: ‘cout’ was not declared in this scope
> Server.cpp:8: error: ‘s’ was not declared in this scope
> Server.cpp:8: error: ‘endl’ was not declared in this scope
> Server.cpp: In function ‘int main(int, char**)’:
> Server.cpp:14: error: ‘Ice’ has not been declared
> Server.cpp:14: error: expected ‘;’ before ‘ic’
> Server.cpp:16: error: ‘ic’ was not declared in this scope
> Server.cpp:16: error: ‘Ice’ has not been declared
> Server.cpp:17: error: ‘Ice’ has not been declared
> Server.cpp:17: error: expected ‘;’ before ‘adapter’
> Server.cpp:18: error: ‘Ice’ has not been declared
> Server.cpp:18: error: expected ‘;’ before ‘object’
> Server.cpp:19: error: ‘adapter’ was not declared in this scope
> Server.cpp:19: error: ‘object’ was not declared in this scope
> Server.cpp:23: error: expected ‘catch’ before ‘}’ token
> Server.cpp:23: error: expected ‘(’ before ‘}’ token
> Server.cpp:23: error: expected type-specifier before ‘}’ token
> Server.cpp:23: error: expected ‘)’ before ‘}’ token
> Server.cpp:23: error: expected ‘{’ before ‘}’ token
> Server.cpp: At global scope:
> Server.cpp:23: error: expected unqualified-id before ‘catch’
> Server.cpp:26: error: expected unqualified-id before ‘catch’
> Server.cpp:30: error: expected unqualified-id before ‘if’
>
>
> *La verdad es que me he quedado bloqueado no se por donde seguir, me
> gustaria realizar un componente que hiciera un filtro de rojos a un video
> reproducido en cameraserver.
> Un saludo y perdon por las molestias*
>
>
>
> --
> View this message in context:
> http://jderobot-developer-list.2315034.n4.nabble.com/Nuevo-Componente-Filtro-Rojos-tp4640802.html
> Sent from the Jderobot Developer List mailing list archive at Nabble.com.
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20121101/5c50c7a6/attachment.htm 


More information about the Jde-developers mailing list