<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>Robotica/PlayerStageRoMAA/PlayerDriverRoMAA1/ClientEx</title><revhistory><revision><revnumber>4</revnumber><date>2011-04-20 22:04:57</date><authorinitials>GonzaloPerezPaina</authorinitials><revremark>organización de la wiki</revremark></revision><revision><revnumber>3</revnumber><date>2010-06-05 22:51:38</date><authorinitials>GonzaloPerezPaina</authorinitials></revision><revision><revnumber>2</revnumber><date>2010-06-05 22:51:24</date><authorinitials>GonzaloPerezPaina</authorinitials></revision></revhistory></articleinfo><section><title>Ejemplo de programa cliente utilizando Player</title><para>Independientemente si se quiere manejar el robot real o simulado se tienen que utilizar las <ulink url="http://playerstage.sourceforge.net/doc/Player-2.1.0/player/group__clientlibs.html">librerias clientes</ulink> de <emphasis>Player</emphasis>. Actualmente la única interface que soporta el driver de RoMAA (para el robot real) es <emphasis>position2d</emphasis>. En la simulación hay modelos que incluyen un laser. Del lado del cliente estas interfaces se manejan mediantes <ulink url="http://playerstage.sourceforge.net/doc/Player-2.1.0/player/group__player__clientlib__cplusplus__proxies.html">Proxies</ulink> que para <emphasis>position2d</emphasis> es <ulink url="http://playerstage.sourceforge.net/doc/Player-2.1.0/player/classPlayerCc_1_1Position2dProxy.html">Position2dProxy</ulink> (otro ejemplo es <emphasis>laser</emphasis> <ulink url="http://playerstage.sourceforge.net/doc/Player-2.1.0/player/classPlayerCc_1_1LaserProxy.html">LaserProxy</ulink>). </para><para>El siguiente código muestra el manejo del proxy position2d. </para><screen><![CDATA[  1 #include <iostream>
  2 #include <libplayerc++/playerc++.h>
  3 
  4 int
  5 main( int argc, char *argv[] )
  6 {
  7  // Connect to the local player process on port 6665
  8  PlayerCc::PlayerClient romaa_robot( "localhost", 6665 );
  9 
 10  // Create a position2d proxy
 11  PlayerCc::Position2dProxy romaa_pos2d( &romaa_robot, 0 );
 12 
 13  romaa_pos2d.ResetOdometry();
 14  romaa_pos2d.SetSpeed( 10, 0 );
 15 
 16  for( int i = 0; i < 200; i++ )
 17  {
 18   romaa_robot.Read();
 19   
 ";
 21   std::cout << "px: " << romaa_pos2d.GetXPos() << " - ";
 22   std::cout << "py: " << romaa_pos2d.GetYPos() << " - ";
 23   std::cout << "pa: " << romaa_pos2d.GetYaw() << std::endl;
 24   
 25   usleep(50000);
 26  }
 27  
 28  romaa_pos2d.SetSpeed( 0, 0 );
 29  return 0;
 30 }]]></screen><para><emphasis role="strong">Compilar</emphasis>  </para><para><code>$ g++ -o example </code>pkg-config --cflags playerc++<code> example.cpp </code>pkg-config --libs playerc++ </para></section></article>