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.