Driver de Player para robot RoMAA

Objetivos

Desarrollar el driver para el servidor Player del robot !RoMAA de modo de poder controlarlo de forma remota, a través de un programa cliente (TCP) enviando comandos de velocidad a los motores y obteniendo los valores de la odometría, esto se logra implementando en el driver la interfaz de player position2d que es la que se utiliza para el control de robots móviles.

Player driver

Player incluye varias interfaces predefinidas para los algoritmos y dispositivos en robótica. El objetivo de un driver es crear el enlace entre los dispositivos/algoritmos y la interfaz predefinida que mejor lo representa. Existen dos tipos de drivers en Player el driver normal de Player y el driver plugin , este último tiene la ventaja de no necesitar recompilar Player para compilar el driver. En el caso de driver plugin este se enlaza con el servidor en tiempo de ejecución.

RoMAA Plugin Player driver

Estructura del plug-in driver: Declaración de la clase driver plugin, implementación de los métodos virtuales y funciones para registrar el driver

Procesamiento de mensajes: Implementación de los métodos para procesamiento de mensajes del cliente y publicación de los datos para la interfaz position2d

El código fuente para compilar el driver y archivo de configuración del RoMAA se encuentra en el SVN en ciiiRepositorios/romaa_player_driver/trunk/

el driver versión 1.00 corresponde a la revision 5 .

Ejecutar Player con el driver

Para controlar el robot RoMAA se debe ejecutar el servidor Player en la PC de abordo indicando el archivo de configuración que instancia el driver del RoMAA.

player romaa.cfg

Ver programa cliente ejemplo.

Compilar el driver

Los fuentes del driver se construyen mediante la herramienta cmake , haciendo

ccmake .

make

Si al ejecutar Player instanciando el driver de RoMAA se obtiene el siguiente error :

ciii@ciii-p227:~/romaa_player_driver$ player romaa.cfg Registering driverPlayer v.2.1.2* Part of the Player/Stage/Gazebo Project [http://playerstage.sourceforge.net].* Copyright (C) 2000 - 2006 Brian Gerkey, Richard Vaughan, Andrew Howard,* Nate Koenig, and contributors. Released under the GNU General Public License.* Player comes with ABSOLUTELY NO WARRANTY. This is free software, and you* are welcome to redistribute it under certain conditions; see COPYING* for details.error : failed to load plugin libromaadriver, tried paths:error : /home/lmartini/romaa_player_driver/./libromaadrivererror : /usr/local/lib/libromaadrivererror : libromaadrivererror : failed to load plugin: libromaadrivererror : failed to parse config file romaa.cfg driver blocks

se corrige haciendo que el driver del !RoMAA se enlace con las librerias libplayercore y libserial, agregando en la línea EXTERNAL_LIBS de cmake playercore;serial

Una forma de comprobar que la librería se enlazó correctamente es haciendo

ldd -r libromaadriver.so

y ver que no aparezcan simbolos no definidos, por ejemplo

undefined symbol: _ZN6Driver11StartThreadEv (./libromaadriver.so)

Links

Programación de Drivers de Player

Player/Stage Drivers

Writing a Player Plugin

Developing a plug-in driver for Player

Writing Player/Stage Drivers - HowTo

Player/Stage/Gazebo forum