12.06.2013 Views

"Applicazione di un laser range scanner a un robot mobile", 2010

"Applicazione di un laser range scanner a un robot mobile", 2010

"Applicazione di un laser range scanner a un robot mobile", 2010

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

“Start wandering”: il <strong>robot</strong> esegue <strong>un</strong>a modalità <strong>di</strong> navigazione analoga a quella del<br />

programma “Caramelle” <strong>di</strong> cui si è parlato nel primo capitolo. Siccome questa modalità si<br />

può invocare sia all’inizio, sia durante i movimenti del <strong>robot</strong>, nella relativa CGI<br />

(“wander.cgi”) c’è prima <strong>un</strong> tentativo <strong>di</strong> invocazione del programma client “wander”, che<br />

invia il comando “client.requestOnce("wander");” al server (se è già attivo); in caso<br />

contrario viene invocata <strong>un</strong>a versione del programma “arnlServer” già pre<strong>di</strong>sposta per<br />

quella modalità (è stata infatti aggi<strong>un</strong>ta la riga <strong>di</strong> co<strong>di</strong>ce “modeWander.activate();” in<br />

fondo al programma). Dopo <strong>un</strong> certo numero <strong>di</strong> secon<strong>di</strong> (scan<strong>di</strong>ti con il comando “sleep”)<br />

la CGI fa rientrare il <strong>robot</strong> nella stazione <strong>di</strong> ricarica. Questo me<strong>di</strong>ante l’invocazione del<br />

client che invia l’input al server <strong>di</strong> raggi<strong>un</strong>gere il goal “0” e la successiva invocazione del<br />

programma che fa compiere al <strong>robot</strong> <strong>un</strong>a rotazione <strong>di</strong> 180 gra<strong>di</strong> e che fa entrare il <strong>robot</strong><br />

nella stazione in retromarcia. Nell’appen<strong>di</strong>ce 7 è riportata la CGI relativa a questa modalità.<br />

“Drive the <strong>robot</strong> using command buttons”: il <strong>robot</strong> può essere pilotato me<strong>di</strong>ante i pulsanti<br />

del riquadro <strong>di</strong> sfondo rosa. Viene invocato <strong>un</strong> programma server già pre<strong>di</strong>sposto alla<br />

modalità “drive” (grazie alla riga <strong>di</strong> co<strong>di</strong>ce aggi<strong>un</strong>ta “modeRatioDrive.activate();”).<br />

Dopo<strong>di</strong>chè è possibile schiacciare i pulsanti <strong>di</strong> guida: avanti, in<strong>di</strong>etro, destra, sinistra. Viene<br />

quin<strong>di</strong> invocato il programma client relativo, molto simile nella struttura agli altri, tranne<br />

che per le righe <strong>di</strong> co<strong>di</strong>ce <strong>di</strong> base che permettono la creazione <strong>di</strong> <strong>un</strong> pacchetto da inviare<br />

poi al server. Dentro <strong>di</strong> esso dovranno esserci le velocità desiderate da imprimere al<br />

movimento delle ruote. Nel caso del client per mandare avanti il <strong>robot</strong>, il co<strong>di</strong>ce necessario<br />

è il seguente:<br />

ArNetPacket packet;<br />

packet.doubleToBuf(100);<br />

packet.doubleToBuf(0);<br />

packet.doubleToBuf(50); // use half of the <strong>robot</strong>'s maximum.<br />

36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!