WidowX+ROS: Primeras pruebas unitarias / First unit tests

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Como comenté en el post anterior, estamos trabajando con un brazo WidowX instalado sobre un Turtlebot. Estas son las muy primeras, muy iniciales y muy parciales pruebas 🙂 que hemos realizado: un “home” básico, en el que las articulaciones de la 1 a la 5 se posicionan en 0º.  Por si fuera de utilidad, este código de prueba está disponible en mi GitHub,  y poco a poco iremos añadiendo pruebas más complicadas. Está preparado para trabajar con el software ROS para WidowX de Robotnik Automation.

Ahora mismo, las articulaciones no se relajan desde código; para lograrlo, llamar desde consola al servicio de relax de las articulaciones; por ejemplo, rosservice call /arm_5_joint/relax

 

As I commented in the previous post, we are working with a WidowX arm fixed on a Turtlebot 2. These are the very first, very preliminar and very partial tests 🙂 we have performed: a basic “home”, with joints from 1 to 5 set to 0º . In case it could be useful, I have uploaded this code to my GitHub, though we will keep adding more tests. The code is prepared to work with the ROS software for WidowX created by Robotnik Automation.

Right now, joints are not relaxed from code; to do this, you should call from console to the relax service of every joint; for example, rosservice call /arm_5_joint/relax

WidowX + Arbotix + ROS Indigo

Facebooktwittergoogle_plusredditpinterestlinkedinmail


[In English]

Estamos trabajando con el brazo WidowX instalado en nuestro Turtlebot 2. El brazo utiliza los drivers de Arbotix para ROS Indigo. Estas son las diferencias encontradas con la documentación original de la web:

  • La instalación desde apt-get no funciona, ya que cuando se crea el paquete aparecen errores. Es mejor descargar los drivers desde el github de Vanadium. Si se va a escoger sólo una parte de los drivers, es necesario asegurarse que se bajan todos los paquetes ROS necesarios; por ejemplo, no debería faltar el paquete de mensajes de arbotix.
  • El código fuente se copia al directorio de trabajo de ROS (en mi caso, que uso el directorio típico creado por ROS, /home/catkin_ws/src). Luego se crea como cualquier otro paquete ROS usando catkin_make .
  • El paquete arbotix_python también presenta diferencias con la documentación de ROS. Una vez creado el paquete, en el directorio_de_trabajo/src/arbotix_python/bin aparecen tres ficheros: arbotix_driver, arbotix_gui (en lugar de controllerGUI.py) y arbotix_terminal (y no terminal.py)
    • arbotix_terminal debe lanzarse tal cual, es decir,  ejecutando  ./arbotix_terminal sin lanzar roscore.
    • arbotix_driver y arbotix_gui necesitan lanzarse en ROS, es decir, con roscore ejecutándose.
    • arbotix_gui, además, parece venir preparado para un modelo URDF/XACRO concreto que no encuentra, ya que al ejecutarlo no aparecen las articulaciones del brazo en el interfaz gráfico que se abre, y en la ventana de comandos se muestra el error No URDF defined, proceeding with defaults. Bicheando un poco en el código, he visto que arbotix_gui llama a la función getJointsFromURDF, que está en directorio_de_trabajo/src/arbotix_python/joints.py y que carga el parámetro robot_description con el modelo URDF que utilizará. He intentado modificar este parámetro robot_description con otro modelo llamando a rosparam set /directorio_del_modelo/modelo.xacro (roscore debe estar lanzado), pero, aunque getJointsFromURDF sí encuentra este nuevo modelo, el resto del código de la función no está, aparentemente, preparado para él, así que por ahora voy a dejarlo y a centrarme en la programación del brazo que realmente necesitamos.


[En español]

We are working with the WidowX arm set on our Turtlebot 2. This arm uses the Arbotix drivers for ROS Indigo.  These are the differences with the documentation in the web:

  • Installation from apt-get does not work: errors arise when the package is created. The best option is to download the drivers from the Vanadium repository at github. If you download just a subset of the drivers, make sure that you choose all the basic ROS packages; for example, don’t forget to download de arbotix messages package.
  • All the source code should be copied to the ROS workspace (for example, I use the default workspace created by ROS, so I put it into /home/catkin_ws/src). After that, the package is created like any other ROS package with catkin_make .
  • arbotix_python package has also differences with ROS documentation. Once the package is created, three files are stored in your_workspace/src/arbotix_python/bin folder: arbotix_driver, arbotix_gui (instead of controllerGUI.py) and arbotix_terminal (not terminal.py)
    • arbotix_terminal runs “stand alone”, i.e.,  calling to  ./arbotix_terminal without a launched roscore.
    • arbotix_driver and arbotix_gui must be run within ROS, i e., with a running roscore.
    • Furthermore, arbotix_gui waits for a specific URDF/XACRO model that cannot find: the gui does not open all the joints of the arm, and the command window shows error No URDF defined, proceeding with defaults. Tracing the code, I found that arbotix_gui calls to function getJointsFromURDF in your_workspace/src/arbotix_python/joints.py, which in turn loads the robot_description parameter, that stores the URDF model used by this function. I tried to set another model in this parameter, running  rosparam set /model_folder/model.xacro (roscore must be running), but, though getJointsFromURDF does find this new model, the rest of the code of this function is not prepared to work handle it, so by now I am going to skip this question and move to the programming of the arm that we really need.

 

Playing with Leaflet and R :)

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Pequeña prueba con Leaflet y R… una combinación estupenda 🙂 Los datos corresponden al mes de Mayo de 2015 del proyecto Málaga City Sense, y representan información sobre operadores, estado de carga y modelo (aparece como un pop-up) de teléfonos inteligentes usados en Málaga; están disponibles en el Portal de Datos Abiertos del Ayto. de Málaga. El código R está disponible en mi GitHub.

This is a small test using Leaflet and R… a really cool combination 🙂 The data belong to the Málaga City Sense project (May 2015), and they represent information about phone providers, battery level and devices (as a pop-up) of smartphones deployed in Málaga; they are available at the Open Data Website of the Málaga Townhall. The R code can be found at my GitHub.

R + RStudio + PostGIS + Xubuntu 14.04/Debian jessie

Facebooktwittergoogle_plusredditpinterestlinkedinmail


[In English]

Estos son los pasos para poder obtener datos de una base de datos PostGIS desde RStudio trabajando en Xubuntu 14.04 o en Debian jessie:

  1. Deben estar instaladas las librerías libgeos, libgeos-c1, libgeos-dev y libgeos++-dev; las dos primeras ya las tenía instaladas tanto en Xubuntu como en jessie, pero las dos últimas las he tenido que añadir desde Synaptics, según se indica en este enlace de AskUbuntu.
  2. En RStudio, hay que instalar y después cargar los paquetes RPostgreSQL, rgeos y sp.
  3. Después hay que crear la conexión a la base de datos:

    drv <- dbDriver(“PostgreSQL”)

    con<- dbConnect(drv,dbname=’tuBD’,host=’localhost’,port=5432,user=’tuUsuario’,password=’tuPw’)

  4. Para obtener datos que utilicen información extraída de una tabla con datos espaciales, deben usarse las funciones PostGIS habituales de acceso a geometrías:

data <- dbGetQuery(con,”SELECT nongeocolumn, ST_AsText(geocolumn) FROM yourtable”)

Una vez finalizado el trabajo con la BD, se cierran conexión y driver:

dbDisconnect(con)
dbUnloadDriver(drv)

Los pasos 2-4 están explicados en este enlace de R-bloggers. A partir de él he subido a Github un pequeño script R (accessDB.R) que realiza la instalación y carga de paquetes, y la conexión a la base de datos.


[En español]

These are the steps for retrieving data from a PostGIS database using RStudio under Xubuntu 14.04 or under Debian jessie:

  1. Libraries libgeos, libgeos-c1, libgeos-dev y libgeos++-dev must be installed; both Xubuntu and jessie had the first two of them installed, but I had to add the last ones from Synaptics, as it is explained in this link at AskUbuntu.
  2. In RStudio, you have to install and then load RPostgreSQL, rgeos y sp packages.
  3. After that, you have to create the connection to the database:

    drv <- dbDriver(“PostgreSQL”)

    con<- dbConnect(drv,dbname=’yourDB’,host=’localhost’,port=5432,user=’yourUser’,password=’yourPw’)

  4. In order to get  information from tables which store geospatial data, you have to use the usual PostGIS functions for handling geometries:

data <- dbGetQuery(con,”SELECT nongeocolumn, ST_AsText(geocolumn) FROM yourtable”)

Once the work with the DB is finished, connection and driver must be closed:

dbDisconnect(con)
dbUnloadDriver(drv)

Steps 2-4 are explained in this link at R-bloggers. From the content in this post I have uploaded to Github a little R script (accessDB.R) that installs and load the required packages, and then connects to a database.