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
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 driver Player 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/./libromaadriver error : /usr/local/lib/libromaadriver error : libromaadriver error : failed to load plugin: libromaadriver error : 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