## page was renamed from Robotica/PlayerDriverRoMAA100 #acl BecariosGrupo:read,write,revert All:read #acl Default All:read = 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 === * [[Robotica/PlayerStageRoMAA/PlayerDriverRoMAA1/DriverStruct | 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 * [[Robotica/PlayerStageRoMAA/PlayerDriverRoMAA1/Messages | 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 [[Robotica/PlayerStageRoMAA/PlayerDriverRoMAA1/ClientEx | 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 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''' * [[http://psurobotics.org/wiki/index.php?title=Player/Stage_Drivers | Player/Stage Drivers]] * [[http://psurobotics.org/wiki/index.php?title=Writing_a_Player_Plugin | Writing a Player Plugin]] * [[http://www.control.aau.dk/~tb/wiki/index.php/Developing_a_plug-in_driver_for_Player | Developing a plug-in driver for Player]] * [[http://image.diku.dk/mediawiki/images/e/e2/Driverhowtodoc_HandedIn.pdf | Writing Player/Stage Drivers - HowTo]] * [[http://www.nabble.com/Player-Stage-Gazebo-f4302.html | Player/Stage/Gazebo forum]]