Desarrollo en ROS con Eclipse

Hemos hablado diversos posts sobre la plataforma ROS y ya sabemos de su potencia:

Por desgracia ROS, a pesar de su buena organización y documentación no presenta una curva de aprendizaje rápida. Inicialmente cuesta ubicarse entre tantos paquetes existentes y además el proceso de desarrollo puede ser lento si no se dispone de un IDE adecuado.

Eclipse puede solucionar ambos problemas simultáneamente, nos permitirá desarrollar de una manera mas cómoda y a la vez nos permitirá ubicarnos entre los distintos paquetes de ROS y aprender mas rápidamente. Con Eclipse es mas sencillo navegar entre los ficheros de código, paquetes y stacks. Por ejemplo cuando un símbolo en c++ es extraño para nosotros podemos ir a su definición usando ctrl+ left click. Además el desarrollo de nuevos paquetes es también mas sencillo dado que se puede utilizar el autocompletar. Por último también podrás depurar tu proyecto. Algo bastante importante.

Pasos para poder compilar y usar la herramienta de auto-completar:

  1. Descargar Eclipse con soporte CDT
  2. Establecer el workspace de eclipse en la raíz de la instalación (el directorio base de roscd)
  3. Arrancar desde consola el eclipse (se supone que tenéis registrado en vuestro .bashrc el setup.sh de ROS)
  4. Crear un nuevo proyecto C++ llamado stacks (directorio ya existente, aparecerá un warning)
      • Utilizar el tipo C++ -> Makefile Project -> Empty Project -> Ohter Toolchain
      1. Crear otro proyecto C++ llamado ros (directorio ya existente)
      2. Si te interesa compilar un paquete concreto, en las propiedades del proyecto-> C/C++ Build
          • make -C .
          • make -C . VERBOSE=1
          • rosmake nombrepaquete
        • Elige en BuildLocation-> Build Directory -> La url del paquete que deses compilar (es útil utilizar el botón workspace)
        • Deschequea el checkbox “Use Default Build Command” para utilizar un comando de construcción personalizado. Puedes poner varias alternativas
      3. Establece en el “Build Directory” el directorio del paquete que desees construir (haciendo uso del botón Workspace)
      4. Fin. Estas listo para navegar por el código de ros y recompilar paquetes
      5. Realizar el mismo proceso de creación de un proyecto para la carpeta /opt/ros/cturtle/ros, de esta forma podrás también navegar en las librerías básicas de ROS


        Observaciones:

        1. El autocompletar dentro del proyecto “stacks” funcionará correctamente pero solo con el código que esté situado en stacks. Por ejemplo <ros/ros.h> no funcionará puesto que está en el otro proyecto “ros”, para que funcione el autocompletar hay que establecer los Paths and Symbols en las propiedades del proyecto.
        2. Suponiendo que la instalación del código que estás utilizando es cturtle u otra instalación por defecto proveniente de un repositorio, es interesante crear un enlace simbólico en la carpeta /opt/ros/cturtle/stacks ($ROS_PACKAGE_PATH) a una carpeta externa donde ubiquemos nuestros proyectos y otras descargas o compilaciones manuales (por ejemplo de otros repositorios federados)

        16 Responses to Desarrollo en ROS con Eclipse

        1. David dice:

          Hola Pablo.
          Tengo pensado realizar el proyecto de fin de carrera sobre ROS y he leído esta entrada de tu blog y tengo una duda sobre lo que comentas de instalar Eclipse con soporte CDT. ¿Tengo que instalar alguna versión determinada de eclipse o el soporte CDT es a través de algún plugin que se instala posteriormente?
          Gracias. Un saludo.

        2. geus dice:

          Hola David. Yo en concreto utilizo la última versión de eclipse CDT. Creo que se llama Helios. Pero vamos, download en http://www.eclipse.org/cdt/

          ¿De qué universidad eres? Estaría bien que compartieras tu experiencia con ROS del proyecto fin de carrera. Al fin y al cabo la comunidad ROS en español aún es minúscula o incluso inexistente🙂. Así aprendemos todos.😉

          Saludos.

          • David dice:

            Ah, vale, es que no sabía lo que significaba CDT, jeje. Gracias.

            Pues he estudiado informática de sistemas en la uni de Sevilla, ya sólo me queda el proyecto.
            Siempre he sentido mucha curiosidad por la robótica, pero se había quedado sólo en eso, curiosidad. Ahora he visto la oportunidad de entrar en este mundo, aunque tengo la sensación de que me falta base, no se, haber tenido algún contacto o conocimientos previos de robótica. El “profe” me ha propuesto hacer algo con ROS y el robot de lego, ya veremos si sale algo que sea interesante para compartir, que no sepáis ya.
            Un saludo.

        3. geus dice:

          jaja, qué casualidad, pues yo trabajo también en la Unversidad de Sevilla. ¿Con qué profesor estás? ¿Departamento ATC? Ya sabes, cualquier cosa, pásate por aquí que te puedo echar una mano. Así vamos haciendo un poco de comunidad.

          Por otra parte, el Club .NET tiene un lego NXT, si vas ha hacer algo de utilidad seguro que puedes pasarte por allí y darle uso.

          Saludos.

          • David dice:

            ¡Anda! Ya había visto anunciado el DotNet club por la facultad alguna vez. He querido pasarme pero no he sabido donde estaba. ¿Donde está exactamente?, ¿se puede uno pasar en cualquier momento?, me gustaría conocer aquello.
            El profesor que lleva el proyecto es Juan Antonio Álvarez, de LSI. El robot ya me lo he comprado, pero si necesitara otro para el proyecto es bueno saber que allí puedo encontrar otro.
            Gracias por todo!
            Saludos.

            • GeuS dice:

              Ah genial, Juan Antonio Álvarez. La verdad que es un profesor muy activo y hace muchas cosas. Es genial que también por el LSI se estén interesando en tecnologías como ROS. Ya hablaré con él, la verdad que las posibilidades de colaboración y aprendizaje son muchísimas.

              Por cierto, probablemente la semana que viene hagamos un seminario interno sobre ROS en ATC, bueno mas que seminario Taller mas técnico (ya hicimos con anterioridad un seminario explicando la parte mas teórica). Todavía estamos viendo los contenidos, pero la idea es que la gente que asista monte un proyecto, trucos de desarrollo y guías de como se utilizan las herramientas que ROS ofrecen. Igual te interesa venirte.

              Saludos.

            • David dice:

              ¡Pues me encantaría ir! siempre que se pueda ir de oyente, porque de momento, poco puedo aportar yo sobre ROS. Excepto el martes, podría ir cualquier día a cualquier hora, así que si al final lo hacéis y aceptáis un mirón cuenta conmigo.

            • geus dice:

              David, si quieres vente mañana. Vamos a tener un seminario/taller a las 18:00. Vamos, no vamos a meternos en asuntos teóricos (ya se suponen explicados en la charla anterior), sino que mas bien en asuntos prácticos, crear proyectos, librerías, eclipse, herramientas, trucos de desarrollo, intercambio de opiniones, etc.

              Será en el seminario de ATC en el módulo L4, planta baja.

              La gente va a ir con su portátil y ROS instalado con repositorios de ubuntu. Versión CTurtle. Aunque estés verde con la tecnología allí somos unos cuantos que ya sabemos cosas sobre ella y seguro que sacas cosas.

              Envíame un email si tienes alguna duda … pabloinigo – – atc us es

              Saludos.

        4. Miguel dice:

          Hola
          Estoy haciendo el proyecto de fin de carrera con ROS.

          He encontrado el blog por casualidad buscando información del pakage rind, y me parece muy interesante y estoy seguro que me va a ser de mucha utilidad los post de ROS que teneis en el blog.

          Estoy intentando compilar un pakage de ROS con Eclipse, y no acabo de entender el proceso en el apartado 6 que describes arriba.

          ¿Me podrías dar mas pistas para compilar un pakage en concreto?

          Gracias

        5. geus dice:

          Hola Miguel! ¿sobre qué es tu proyecto fin de carrera si puede saberse?🙂 ¿Cuál es tu universidad? jeje Creo que es muy interesante que vayamos haciendo comunidad alrededor de ROS, así aprendemos todos y podemos compartir nuestras experiencias. Así que por supuesto, dime en qué te puedo ayudar🙂

          Saludos.

          • Miguel dice:

            Hola Pablo
            Mi proyecto va a ser una GUI para el diseño de experimentos, manejo de launchers … para ROS. Pretende ser una herramienta para facilitar la comunicacion con ROS.
            Estudio en la UAB(Universidad Autonoma de Barcelona), pero ahora mismo estoy en el Imperial College(London) para hacer el proyecto.

            La verdad es que no recuerdo cual era exactamente el problema que tuve con el eclipse, en cuanto me ponga a ello te comento si me funciona o no.

            Gracias por la respuesta, pensé que me llegaria una notificación al correo, hasta hoy no se me ha ocurrido mirar.

            • Pablo dice:

              Genial!! pues nada, toda la experiencia que puedas compartir es bienvenida eh!!🙂
              Yo estoy haciendo la tesis también en temas de robótica y utilizamos ROS, así que para futuros contactos, colaboraciones y proyectos, ten en cuenta que aquí abajo, en Sevilla también estamos liados con esto🙂

              PD: ¿Hay mucha gente en Barcelona trabajando con ROS?¿Y en Londres?

              Saludos.

            • Miguel dice:

              En barcelona se está usando cada vez mas, en Londres todo el laboratiorio, unas 9 personas, lo utilizan.

            • Pablo dice:

              🙂 Guay! Tu eres Miguel Prada .. en answers.ros.org??

            • Miguel dice:

              No😦

        6. Alonso dice:

          Hola Pablo!

          En primer lugar, decirte que enhorabuena por el blog, me parece muy útil y bien construido.

          En segundo lugar, decirte que estoy realizando el Proyecto Fin de Carrera con ROS en la Universidad de Jaén. Soy un alumno de Ingeniería Industrial, por lo que he dado muy poco sobre todo esto, y ando un poco perdido.

          La primera tarea que me mandó mi tutor fue “crear una interfaz en eclipse (con las librerías para desarrollar interfaces de Qt de Nokia) en la que pudiera visualizar un robot del software OpenRAVE y decirle que se desplazara a varios puntos del espacio, obteniendo las coordenadas de dichos puntos y las velocidades a las que se desplaza a dichos puntos”. Al ser usuario de Windows, instalé lo siguiente:
          – eclipse con los plugins: CDT, Qt eclipse integration C++, pydev
          – mingw
          – Qt (viene con Qtcreator y Qtdesgner) y pyQt (esto último lo instalé debido a que el tutor me dijo que todo lo desarrollaría en lenguaje python)
          – Librerías Boost C++
          – CMake.
          – Python 2.6.6, numpy superpack, PyReadline, IPython, SciPy, SymPy
          y seguí las instrucciones de instalación de OpenRAVE para Windows que vienen en: http://openrave.programmingvision.com/en/coreapihtml/installation_win.html sin exito, intente uno a uno solventar los errores de falta de librerias hasta que llegué a un error en una llamada boost_thread que no supe corregir.

          Tras instalar todo esto, el profesor me dijo que existía ROS, que quizás era más sencillo que utilizar que OpenRAVE, asi que tengo que hacer la misma tarea que te he comentado más arriba pero con ROS (en concreto, el profesor me indicó que utilizara la interfaz rviz). Así que decidí instalarme ubuntu, ya que la instalación era más sencilla, y parece que instalé con éxito ROS, pero estoy muy perdido en cómo hacer lo que me ha pedido el tutor y tengo varias preguntas que me gustaría hacerte:

          1. ¿Cómo debería empezar la tarea del profesor? Por una parte he leido tutoriales de python para aprender un poco del lenguaje, he instalado eclipse y todo lo que te he comentado, pero… ¿que debo hacer para crear una interfaz con esas características que permita simular un robot simple (que posteriormente será el que vamos a utilizar del que me darán los datos CAD) y obtener las velocidades y posiciones en ROS rviz?

          2. Al ejecutar rviz con “rosrun rviz rviz” da el fallo “Could not contact ROS master at [http://localhost:11311],retrying..” esto parece que lo he solventado escribiendo en otra terminal “roslaunch roslaunch example.launch” pero no se si ha sido casualidad… ¿Para que sirve “roslaunch” exactamente?

          3. Una vez ejecutado rviz tengo varios errores:
          – En primer logal, obtengo “Global Status: Warning” –> en Fixed frame: “No tf data. Actual error: Fixed Frame [/map] does not exist”. Busqué acerca del error y lo que llegué a enteder es que es un fallo de tf (ya que el insertar con el botón “Add” el item “TF” no aparecia nada en pantalla, asi que utilicé “view_frames” con el comando “rosrun tf view_frames” y el .pdf que genera dicho comando decía: “No tf data recieved” (no muestra ningún arbol como dice en el tutorial de esta página: http://www.ros.org/wiki/tf/Debugging%20tools). ¿Cómo puedo solucionar ésto?
          – ¿Como se inserta un robot para tener un ejemplo de simulación? Inserté un “Robot_model” pero me dice que no encuentra el robot…

          Bueno en fin, esa es más o menos mi situación… te doy las gracias por anticipado por atenderme, puedes o no puedas contestar a mis preguntas, y enhorabuena por tu blog de nuevo.

          Saludos,
          Alonso

        Responder

        Introduce tus datos o haz clic en un icono para iniciar sesión:

        Logo de WordPress.com

        Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

        Imagen de Twitter

        Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

        Foto de Facebook

        Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

        Google+ photo

        Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

        Conectando a %s

        A %d blogueros les gusta esto: